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

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

PHPz
PHPz転載
2023-05-17 14:37:141805ブラウズ
    #1. 概要

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

    Command説明##command > filecommand 0fe82f27b5f2a4bf8f92cf7e9bd42f3f> file#n > fileファイル記述子 n を持つファイルを filen >> file## にリダイレクトします#ファイル記述子 n を持つファイルを file出力ファイル m と n#n 9e8bbe0af76feb5405dcb0bb6628dc2e 演算子を使用します。

    (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执行

    注:

    出力リダイレクトは大なり記号 (>) であり、入力リダイレクトは小なり記号 (df9a4dda93a18825e783d187dff275f2 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 ~]#

    出力をファイルにリダイレクトします
    出力を追加にリダイレクトしますメソッドはファイルにリダイレクトします
    n >& m
    ## をマージします。

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

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。