触摸:无法触摸文件:没有那个文件或目录

Swa*_*ika 30 utilities files touch

我收到错误:

touch: cannot touch `/opt/tsrm/compliance/cme/log/20121207.log`: No such file or directory
Run Code Online (Sandbox Code Playgroud)

在触摸命令上: touch $LOGFILE

我还检查了链接:touch: cannot touch `foo': No such file or directory,但我不明白答案。

注意:我也得到了mkdir: cannot create directory;我通过添加-p选项解决了这个问题。

这可能与我正在使用的 Linux 版本有关吗?

dai*_*isy 24

您没有保存文件的路径:

/opt/tsrm/compliance/cme/log/

这就是错误的来源。

  • 我称之为*目录*而不是路径 (3认同)

Kot*_*tte 7

听起来你拼错了路径。例如,此文件夹/stuff/more_stuff不存在。这给了我结果:

user@linux:~ $ touch /stuff/more_stuff/stuff.file
touch: cannot touch `/stuff/more_stuff/stuff.file': No such file or directory
Run Code Online (Sandbox Code Playgroud)

双方/stuff/stuff/more_stuff需要以存在touch工作。

  • 您是否检查过“resolv.conf”是否是指向不存在的文件的符号链接? (2认同)

Rah*_*til 6

是的,可能有可能会出现拼写错误或目录不存在。

LOGFILE="/opt/tsrm/compliance/cme/log/20121207.log"
LOG_DIR=`dirname $LOGFILE`
[ ! -d $LOG_DIR ] && mkdir -p $LOG_DIR
touch $LOGFILE
Run Code Online (Sandbox Code Playgroud)


小智 5

尽管此回复听起来很愚蠢,但除了缺少目录之外,可能有围绕中的值的字符串分隔符 $LOGFILE

在职的:

LOGFILE=/stuff/more_stuff/stuff.file
touch $LOGFILE
Run Code Online (Sandbox Code Playgroud)

不工作:

LOGFILE="/stuff/more_stuff/stuff.file"
touch $LOGFILE
Run Code Online (Sandbox Code Playgroud)

一些 Linux 发行版有上述怪癖,所以要小心 ;)