我收到错误:
touch: cannot touch `/opt/tsrm/compliance/cme/log/20121207.log`: No such file or directory
在触摸命令上:touch $LOGFILE
我还检查了链接:touch:无法触摸`foo':没有这样的文件或目录,但我不明白答案。
注意:我也得到了mkdir: cannot create directory
;我通过添加-p
选项解决了这个问题。
这可能与我正在使用的 Linux 版本有关吗?
答案1
您没有保存该文件的路径:
/opt/tsrm/compliance/cme/log/
这就是错误的来源。
答案2
听起来你拼错了路径。例如,该文件夹/stuff/more_stuff
不存在。这给了我结果:
user@linux:~ $ touch /stuff/more_stuff/stuff.file
touch: cannot touch `/stuff/more_stuff/stuff.file': No such file or directory
两者都/stuff
需要/stuff/more_stuff
存在才能touch
发挥作用。
答案3
尽管这个回复听起来很愚蠢,但除了缺少目录之外,可能还有围绕值的字符串分隔符$LOGFILE
在职的:
LOGFILE=/stuff/more_stuff/stuff.file
touch $LOGFILE
不工作:
LOGFILE="/stuff/more_stuff/stuff.file"
touch $LOGFILE
一些 Linux 发行版有上述怪癖,所以要小心;)
答案4
是的,可能有可能会出现拼写错误或目录不存在。
LOGFILE="/opt/tsrm/compliance/cme/log/20121207.log"
LOG_DIR=`dirname $LOGFILE`
[ ! -d $LOG_DIR ] && mkdir -p $LOG_DIR
touch $LOGFILE