Yani bir şekilde komut ls
bana bir dizinde iki özdeş dosyayı gösteriyor gibi görünüyor.
$ 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
Dosyalardan birini taşıyabilir, yeniden adlandırabilir, düzenleyebilirim, ancak diğeri orada bile görünmüyor. bash
sekme tamamlandığında bile özdeş dosyalar gösterilir.
Örneğin, aşağıdakileri girip ardından vurmak TAB
$ sudo mv /System/Library/LaunchDaemons/tftp
tftp.plist tftp.plist
Dosyayı yeniden adlandırırsam:
$ sudo mv /System/Library/LaunchDaemons/tftp.plist /System/Library/LaunchDaemons/tftp.plist.derp
Sekmenin tamamlanması yine de dosyayı gösterir:
$ ls -Blah /System/Library/LaunchDaemons/tf
tftp.plist tftp.plist.derp
Ancak orijinal, değiştirilmemiş dosya 'ls' olarak görünmüyor
$ ls -Blah /System/Library/LaunchDaemons/tftp.plist
ls: /System/Library/LaunchDaemons/tftp.plist: No such file or directory
Ancak ben sadece yukarıdaki ilk kod parçacığında olduğu gibi dosyaları listelemek, işte:
$ 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
Burada neler olduğu ve bu hayalet dosyasından nasıl kurtulabileceğimi biliyor musunuz?
Bu, soruna herhangi bir bilgi eklerse OS X çalıştıran bir mac. sed
Çılgınlık başlamadan hemen önce bu dosyayı kullanıyordum .
Düzenle
Görünen çıktıda hiçbir değişiklik olmadan hem ve blah
hem de Blah
ls
bayrakları kullandım .
Düzenle 2
Yorumlarda talep edilen ek bilgiler:
$ echo tftp* | xxd
0000000: 7466 7470 2e70 6c69 7374 2020 7466 7470 tftp.plist tftp
0000010: 2e70 6c69 7374 2e64 6572 700a .plist.derp.
Daha:
$ printf '<%q>\n' tftp*
<tftp.plist\ >
<tftp.plist.derp>
Hatta daha fazla:
$ 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"
Not
Aşağıdaki cevap, adında bir boşluk olduğunu görmeme yardımcı oldu.
ls test\
… Eğer kullanırsan ne olur ls "*tftp.list*"
? veya kullanım ls
ile --show-control-chars
?
echo tftp* | xxd
ya da başka bir hexdump çalıştırabilir misiniz ?
printf '<%q>\n' tftp*
?
en_US.UTF-8
, ls -b
dosya adının ortasında veya dosya adının sonunda herhangi bir özel şekilde boşluk gösterilmeyecektir. Cevaplardan birini (printf, echo) kullanabilir veya ls çıktısını aşağıdaki gibi boşlukları vurgulamak üzere tasarlanmış bir programla kullanabilirsinizls -1 tftp* | cat -vet