目的が次の1行のコマンドを実行することである場合:
- ディレクトリが
~/Desktop/foo
すでに存在する場合は、削除して再作成します。
- ディレクトリ
~/Desktop/foo
が存在しない場合は、作成します。
それからあなたは使うことができます:
rm -r ~/Desktop/foo; mkdir ~/Desktop/foo
;
は改行と同じですが、1行で複数のコマンドを実行できます(つまり、「単一のコマンド」として)。
- 削除するディレクトリに読み取り専用ファイルが含まれている可能性がある場合は
-f
、ユーザーに対話形式でプロンプトを表示せずにそれらを削除するためのフラグが必要です。これは問題ありませんが、特にに注意することをお勧めしrm -rf ...
ます。詳細man rm
については、を参照してください。
- コマンドを実行する前に
rm
コマンドを完了する必要がありmkdir
ます。これがの;
代わりに使用する理由です&
。(前のコマンド&
はバックグラウンドで非同期に実行されます。)
- コマンドが成功した
mkdir
ときに実行するコマンドが必要rm
です。これがの;
代わりに使用する理由です||
。
- コマンドが失敗した
mkdir
ときに実行するコマンドが必要ですrm
(通常、失敗は、ディレクトリがまだ存在していないことを意味します)。これがの;
代わりに使用する理由です&&
。
rm
コマンドは、ディレクトリがすでに存在しても失敗し、その場合には可能性があるmkdir
コマンドも失敗しますが、エラーメッセージが意味をなすだろうとのチェック中段追加する必要はおそらくありませんfoo
、それを作成しようとする前の存在は。
参照コマンドの3.2.3リストでバッシュリファレンスマニュアルの詳細と説明については;
、&
、||
、および&&
オペレーター。
以下のようmuruが提案(とRinzwindが詳述)、私はあなたがに見てお勧めしますrsync
、それはあなたのバックアップニーズを満たすかどうかを確認します。rsyncのドキュメントページと、このUbuntu rsyncガイドに役立つ追加のガイドがいくつかあります。
なぜmkdirにこのオプションがないのですか?
mkdir
ディレクトリを作成します(「mk」は「make」を表します)。また、ディレクトリとその中のすべてのファイルを再帰的に削除することは、データの損失につながる可能性のある方法で驚きを最小限に抑えるという原則に違反するため、好ましくありません。
rmdir
(ディレクトリ以外の)ファイルが含まれているディレクトリも削除しません。rm
には-r
オプションがあり、rm
ファイルの削除が予想されるため、これは理にかなっています(つまり、その目的であり、固有の危険は直感的であり、ユーザーは通常、rm
コマンドを実行するときに注意する必要があります)。
foo
それのすべてのコンテンツを削除するように置き換えますか?ディレクトリが存在するかどうかを無視mkdir
する-p
オプションがあります。