ホームページ > 運用・保守 > Linuxの運用と保守 > Linux 操作でのリダイレクトの問題を解決する方法

Linux 操作でのリダイレクトの問題を解決する方法

PHPz
リリース: 2023-05-17 14:37:14
転載
1799 人が閲覧しました
    #1. 概要

    (1) リダイレクトコマンド一覧

    Command説明##command > filecommand < filecommand >> file#n > fileファイル記述子 n を持つファイルを filen >> file## にリダイレクトします#ファイル記述子 n を持つファイルを file出力ファイル m と n#n <& m入力ファイル m と n をマージします<< tag 開始間のコンテンツを取得しますtag tag と終了タグ tag を入力として指定します(2) ファイル説明記号
    出力をファイルにリダイレクトします
    入力をファイルにリダイレクトします
    出力を追加にリダイレクトしますメソッドはファイルにリダイレクトします
    n >& m
    ## をマージします。

    0:通常は標準入力(STDIN)

    • 1: 標準出力(STDOUT)

    • 2: 標準エラー出力(STDERR)

    • 2. 出力リダイレクション

    • (1) コマンド解析

    command > file
    #执行command然后将输出的内容存入file。
    ログイン後にコピー

    注:

    ファイル内の内容は新しい内容に置き換えられます。すべてを置き換えるのではなく、ファイルの末尾に追加する場合は、> ;> 演算子を使用します。

    (2) 分析例

    [root@localhost ~]# w
     20:41:36 up 55 days,  5:17,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    223.166.20.53    20:24    0.00s  0.05s  0.00s w
    [root@localshost ~]# w > users #w命令执行后的结果输出到users文件中
    [root@localshost ~]# ll
    -rw-r--r-- 1 root root  204 Jan  3 20:41 users
    [root@localshost ~]# cat users #查看users文件内容,正是w命令执行后的输出结果
     20:41:58 up 55 days,  5:17,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    223.166.20.53    20:24    6.00s  0.05s  0.00s w
    [root@localshost ~]# who
    root     pts/0        2021-01-03 20:24 (223.166.20.53)
    [root@localshost ~]# who > users #将who命令执行结果输出重定向到users文件
    [root@localshost ~]# cat users #发现users文件中原先w命令的输出内容被who命令覆盖了
    root     pts/0        2021-01-03 20:24 (223.166.20.53)
    [root@localshost ~]# echo "Hello world" >> users #使用>>操作符则会追加在后面输出
    [root@localshost ~]# cat users
    root     pts/0        2021-01-03 20:24 (223.166.20.53)
    Hello world
    [root@localshost ~]#
    ログイン後にコピー

    注:

    上記の多くのコマンド ラインには # が 2 つあります。例:

    最初の # は、

    現在のユーザーが root ユーザーであることを意味します (別のユーザーの場合、ここに $ 記号が表示されます)

    ;
    • 上の 2 番目の # は、 コメント

      の意味を意味します。
    • 3. 入力リダイレクト

      1. コマンド解析
    Unix コマンドはファイルから入力を取得することもでき、構文は次のとおりです:

    command < file
    #获取file文件中的内容作为输入内容,并用于commmand执行
    ログイン後にコピー

    注:

    出力リダイレクトは大なり記号 (>) であり、入力リダイレクトは小なり記号 (<) です。

    2. 分析例

    [root@localhost ~]# wc -l users
    2 users
    #wc指令可以计算文件的Byte数、字数、或是行/列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
    [root@localhost ~]# wc -l < users 
    2
    #将输入重定向到 users 文件,上面命令作用就是将users文件内容作为输入重定向计算行数了
    ログイン後にコピー

    注:

    最初の例はファイル名を出力します;

    2 番目の例 いいえなぜなら、標準入力から読み取ることしか知らないからです。

    command < infile > outfile
    #同时替换输入和输出,执行command,从文件infile读取内容,然后将输出写入到outfile中。
    #理解成,从标准输入中获取内容(输入重定向到infile)作为标准输出(输出重定向到outfile)。
    ログイン後にコピー

    4. リダイレクトについての深い理解

    標準入力、標準出力、および標準エラー出力については、上記のファイル記述子で簡単に紹介しましたが、以下で詳しく説明します。

    1. はじめに

    通常、各 Unix/Linux コマンドを実行すると 3 つのファイルが開きます:

    1) 標準入力ファイル (stdin) :

    stdin のファイル記述子は 0 であり、Unix プログラムはデフォルトで stdin からデータを読み取ります。

    2) 標準出力ファイル (stdout):

    stdout のファイル記述子は 1 で、Unix プログラムはデフォルトでデータを stdout に出力します。

    3) 標準エラー ファイル (stderr):

    stderr のファイル記述子は 2 で、Unix プログラムはエラー情報を stderr ストリームに書き込みます。

    デフォルトでは、command > file は標準出力をファイルにリダイレクトし、コマンド < file は標準入力をファイルにリダイレクトします。

    2. コマンドの詳細説明

    command 2>file
    #stderr 重定向到 file
    command 2>>file
    #stderr 追加到 file 文件末尾
    
    command > file 2>&1
    command >> file 2>&1
    #stdout 和 stderr 合并后重定向到 file
    
    command < file1 >file2
    #对 stdin 和 stdout 都重定向
    #command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2
    ログイン後にコピー
    5. Here Document

    Here Document はシェルの特別なリダイレクト メソッドであり、入力を対話型シェルにリダイレクトするために使用されます。スクリプトまたはプログラム。

    1. 文法

    基本的な形式は次のとおりです:

    command << delimiter
        document
    delimiter
    #作用是将两个 delimiter 之间的内容(document) 作为输入传递给 command。
    ログイン後にコピー

    注:

    の最後の区切り文字は次のとおりです。大文字で記述する必要があります。その前に文字を入れることはできません。また、スペースやタブ インデントを含む文字を後ろに入れることもできません。

    開始区切り文字の前後のスペースは無視されます。

    2. 分析例

    EOF は END Of File の略で、カスタム ターミネータを表します。 EOF はカスタマイズ可能なため、固定値はなく任意にエイリアスを設定することができ、例えば Linux では Ctrl-D を押下することで EOF として代用することができます。

    EOF は通常、cat と連携して複数行のテキストを出力します。

    例は次のとおりです。

    [root@localhost ~]# wc -l << EOF
    > a
    > b
    > c
    > d
    > e
    > EOF
    5 #输入内容为5行
    [root@localhost ~]# cat << EOF
    > a
    > b
    > c
    > d
    > e
    > f
    > EOF
    a
    b
    c
    d
    e
    f
    ログイン後にコピー

    EOF は次のようにカスタマイズすることもできます。

    [root@iZ2ze95cxr3kx9il409khtZ ~]# cat << CCC
    > a
    > b
    > c
    > d
    > CCC
    a
    b
    c
    d
    ログイン後にコピー
    スクリプト入力を実行する場合、次を使用できます。フォーム:
    #拥有大量输入的时候可以用下面的形式,将标准输入的内容重定向到(输入到)test.sh文件中。
    [root@localhost ~]# cat << EOF >test.sh 
    > 123123123
    > 3452354345
    > asdfasdfs
    > EOF
    [root@localhost ~]# cat test.sh 
    123123123
    3452354345
    asdfasdfs
    [root@localhost ~]#
    ログイン後にコピー

    以上がLinux 操作でのリダイレクトの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート