Espaços e caracteres especiais em um nome de arquivo

Espaços e caracteres especiais em um nome de arquivo - 1.1

Ao trabalhar na linha de comando do Linux, você pode perceber que os nomes de arquivos com caracteres especiais podem causar alguns problemas. Aprenda como lidar com arquivos que tenham espaços ou caracteres especiais em seus nomes, como $,?, \, * E assim por diante.

Por que alguns nomes de arquivos causam problemas >

Você pode ter nomes de arquivo estranhos em seu sistema Linux, se quiser. Por exemplo, nada impede que você tenha espaços em um nome de arquivo. Você também pode usar alguns caracteres estranhos em um nome de arquivo, como &, *, \, $ e? . Os problemas começam quando você tenta usar esses nomes de arquivo na linha de comando.

Você vê, quando você digita comandos no prompt, espaços são freqüentemente usados ​​para separar comandos diferentes, os argumentos do comando ou arquivos diferentes. O shell não sabe que o monte de texto que segue seu comando é, na verdade, um único nome de arquivo. No entanto, há uma maneira fácil de dizer ao shell que o monte de texto é apenas um nome de arquivo, portanto, ter espaços em um nome de arquivo geralmente não é um grande problema.

Uma coisa mais problemática são os caracteres especiais em nomes de arquivos. Existem alguns caracteres que têm um significado especial para o shell bash. Por exemplo, * e? são curingas e $ significa uma variável. Se você puder evitar o uso desses caracteres em nomes de arquivos normais, evite-os. Se você não tem idéia do que são curingas ou porque $ significa uma variável, você tem ainda mais razões para evitar esses caracteres em nomes de arquivos normais!

De qualquer forma, se você tem arquivos com espaços ou caracteres especiais em seus nomes, você tem duas maneiras de lidar com eles: citando o nome do arquivo ou escapando os personagens confusos.

 

Método 1: citando >

Isso é muito simples: coloque o nome do arquivo entre aspas simples (') para que espaços ou caracteres especiais não o incomodem mais:
cat 'File With Spaces.txt'

Veja por que as citações são tão importantes? Se você não os usar, cat tenta ver três arquivos diferentes: FileWith e Spaces.txt.

Ou outro exemplo:
rm 'File*.txt'

Aqui as citações são ainda mais importantes! Como * é um curinga de shell que corresponde a qualquer caractere, você terá um grande problema se não usar as aspas. Sem as aspas, o shell remove File*.txt como pretendido, mas além disso File.txtFile2.txtFile22.txt e outros serão removidos.

 

Método 2: escapando >

Outra maneira de lidar com caracteres especiais em um nome de arquivo é escapar os personagens. Você coloca uma barra invertida (\) na frente do caractere especial ou espaço. Isso faz com que o shell bash trate o caractere especial como um caractere normal:
cat File\ With\ Spaces.txt

ou:
rm File\*.txt

Mas o que fazer se o nome do arquivo contiver o caractere \? Bem, você também escapou!
rm File\\.txt

Claro que você também pode usar as aspas:
rm 'File\.txt'

É uma questão de gosto pessoal qual método você usa, citando ou escapando, mas pessoalmente prefiro citar. É muito mais direto na minha opinião. No entanto, citar nem sempre funciona. Por exemplo, se você quiser usar curingas de shell com um arquivo que possui caracteres especiais em seu nome, é impossível usar aspas porque isso também escaparia dos curingas, então, nesses casos, é necessário escapar os caracteres especiais com uma barra invertida.