GNU/Linux >> Linux の 問題 >  >> Linux

コマンドラインユーティリティのファイル名としてstdoutを渡しますか?

解決策 1:プロセス置換の使用

これを行う最も便利な方法は、プロセス置換を使用することです。 bash では、構文は次のようになります:

foo -o >(other_command)

(これはバシズムであることに注意してください。他のシェルにも同様の解決策がありますが、結論としては移植性がありません。)

解決策 2:名前付きパイプを明示的に使用する

上記は、次のように明示的/手動で行うことができます:

<オール>
  • mkfifo を使用して名前付きパイプを作成します コマンド。

    mkfifo my_buf
    
  • そのファイルを入力として他のコマンドを起動します

    other_command < my_buf
    
  • foo を実行 出力を my_buf に書き込みます

    foo -o my_buf
    
  • 解決策 3:/dev/stdout を使用する

    デバイスファイル /dev/stdout を使用することもできます 以下のように

    foo -o /dev/stdout | other_command
    

    UNIX の魔法を使って、名前付きパイプを作成できます :)

    <オール>
  • パイプを作成する

    $ mknod -p mypipe
    
  • パイプから読み取るプロセスを開始します

    $ second-process < mypipe
    
  • パイプに書き込むプロセスを開始します

    $ foo -o mypipe
    

  • stackoverflow を満足させるために、十分な長さの文を書かせてください。私の提案する解決策は、必要な 30 文字以上の長さではなく、18 文字しかないからです。

    foo -o /dev/stdout
    

    名前付きパイプは正常に機能しますが、後で削除する必要がある永続的な名前付きパイプを使用しないという追加の利点がある bash プロセス置換を介して、より適切で直接的な構文を利用できます (プロセス置換は、舞台裏で一時的な名前付きパイプを使用します):

    foo -o >(other command)

    また、出力をコマンドにパイプし、出力をファイルに保存する場合は、次のようにします。

    foo -o >(tee output.txt) | other command


    Linux
    1. Titan –Linux用のコマンドラインパスワードマネージャー

    2. ppl –Linux用のコマンドラインアドレスブック

    3. コマンドにパイピングするためにSplittoStdoutのようにファイルを分割する方法は?

    1. コマンドの標準をT秒間破棄しますか?

    2. ファイルの内容をコマンドラインパラメータとして渡す方法は?

    3. Linux test -a コマンド テストとは何ですか?

    1. Linuxコマンドラインに関する8つのヒント

    2. 初心者向けのLinuxwcコマンドの説明(6例)

    3. テキストファイルのすべての行に対してコマンドを実行する