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
不,据我所知并非如此。但您始终可以在彼此之后使用mkdir -p
and :touch
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
。