Der Befehl ls
scheint mir also zwei identische Dateien in einem Verzeichnis zu zeigen.
$ 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
Ich kann eine der Dateien verschieben, umbenennen, bearbeiten usw., aber die andere scheint noch nicht einmal da zu sein. bash
Die Tab-Vervollständigung zeigt sogar identische Dateien an.
Geben Sie beispielsweise Folgendes ein und drücken Sie dann TAB
$ sudo mv /System/Library/LaunchDaemons/tftp
tftp.plist tftp.plist
Wenn ich die Datei umbenenne:
$ sudo mv /System/Library/LaunchDaemons/tftp.plist /System/Library/LaunchDaemons/tftp.plist.derp
In der Tab-Vervollständigung wird weiterhin die Datei angezeigt:
$ ls -Blah /System/Library/LaunchDaemons/tf
tftp.plist tftp.plist.derp
Die ursprüngliche, nicht geänderte Datei scheint jedoch nicht 'ls' zu sein.
$ ls -Blah /System/Library/LaunchDaemons/tftp.plist
ls: /System/Library/LaunchDaemons/tftp.plist: No such file or directory
Wenn ich jedoch nur die Dateien wie im ersten Codeausschnitt oben aufführe, siehe:
$ 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
Irgendeine Idee, was hier los ist und wie ich diese Geister-Datei loswerden kann?
Dies ist ein Mac, auf dem OS X ausgeführt wird, wenn dadurch weitere Informationen zum Problem hinzugefügt werden. Ich habe sed
diese Datei verwendet, kurz bevor die Verrücktheit begann.
Bearbeiten
Ich habe sowohl die blah
als auch die Blah
ls
Flags ohne Änderung der sichtbaren Ausgabe verwendet.
Bearbeiten 2
Zusätzliche Informationen in Kommentaren angefordert:
$ echo tftp* | xxd
0000000: 7466 7470 2e70 6c69 7374 2020 7466 7470 tftp.plist tftp
0000010: 2e70 6c69 7374 2e64 6572 700a .plist.derp.
Mehr:
$ printf '<%q>\n' tftp*
<tftp.plist\ >
<tftp.plist.derp>
Sogar mehr:
$ 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"
Hinweis
Die Antwort unten hat mir gezeigt, dass der Name ein Leerzeichen enthält.
ls test\
… Was passiert, wenn Sie verwendenls "*tftp.list*"
? oder verwendungls
mit--show-control-chars
?echo tftp* | xxd
einen anderen Hexdump ausführen ?printf '<%q>\n' tftp*
?en_US.UTF-8
,ls -b
werden keine Leerzeichen in Dateinamen in besonderer Weise angezeigt, sei es in der Mitte oder am Ende des Dateinamens. Sie können eine der Antworten (printf, echo) verwenden oder die Ausgabe von ls mit einem Programm filtern, dasls -1 tftp* | cat -vet
Antworten:
Sie haben entweder ein nachgestelltes Leerzeichen oder ein beschädigtes Dateisystem.
Versuchen
Das sollte sowas ausgeben
Beachten Sie die Anführungszeichen und den zusätzlichen Platz. Wenn es genau dasselbe zweimal ausgibt, haben Sie wahrscheinlich ein beschädigtes Dateisystem.
Versuchen
Dadurch erhalten Sie die Inode-Nummern der Datei. Wenn sie identisch sind, haben Sie dieselbe Datei zweimal in Ihrem Verzeichnis. Das wäre wirklich schlecht (tm), und Sie sollten fsck so schnell wie möglich ausführen. Aber ich bezweifle, dass das das Problem ist. Es ist eher die Whitespace-Sache.
quelle
b
oderB
mit "ls" angezeigt wurde?-B
hat nichts damit zu tun, und Sie zeigen kein Beispiel fürls -b
. Allerdings sollte bei-blah
Ihnen sicherlich eine Zeile zu sehen sein, die mit tftp.plist \ endeteb
undB
als auch weder den maskierten Bereich noch den Wert des nicht druckbaren Zeichens in lesbarem Format angezeigt. Sehr seltsam, IMHO.ls
in eine Datei umleiten und mitless
oder einem Texteditor überprüfen ...