![PV へのリダイレクトは実際にどのように機能しますか?](https://rvso.com/image/192225/PV%20%E3%81%B8%E3%81%AE%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%AF%E5%AE%9F%E9%9A%9B%E3%81%AB%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
リダイレクトがどのように機能しているのか理解しようとしていますこのコマンド
# 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 番目のコマンドは、最初のパイプの後半部分を変更します。
(pv -n > backup.tgz) 2>&1
再び に書き込みますbackup.tgz
が、サブシェルの(括弧で囲まれた)標準エラーを標準出力にリダイレクトし、それdialog
独自の進行状況表示を生成します。
コマンドで指定した順序でリダイレクトが設定されている場合は、ここで括弧が必要です。 は、の標準出力と標準エラーのpv -n > backup.tgz 2>&1
両方を にリダイレクトしますが、これは望ましくありません。 最初に標準エラーをリダイレクトすることによっても、目的の効果が得られます。pv
backup.tgz
pv -n 2>&1 > backup.tgz