Como cd para uma pasta com dois pontos no caminho

5

Estou removendo alguns arquivos no meu servidor do CentOS que uma varredura de vírus considerou estar infectada.

Dois dos arquivos têm ".." no caminho. Eu entendo que normalmente .. é como nós navegamos até o diretório pai. Nesse caso, os dois pontos parecem fazer parte do caminho real.

Por exemplo, se o caminho do arquivo for:

/var/lib/mysql/mysql/..\bin\cna12.dll

Então eu posso fazer o cd para:

/var/lib/mysql/mysql/

Se eu digitar cd e pressionar a tecla duas vezes, será oferecida a opção de preenchimento automático para várias opções. Uma das opções é:

..\bin\cna12.dll

Veja neste texto colado (repare na primeira coluna):

..\bin\cna12.dll                    help_topic.frm                      slow_log.CSV
columns_priv.frm                    help_topic.MYD                      slow_log.frm
columns_priv.MYD                    help_topic.MYI                      tables_priv.frm

Normalmente, posso digitar alguns caracteres das sugestões de preenchimento automático e pressionar a guia novamente para completar o preenchimento automático ... mas parece que não consigo selecioná-lo para concluir o preenchimento automático.

Nada que eu faça parece funcionar. Incluindo colocá-lo entre aspas, como:

cd "..\bin\"

Observe que as barras do Linux são assim, "/", enquanto as barras citadas acima são do estilo do Windows "\".

Como faço o cd para o diretório bin para que eu possa apagar esse arquivo .dll?

    
por Jack Amoratis 16.04.2016 / 07:26

4 respostas

9

Eu não acredito que seja um diretório real, eu suspeito que isso é apenas um arquivo com barras invertidas. Tente excluir o arquivo diretamente e ele deve ser removido.

Isso funcionará: rm '..\lib\plugin\amd.dll'

Eu também não tenho certeza de como o cd é inteligente em um sistema CentOS, ele pode mostrar apenas opções de preenchimento automático apenas para diretórios. Em que você teria que fazer rmdir '..\lib\plugin\amd.dll' (supondo que esteja vazio). Você pode determinar isso executando ls -l no diretório /var/lib/mysql/mysql/ e verificando se é um arquivo ou diretório e, em seguida, emitir o comando correto de acordo.

Em um sistema Linux, os backslahes são tratados apenas como caracteres no nome do arquivo e não como separadores de diretório. Portanto, não há distinção especial ao usá-los no contexto de diretórios. Barras invertidas são normalmente usadas como caracteres de escape para caracteres especiais.

    
por 16.04.2016 / 07:51
8

Existem dois problemas. Você não diz o que está digitando antes do preenchimento automático, o que complica as coisas, e você está se comportando como se fosse um arquivo em outro diretório, o que não é - barras invertidas não são separadores de caminho no unix, como você observou, são apenas caracteres em um nome de arquivo.

Quanto ao segundo, pare de tentar cd . O Shell não fará o preenchimento automático desse nome de arquivo para cd , o que você fizer, porque não é um diretório. O arquivo está em . , apenas rm .

Quanto ao primeiro, você não pode digitar .. no autocomplete, já que essa não é uma correspondência inequívoca (o diretório também contém .. , como deve). Você não pode simplesmente digitar ..\ para autocompletar, porque a barra invertida é um metacaractere que escapa daquele que o segue, e o shell não sabe o que é - pode ser qualquer coisa, ou nada. Se, no entanto, você digitar

rm ..\

então pressione TAB (assumindo que isso é bash), então o nome do arquivo deve ser preenchido corretamente. Eu apenas tentei, e funcionou para mim (bash 4.3.42 (1) sob o Fedora 22).

    
por 16.04.2016 / 07:44
-1

É um Symlink (link simbólico).

Se você executar o comando: ls -l amd.dll

você veria algo como:

lrwxrwxrwx 1 raiz raiz 14 22 de setembro de 2013 amd.dll - > .. \ lib \ plugin \ amd.dll

O que significa que o arquivo atual está localizado aqui:

/var/lib/mysql/lib/plugin/amd.dll

    
por 16.04.2016 / 15:32
-2

Se realmente for um diretório, tente emitir cd '..\lib\plugin\amd.dll' (anote as aspas simples, em vez de aspas duplas)

Se for um arquivo, use rm '..\lib\plugin\amd.dll' (novamente, preste atenção nas aspas simples)

    
por 16.04.2016 / 07:50

Tags