たとえば、複数のディレクトリを同時に作成する方法を知っています。
mkdir -p tree/{dir1,dir2,dir3}
しかし、ディレクトリを作成し、同時にそこにファイルを置くにはどうすればよいのでしょうか? 最終的には、これを同時に複数で実行したいと考えています。
答え1
これを行うための単一のコマンドは存在しませんが、独自のコマンドを作成できます。
mkpath(){ mkdir -p ${1%/*} && mkfile 0 $1; }
これは、作成するファイルのパスを指定する単一の引数で呼び出すことができます。途中で作成する必要のあるディレクトリが作成され、その時点で指定されたファイル名で空のファイルが作成されます。例:
mkpath dir1/dir2/dir3/file.txt
注記: これは、さまざまな入力や状況に対応できるように徹底的にテストされていないサンプル関数です。堅牢性を確保するには、適切なエラー トラッピングが必要になる場合があります。
mkdir
は、その構成関数、およびの機能を継承しているため、現在のmkfile
2 つの重要な特性が引き継がれています。mkpath
- 既存のディレクトリを含むパスを指定することは安全であるように思われ、これらのディレクトリとその内容はない上書きされる;
- 逆に、指定された場所にファイルが存在する場合は、意思空のファイルで上書きされ、古いファイルの内容を回復できなくなります。