Eu vejo uma barra invertida, mas na verdade há duas barras invertidas!

3

Alguém pode me ajudar a entender esse problema estranho?

Eu estava tentando renomear uma lista muito longa de pastas.

Eu fui ao diretório pai e listei todas as pastas para renomear em um arquivo de texto:

find PARENT_FOLDER/ -type d -name *Images > ~/Desktop/directory_listing

Eu abri o arquivo da lista no LibreOffice Calc, modifiquei o que tinha que modificar, usei a função "concatenate" para fazer um comando para cada pasta renomear, etc.

Quando voltei para o CLI e colei meus comandos do Calc, o mv falha ao informar que não consegue encontrar as pastas para renomear. Bem, as pastas realmente existem, mas depois de mais investigações, descobri que o texto colado do Calc mostra uma reação na tela, mas na verdade contém 2! Então, o texto que eu colo no bash é algo como:

mv Test\ Folder-1-Images TestFolder1

Mas o que realmente interpreta é:

mv Test\ Folder-1-Images TestFolder1

Confirmei isso com o gedit, onde minha linha de comando no texto mostra 1 barra invertida, mas se eu copio e colo em uma caixa de pesquisa dentro do gedit, ele mostra 2!

Por quê? E como consertar / impedir isso?

    
por Mat 09.04.2015 / 15:54

1 resposta

5

Em shells do Linux, \ é um caractere especial

Diz ao interpretador de shell para tratar literalmente o próximo caractere

isto é, se você quiser passar \ como parte do comando em um script, você terá que usá-lo duas vezes. O primeiro \ é interpretado como um caractere especial pelo shell que diz ao shell para não tratar o próximo caractere, neste caso o segundo \ não como um caractere especial e passá-lo adiante.

Em outras situações, um \ seguido por um caractere normal é tratado como escape sequence , o que dá ao uso especial da combinação. Por exemplo, \n leva o ponteiro para uma nova linha.

Veja link para outros exemplos.

Veja também o link para mais explicações.

Espero que isso ajude

    
por user68186 09.04.2015 / 17:39