ファイルの場合、mkdir -p

ファイルの場合、mkdir -p

mkdir -pディレクトリが作成され、必要に応じて親ディレクトリも作成されます。

必要に応じてファイルと親ディレクトリを生成するファイルに対して同様のコマンドがありますか?

答え1

installこのユーティリティは、ソースファイルが提供されるとこれを行います/dev/null。パラメータは、-Dすべての親ディレクトリを作成することを意味します。

anthony@Zia:~$ install -D /dev/null /tmp/a/b/c
anthony@Zia:~$ ls -l /tmp/a/b/c 
-rwxr-xr-x 1 anthony anthony 0 Jan 30 10:31 /tmp/a/b/c

これがバグかどうかはわかりません。マンページには、デバイスファイルとどのように機能するかについての言及はありません。空のファイル(たとえば、新しく作成されたファイルを使用mktemp)をソースとして提供することもできます。

答え2

いいえ、私の知る限りではありません。しかし、いつでもandを使用できますmkdir -ptouch

f="/a/b/c.txt"
mkdir -p -- "${f%/*}" && touch -- "$f"

答え3

このような状況が頻繁に発生するため、ファイル.bashrcに関数を作成しました。こんな感じ

function create() {
    arg=$1
    num_of_dirs=$(grep -o "/" <<< $arg | wc -l)
    make_dirs=$(echo $arg | cut -d / -f1-$num_of_dirs)
    mkdir -p $make_dirs && touch $arg
}

だから、存在しないディレクトリのパスにファイルを作成したいときは、私はこう言います。

create what/is/it  # will create dirs 'what' and 'is', with file 'it' inside 'is'

答え4

以下を次の項目に追加します~/.bashrc

function mktouch() {
        mkdir -p -- "$(dirname -- "$1")" && touch -- "$1"
} 

その後、リロードしてbash以前と同じように使用してくださいmktouch your/path/file.txt

関連情報