私はサンプルのbashシェルスクリプトを読んでいます:
#!/bin/bash
# This script makes a backup of my home directory.
cd /home
# This creates the archive
tar cf /var/tmp/home_franky.tar franky > /dev/null 2>&1
# First remove the old bzip2 file. Redirect errors because this generates some if the archive
# does not exist. Then create a new compressed file.
rm /var/tmp/home_franky.tar.bz2 2> /dev/null
bzip2 /var/tmp/home_franky.tar
# Copy the file to another host - we have ssh keys for making this work without intervention.
scp /var/tmp/home_franky.tar.bz2 bordeaux:/opt/backup/franky > /dev/null 2>&1
# Create a timestamp in a logfile.
date >> /home/franky/log/home_backup.log
echo backup succeeded >> /home/franky/log/home_backup.log
ここで「/ dev / null 2>&1」の使用を理解しようとしています。最初は、このスクリプトは/ dev / nullを使用して、スクリプトをクラッシュさせずにエラーを優雅に無視するように考えました(プログラミング言語で例外処理をキャッチするようなものです)。tarを使用してディレクトリをtarファイルに圧縮する方法がわからないため、あらゆるタイプのエラーが発生する可能性があります。
tar
がないため、$ PATHにないため、バージョンが変更され、ディスクがI / Oエラーを引き起こしたために異なる構文が必要tar
になったため、デバイスにスペースが残っていないため、クラッシュしました(わかりません)tar
。もっと見つけられると思います。
/dev/null
もクラッシュは防止されませんが、stdoutおよびstderrの出力ストリームはクリーンアップされます。tar
さまざまな方法でエラーを引き起こす可能性があります。書き込みアクセス権がないか、ファイルが既に存在する可能性があります。