【发布时间】:2016-05-18 20:58:49
【问题描述】:
是否有任何单个命令可以创建缺少目录结构的文件?
假设我的 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
我正在寻找具有与mkdir -p 相同功能的touch 命令,但它不存在。
如果我们有一个touch -p /var/log/app-log/access.log 命令可以创建一个文件以及丢失的目录,或者如果目录存在然后只创建文件或者即使目录和文件都存在然后只需更新@ 987654330@文件。
想一想,也许我们不必在脚本中使用if [ ! -f <some file> ] 或if [ ! -d <some dir path> ],我们可以直接使用touch -p ${ACCESS_LOG_FILE_PATH}
【问题讨论】:
-
您不需要使用
-d和-f进行测试。只需使用mkdir -p和touch。