Donc, en quelque sorte, la commande ls
semble me montrer deux fichiers identiques dans un répertoire.
$ 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
Je peux déplacer, renommer, éditer etc. l'un des fichiers, mais l'autre ne semble même pas être là. bash
la complétion des onglets montre même des fichiers identiques.
Par exemple, saisir ce qui suit, puis appuyer sur TAB
$ sudo mv /System/Library/LaunchDaemons/tftp
tftp.plist tftp.plist
Si je renomme le fichier:
$ sudo mv /System/Library/LaunchDaemons/tftp.plist /System/Library/LaunchDaemons/tftp.plist.derp
L'achèvement de l'onglet montre toujours le fichier:
$ ls -Blah /System/Library/LaunchDaemons/tf
tftp.plist tftp.plist.derp
Mais le fichier d'origine non modifié n'apparaît pas à «ls»
$ ls -Blah /System/Library/LaunchDaemons/tftp.plist
ls: /System/Library/LaunchDaemons/tftp.plist: No such file or directory
Cependant, si je liste simplement les fichiers comme dans le premier extrait de code ci-dessus, voici:
$ 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
Une idée de ce qui se passe ici et comment puis-je me débarrasser de ce fichier fantôme?
Il s'agit d'un mac exécutant OS X si cela ajoute des informations au problème. J'utilisais sed
ce fichier juste avant le début de la folie.
Éditer
J'ai utilisé à la fois les drapeaux blah
et les Blah
ls
drapeaux sans changement de sortie apparente.
Modifier 2
Informations supplémentaires demandées dans les commentaires:
$ echo tftp* | xxd
0000000: 7466 7470 2e70 6c69 7374 2020 7466 7470 tftp.plist tftp
0000010: 2e70 6c69 7374 2e64 6572 700a .plist.derp.
Plus:
$ printf '<%q>\n' tftp*
<tftp.plist\ >
<tftp.plist.derp>
Encore plus:
$ 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"
Remarque
La réponse ci-dessous m'a aidé à voir qu'il y avait un espace de fin dans le nom.
ls test\
… Que se passera-t-il si vous utilisez ls "*tftp.list*"
? ou utiliser ls
avec --show-control-chars
?
echo tftp* | xxd
ou un autre hexdump?
printf '<%q>\n' tftp*
?
en_US.UTF-8
, ls -b
n'affichera pas les blancs dans les noms de fichiers de manière spéciale, que ce soit au milieu ou à la fin du nom de fichier. Vous pouvez utiliser l'une des réponses (printf, echo) ou filtrer la sortie de ls avec un programme conçu pour mettre en évidence les blancs de fin tels quels -1 tftp* | cat -vet