「ls」は、ディレクトリにある2つの同じファイルを表示します。

「ls」は、ディレクトリにある2つの同じファイルを表示します。

したがって、コマンドはlsディレクトリに2つの同じファイルを表示するようです。

$ 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

ファイルの1つを移動したり、名前を変更したり、編集したりできますが、他のファイルは存在しないようです。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 '

引用符と余分なスペースに注意してください。まったく同じ内容が2回出力されると、ファイルシステムが破損している可能性があります。

努力する

ls -i tftp.plist*

これにより、ファイルのinode番号が提供されます。同じ場合は、ディレクトリに同じファイルが2回あります。それは本当に悪いことなので、できるだけ早くfsckを実行する必要があります。しかし、私はそれが問題だと思います。

関連情報