Como lidar com nomes de arquivos com espaços em Bash

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

Arquivos com espaços no nome

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

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

 arquivo de gato name.txt 

Executando o comando sem usar caractere de escape ou citações

Nota : Seu nome de arquivo pode ser qualquer coisa, mas para este artigo, estaremos usando “ file name.txt ” como um 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 caracteres de escape ou citações, o bash shell considerará isso como um único argumento, que será o “ file name.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 espaços. Alguns outros métodos estão usando cotações simples ou duplas no nome do arquivo com espaços ou usando o símbolo de escape (\) logo antes do espaço. Nós estaremos fornecendo métodos com exemplos aplicados para mostrar como funciona.

Método 1: usando cotações 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 colocará automaticamente aspas no caminho / diretório do arquivo)

     cd Desktop 

    Mudando de diretório

    Nota : 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 'file name.txt' 

    ou

     cat "file name.txt" 

    Usando cotações para evitar espaços no erro de nome
  4. Cotações simples e duplas resultarão no mesmo. Em alguns casos, você precisa experimentar os dois e ver qual deles 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 para onde o arquivo está localizado usando o comando a seguir.
     cd Desktop 

    Nota : Coloque o nome da sua localização no lugar do Desktop.

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

    Usando o caractere de escape para evitar erros de espaços

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 ' considerarão o caminho como fonte de arquivo se a cotação for usada no 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 mostrará que usar o caractere de escape para o caminho é muito mais complexo e os usuários podem cometer erros com ele.

A diferença entre aspas e o caractere de escape

Artigos Interessantes