Como lidar com nomes de arquivo passantes com espaços no Bash

O Linux tem um shell Bash padrão (também conhecido como Bourne again shell) para executar comandos para o sistema. A maioria dos programadores prefere bash ao invés de cmd por causa da flexibilidade e do poderoso interpretador de linha de comando que o bash oferece. No entanto, a maioria dos usuários ainda terá problemas ao tentar lidar com a passagem de nomes de arquivos com espaços no bash. Isso ocorre porque os espaços não são considerados iguais no bash e nos nomes dos arquivos.

Por que o nome de arquivo com espaços não é reconhecido pelo Bash?

No Bash, se você digitar várias palavras sem caractere de escape (\) ou aspas , todas as palavras serão consideradas como argumentos. Isso se aplica a todas as operações, quer você esteja mudando de diretório com ' cd ' ou tentando acessar arquivos com comandos ' cat '. Qualquer coisa que você escrever depois de usá-los será considerado um argumento. Por exemplo:

cat file name.txt

Nota : Seu nome de arquivo pode ser qualquer coisa, mas para este artigo, usaremos “ nome do arquivo.txt ” como exemplo.

Aqui, o comando ' cat ' considerará o arquivo e o nome como dois argumentos em vez de um único argumento. No entanto, se você usar o caractere de escape ou aspas, o bash shell considerará isso como um único argumento, que será o “ nome do arquivo.txt “.

Nome do arquivo com espaços no Bash

Existem alguns métodos que podem ser usados ​​para os espaços no nome. A melhor prática é evitar espaços para nomes de arquivos no futuro. Um método simples será renomear o arquivo que você está tentando acessar e remover os espaços. Alguns outros métodos usam aspas simples ou duplas no nome do arquivo com espaços ou o símbolo de escape (\) antes do espaço. Estaremos fornecendo métodos com exemplos aplicados para mostrar como funciona.

Método 1: usando aspas simples e duplas

  1. Segure as teclas Ctrl + Alt e pressione T para abrir o Terminal .
  2. Agora mude o diretório para onde o arquivo está localizado.

    (você também pode arrastar e soltar o arquivo no terminal após o comando ' cat ', que irá colocar automaticamente aspas no caminho / diretório do arquivo)

    cd Desktop

    Observação : a área de trabalho pode ser alterada para o local que você está tentando acessar.

  3. Digite o seguinte comando para ler um arquivo de texto com espaços no nome:
    cat 'nome do arquivo.txt'

    ou

    cat "nome do arquivo.txt"
  4. Aspas simples e duplas resultarão no mesmo. Em alguns casos, você precisa experimentar os dois e ver qual funciona.

Método 2: usando o caractere de escape de folga

  1. Segure as teclas Ctrl + Alt e pressione T para abrir o Terminal .
  2. Altere o diretório onde o arquivo está localizado usando o seguinte comando.
    cd Desktop

    Observação : coloque o nome do seu local no lugar do Desktop.

  3. Agora digite o comando e use o caractere de escape em qualquer lugar onde houver espaço no nome:
    cat arquivo \ nome.txt

Bônus: Uso de Cotações e Escape

Às vezes, quando você está usando o diretório no comando, pode haver consequências para o uso de citações no caminho geral. Isso ocorre porque alguns comandos como ' mv ' ou ' cp ' irão considerar o caminho como origem do arquivo se a citação for usada como um todo. Você precisa fornecer cotações para origem e destino individualmente para que comandos como ' cp ' possam funcionar corretamente. Você também pode verificar o exemplo abaixo, que mostra que usar o caractere de escape para o caminho é muito mais complexo e os usuários podem cometer erros com ele.