因此,该命令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"
注意
下面的答案使我看到名称中有一个尾随空格。
6
可能是名称中有尾随空格吗?
—
fredtantini 2015年
嗯...不,可以完成
—
fredtantini 2015年
ls test\
...如果您使用该ls "*tftp.list*"
怎么办?或ls
与--show-control-chars
?
您可以运行类似
—
choroba
echo tftp* | xxd
或其他的十六进制转储吗?
输出是
—
克里斯·
printf '<%q>\n' tftp*
什么?
由于您的语言环境为
—
Mark Plotnick
en_US.UTF-8
,ls -b
因此无论在文件名的中间还是结尾,都不会以任何特殊方式在文件名中显示空格。您可以使用答案(printf,echo)之一,或使用旨在突出显示尾随空白的程序来过滤ls的输出,例如ls -1 tftp* | cat -vet