リダイレクトがどのように機能するかを知りたいです。このコマンド
# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
英語の翻訳は何ですか?
のすべてのデータはtar
入力にリダイレクトされ、次にpv
?pv
にリダイレクトされます。backup.tgz
では、なぜ周囲にかっこが必要なのでしょうかpv
。
それでは、このリダイレクトのポイントは何ですか?
tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
それ以降はどういうpv
意味ですか2>&1
?
答え1
バラよりシェルの制御およびリダイレクト演算子は何ですか?そして注文リダイレクト背景。
tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
tar -czf - ./Downloads/
にリダイレクトされた標準出力を使用して実行するようにシェルに指示します(pv -p --timer --rate --bytes > backup.tgz)
。
(pv -p --timer --rate --bytes > backup.tgz)
pv -p --timer --rate --bytes
パイプに接続された標準入力として実行し、標準tar
出力をbackup.tgz
。圧縮されたアーカイブを作成して標準出力()に出力するように指示されたので、全体tar
的な効果f -
は圧縮されたアーカイブを構築してパイプし、それを記録することです。データフローに従って更新される進行状況バーを表示します。pv
pv
backup.tgz
pv
括弧は必要ありません。
2番目のコマンドは、1番目のパイプラインの後半を変更します。
(pv -n > backup.tgz) 2>&1
書き換えますbackup.tgz
が、サブシェルの標準エラー(括弧で示されている)を標準出力にリダイレクトし、以下を提供します。それdialog
独自の進行状況表示を生成します。
コマンドで指定された順序でリダイレクトを設定する場合は、ここに括弧が必要です。 stdoutとstderrはにリダイレクトされ、pv -n > backup.tgz 2>&1
これは望ましくありません。標準エラーを最初にリダイレクトすると、目的の効果が得られます。pv
backup.tgz
pv -n 2>&1 > backup.tgz