Então, de alguma forma, o comando ls
parece estar me mostrando dois arquivos idênticos em um diretório.
$ 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
Posso mover, renomear, editar etc. um dos arquivos, mas o outro nem parece estar lá. bash
a conclusão da guia mostra até arquivos idênticos.
Por exemplo, digitando o seguinte e pressionando TAB
$ sudo mv /System/Library/LaunchDaemons/tftp
tftp.plist tftp.plist
Se eu renomear o arquivo:
$ sudo mv /System/Library/LaunchDaemons/tftp.plist /System/Library/LaunchDaemons/tftp.plist.derp
A conclusão da guia ainda mostra o arquivo:
$ ls -Blah /System/Library/LaunchDaemons/tf
tftp.plist tftp.plist.derp
Mas o arquivo original não modificado não aparece como 'ls'
$ ls -Blah /System/Library/LaunchDaemons/tftp.plist
ls: /System/Library/LaunchDaemons/tftp.plist: No such file or directory
No entanto, se eu apenas listar os arquivos como no primeiro trecho de código acima, veja:
$ 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
Alguma idéia do que está acontecendo aqui e como posso me livrar desse arquivo fantasma?
Este é um Mac executando o OS X se isso adicionar alguma informação ao problema. Eu estava usando sed
esse arquivo pouco antes do início da loucura.
Editar
Eu usei blah
os Blah
ls
sinalizadores e os sem alteração na saída aparente.
Editar 2
Informações adicionais solicitadas nos comentários:
$ echo tftp* | xxd
0000000: 7466 7470 2e70 6c69 7374 2020 7466 7470 tftp.plist tftp
0000010: 2e70 6c69 7374 2e64 6572 700a .plist.derp.
Mais:
$ printf '<%q>\n' tftp*
<tftp.plist\ >
<tftp.plist.derp>
Ainda mais:
$ 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"
Nota
A resposta abaixo me ajudou a ver que havia um espaço à direita no nome.
ls test\
… O que acontecerá se você usar ls "*tftp.list*"
? ou usar ls
com --show-control-chars
?
echo tftp* | xxd
ou algum outro hexdump?
printf '<%q>\n' tftp*
?
en_US.UTF-8
, ls -b
não mostrará espaços em branco nos nomes de arquivos de nenhuma maneira especial, seja no meio ou no final do nome do arquivo. Você pode usar uma das respostas (printf, eco), ou filtro de saída de ls com um programa concebido para espaços de destaque arrastando tais comols -1 tftp* | cat -vet