是否有任何单个命令来创建缺少目录结构的文件?
假设我的shell脚本中有一个变量LOG_STORAGE_PATH=/var/log/app-log/access.log
,我不知道是否存在app-log
目录和access.log
文件。
是否有一个命令,如mkdir -p </some/random/path>
创建所有中间目录(如果不存在),以创建一个缺少目录的文件。
这可以在
的帮助下完成LOG_STORAGE_PATH=/var/log/app-log/
ACCESS_LOG_FILE=access.log
ACCESS_LOG_FILE_PATH=${LOG_STORAGE_PATH}/${ACCESS_LOG_FILE}
if [ ! -d ${LOG_STORAGE_PATH} ]
then
mkdir -p ${LOG_STORAGE_PATH}
fi
if [ ! -f ${ACCESS_LOG_FILE_PATH} ]
then
touch ${ACCESS_LOG_FILE_PATH}
fi
我正在寻找具有与touch
相同功能的mkdir -p
命令,但它不存在。
如果我们有一个touch -p /var/log/app-log/access.log
命令可以创建一个文件以及缺少的目录,或者如果存在目录然后只是创建文件,或者即使目录和文件都存在然后更新,这将非常有用文件的access time
。
只是想一想,也许我们不必在脚本中使用if [ ! -f <some file> ]
或if [ ! -d <some dir path> ]
,我们可以直接使用touch -p ${ACCESS_LOG_FILE_PATH}
答案 0 :(得分:1)
在unix中使用单个命令无法执行此操作。要做到这一点,你需要两个命令(mkdir和touch)。