括弧を使用した入力ストリームの規則

括弧を使用した入力ストリームの規則

次のコマンドの入力データストリーム(複数のソースから)を生成するために括弧を使用します。たとえば、

(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状況に応じて気分が良くなったら使用してください。

おすすめ記事