因此,不知何故,该命令ls
似乎向我显示了目录中的两个相同的文件。
$ ls -Blah /System/Library/LaunchDaemons
total 32
drwxr-xr-x 266 root wheel 8.8K Jun 18 10:41 .
drwxr-xr-x 79 root wheel 2.6K Mar 31 12:28 ..
[redacted]
-rw-r--r-- 1 root wheel 715B Jun 18 10:36 tftp.plist
-rw-r--r-- 1 root wheel 715B Jun 18 10:35 tftp.plist
我可以移动、重命名、编辑其中一个文件,但另一个文件似乎不存在。bash
选项卡补全甚至显示相同的文件。
例如,输入以下内容,然后点击TAB
$ sudo mv /System/Library/LaunchDaemons/tftp
tftp.plist tftp.plist
如果我重命名该文件:
$ sudo mv /System/Library/LaunchDaemons/tftp.plist /System/Library/LaunchDaemons/tftp.plist.derp
选项卡补全仍然显示该文件:
$ ls -Blah /System/Library/LaunchDaemons/tf
tftp.plist tftp.plist.derp
但原始的、未修改的文件似乎没有“ls”
$ ls -Blah /System/Library/LaunchDaemons/tftp.plist
ls: /System/Library/LaunchDaemons/tftp.plist: No such file or directory
但是,如果我只列出上面第一个代码片段中的文件,请看:
$ ls -Blah /System/Library/LaunchDaemons
total 32
drwxr-xr-x 266 root wheel 8.8K Jun 18 10:41 .
drwxr-xr-x 79 root wheel 2.6K Mar 31 12:28 ..
[redacted]
-rw-r--r-- 1 root wheel 715B Jun 18 10:35 tftp.plist
-rw-r--r-- 1 root wheel 715B Jun 18 10:36 tftp.plist.derp
知道这里发生了什么以及如何摆脱这个幽灵文件吗?
如果这为问题添加了任何信息,那么这是一台运行 OS X 的 Mac。sed
就在疯狂开始之前我正在使用这个文件。
编辑
我使用了blah
和Blah
ls
标志,表观输出没有变化。
编辑2
评论中要求的附加信息:
$ echo tftp* | xxd
0000000: 7466 7470 2e70 6c69 7374 2020 7466 7470 tftp.plist tftp
0000010: 2e70 6c69 7374 2e64 6572 700a .plist.derp.
更多的:
$ printf '<%q>\n' tftp*
<tftp.plist\ >
<tftp.plist.derp>
更:
$ locale │-rw-r--r-- 1 root wheel 495B Sep 9 2014 org.net-snmp.snmpd.plist
LANG="en_US.UTF-8" │-rw-r--r-- 1 root wheel 498B Jan 15 23:15 org.ntp.ntpd.plist
LC_COLLATE="en_US.UTF-8" │-rw-r--r-- 1 root wheel 1.0K Nov 13 2014 org.openldap.slapd.plist
LC_CTYPE="en_US.UTF-8" │-rw-r--r-- 1 root wheel 572B Sep 9 2014 org.postfix.master.plist
LC_MESSAGES="en_US.UTF-8" │-rw-r--r-- 1 root wheel 238B Sep 9 2014 shell.plist
LC_MONETARY="en_US.UTF-8" │-rw-r--r-- 1 root wheel 941B Sep 9 2014 ssh.plist
LC_NUMERIC="en_US.UTF-8" │-rw-r--r-- 1 root wheel 260B Sep 9 2014 telnet.plist
LC_TIME="en_US.UTF-8" │-rw-r--r-- 1 root wheel 715B Jun 18 10:36 tftp.plist
LC_ALL="en_US.UTF-8"
笔记
下面的答案帮助我看到名称中有一个尾随空格。
答案1
您要么有尾随空格,要么文件系统损坏。
尝试
for i in tftp.plist*
do
echo "'$i'"
done
那应该输出类似的东西
'tftp.plist'
'tftp.plist '
请注意引号和额外的空格。如果它两次输出完全相同的内容,则您的文件系统可能已损坏。
尝试
ls -i tftp.plist*
这将为您提供文件的索引节点号。如果它们相同,则您的目录中有两次相同的文件。那真是太糟糕了,你应该尽快运行 fsck。但我怀疑这就是问题所在;更有可能是空白的事情。