是否有任何单个命令来创建具有缺少目录结构的文件

时间:2016-05-18 11:23:26

标签: shell unix

是否有任何单个命令来创建缺少目录结构的文件?

假设我的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}

1 个答案:

答案 0 :(得分:1)

在unix中使用单个命令无法执行此操作。要做到这一点,你需要两个命令(mkdir和touch)。