次のコマンドの入力データストリーム(複数のソースから)を生成するために括弧を使用します。たとえば、
(date; pwd; cat file1.txt) | less
これは便利でうまく機能します。しかし、これは許容可能/標準的なアプローチですか?入力ストリームを生成するこれらの方法の一般的な規則は何ですか?詳細は参考資料を見つけることができません。
答え1
まあ、「許容可能」とは一般的にレビュアーの目に見えるもので、コメントベースの質問は実際にはSEには適していませんが、代替案を検討し、誰もが選択できるようにすることができると思います。
これを機能させるには、何らかの方法でコマンドをグループ化する必要があり、(...)
それを使用する簡単なソリューションがあります。別の1行オプションは次のとおりです。
{ date; pwd; cat file1.txt; } | less
それ以外の場合は同じですが、関連するサブシェルはなく(パイプから取得する以外に違いはないかもしれません)、強制スペースと末尾にセミコロンがあり、構文がより醜いです。両方については、Bashマニュアルを参照してください。3.2.5.3 グループ化コマンド。
もちろん、外部スクリプトからコマンドグループを隠すことができますが、追加のファイルがあると不便です。コマンドを関数に入れることは良い中間点になることができます。これらの関数を作成してください
somestuff() {
date
pwd
cat file1.txt
}
その後、somestuff | less
状況に応じて気分が良くなったら使用してください。