機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

bash 複数のコマンドを1つの出力にまとめる / 1つの出力を複数のコマンドに渡す

プログラミング

コンソールが数千行の出力で汚くなるのは嫌ですよね。
僕は、出力がどれくらいあるのかわからない場合、とりあえずtail -3をするようにしています。もしくは、head -3,または,wcでもいいでしょう。

でも、headとtailを両方やりたい場合とかもありますよね。実際そういう場面って結構あります。headとtailとwcが同時にできたら良いですよね。

1つの出力を複数のコマンドに渡す

プログラミング
cat > hoge.md
hoge
fuga
foo
bar
# cat hoge.md | (head -3; tail -3) # => NG

cat hoge.md | tee >(head -1) >(tail -1)
hoge
fuga
foo
bar
hoge
bar  

# => 通常のcatでの出力に加えて、headとtailの出力がそれぞれ後付けされています。

cat hoge.md | tee >(head -1) >(tail -1) 2>&1 1>/dev/null
hoge
bar

# => catの出力を消して、headとtailの出力のみ出力する。

cat hoge.md | tee >(head -1 | wc) >(tail -1 >/dev/null ) 2>&1 1>/dev/null
1 1 5

# => head|wcの出力のみ出力される。

shell – How can I send stdout to multiple commands? – Unix & Linux Stack Exchange

複数のコマンドを1つの出力にまとめる

プログラミング

蛇足的になりますが、複数のコマンドをまとめてやるということもできるみたいです。

$ (echo zzz; echo aaa; echo kkk) | sort
aaa
kkk
zzz

bash – Pipe multiple commands into a single command – Stack Overflow

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

Bash awkで全てのカラムを出力するには
Bash inotifywaitでファイルが変更されたらコマンドを実行する
bashプロンプトのユーザー名/コンピュータ名を非表示にする
yourls APIを使って最速で短縮URL作るBash関数を作る
Bash上でPython経由でjsonパース
bash stderr(エラー出力)を色付け
bashで標準出力の特定の文字列を色付けする


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu