Jadi, entah bagaimana, perintah ls
itu menunjukkan kepada saya dua file yang identik dalam suatu direktori.
$ 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
Saya dapat memindahkan, mengganti nama, mengedit dll. Salah satu file, tetapi yang lainnya bahkan tidak ada. bash
penyelesaian tab bahkan menunjukkan file yang identik.
Misalnya, memasukkan yang berikut ini lalu memukul TAB
$ sudo mv /System/Library/LaunchDaemons/tftp
tftp.plist tftp.plist
Jika saya mengganti nama file:
$ sudo mv /System/Library/LaunchDaemons/tftp.plist /System/Library/LaunchDaemons/tftp.plist.derp
Penyelesaian tab masih menampilkan file:
$ ls -Blah /System/Library/LaunchDaemons/tf
tftp.plist tftp.plist.derp
Tetapi file asli dan tidak dimodifikasi tampaknya tidak menjadi 'ls'
$ ls -Blah /System/Library/LaunchDaemons/tftp.plist
ls: /System/Library/LaunchDaemons/tftp.plist: No such file or directory
Namun jika saya hanya mencantumkan file seperti pada cuplikan kode pertama di atas, lihat:
$ 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
Tahu apa yang terjadi di sini dan bagaimana saya bisa menyingkirkan file hantu ini?
Ini adalah mac yang menjalankan OS X jika itu menambahkan info apa pun ke masalahnya. Saya menggunakan sed
file ini tepat sebelum kegilaan dimulai.
Edit
Saya telah menggunakan kedua blah
dan Blah
ls
bendera dengan tidak ada perubahan dalam output jelas.
Edit 2
Info tambahan yang diminta dalam komentar:
$ echo tftp* | xxd
0000000: 7466 7470 2e70 6c69 7374 2020 7466 7470 tftp.plist tftp
0000010: 2e70 6c69 7374 2e64 6572 700a .plist.derp.
Lebih:
$ printf '<%q>\n' tftp*
<tftp.plist\ >
<tftp.plist.derp>
Bahkan lebih lagi:
$ 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"
Catatan
Jawaban di bawah ini membantu saya melihat bahwa ada spasi di belakang namanya.
ls test\
... Apa yang terjadi jika Anda menggunakan ls "*tftp.list*"
? atau digunakan ls
dengan --show-control-chars
?
echo tftp* | xxd
atau hexdump lainnya?
printf '<%q>\n' tftp*
?
en_US.UTF-8
, ls -b
tidak akan menampilkan kosong dalam nama file dengan cara khusus apa pun, baik di tengah atau di akhir nama file. Anda dapat menggunakan salah satu jawaban (printf, gema), atau memfilter output ls dengan program yang dirancang untuk menyorot trailing blank sepertils -1 tftp* | cat -vet