奇怪的目录名称,显示有反斜杠

奇怪的目录名称,显示有反斜杠

我已将一个文件目录复制并粘贴到另一个目录中。

现在的结果是这样的 development\ /

我不知道那个是什么意思? Linux 现在甚至不能将其识别为目录。

该目录的所有者也是错误的。但当我尝试这样做时 chown -R zugul /development,结果是:chown: cannot access `/development': No such file or directory

当我粘贴复制的目录时,看起来好像出了问题。我该如何解决这个问题?

答案1

您的目录名称中似乎有一个空格。

您可以使用引号:

chown -R zugul "/development /"

或者您可以使用转义字符:

chown -R zugul /development\ /

答案2

您的目录名称以空格结尾(可能是常规空格,但也可能是其他空白字符,如不可分割的空格)。根据您传递给 的选项ls\要么位于文件名中,要么表示下一个字符将被逐字解释为文件名的一部分。

您需要重命名该目录:

mv /development\  /development

(注意两个连续的空格:第一个是文件名的一部分,并由前面的反斜杠引用,第二个空格分隔两个参数)。或者

mv '/development ' /development

如果已经存在名为 的目录/development,请将文件从该/development ​目录中移出,/development然后删除名称错误的目录 ( rmdir '/development ')。注意冲突(两者都存在文件)。

一旦解决了命名问题,就可以处理其他事情,例如所有权。

答案3

当您尝试时,文件名不正确chown;尝试一下chown -R zugul development\\\ /

答案4

不要猜测字符是什么,而是使用引用特殊字符的内容。我喜欢这个方法:

ls --quoting-style=shell-escape

这显示了它的实际含义(使用$''处理 ANSII C 转义的 bash/ksh 样式字符串)。作为奖励,这应该为您提供一个预先引用的字符串,您可以直接传递该字符串chown或您需要在 shell 中执行的任何其他操作。例如,这是一个名称中带有换行符的文件,显示 ls 输出,然后使用and的前置引号ls输出:chgrprm

sauer@lightning:/tmp/test> ls -l
total 0
-rw-r--r-- 1 sauer users 0 Aug 14 17:04 a?file
sauer@lightning:/tmp/test> ls -l --quoting-style=shell-escape
total 0
-rw-r--r-- 1 sauer users 0 Aug 14 17:04 'a'$'\n''file'
sauer@lightning:/tmp/test> chgrp docker 'a'$'\n''file'
sauer@lightning:/tmp/test> ls -l --quoting-style=shell-escape
total 0
-rw-r--r-- 1 sauer docker 0 Aug 14 17:04 'a'$'\n''file'
sauer@lightning:/tmp/test> rm -v 'a'$'\n''file'
removed 'a'$'\n''file'

我建议将文件重命名为没有奇怪字符的名称。 :)

sauer@lightning:/tmp/test> ls
a??file
sauer@lightning:/tmp/test> ls --quoting-style=shell-escape
'a'$'\t\033''file'
sauer@lightning:/tmp/test> mv -v 'a'$'\t\033''file' regular_filename
renamed 'a'$'\t\033''file' -> 'regular_filename'

相关内容