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



Experimente Nosso Instrumento Para Eliminar Problemas

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.



Arquivos com espaços no nome



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

No Bash, se você digitar várias palavras sem escapar caractere () ou citações , ele considerará todas as palavras como argumentos. Isso se aplica a todas as operações, se você estiver mudando de diretório com ‘ CD ‘Ou tentando acessar arquivos com‘ gato 'Comandos. Qualquer coisa que você escrever depois de usá-los será considerado um argumento. Por exemplo:



cat file name.txt

Executar o comando sem usar caractere de escape ou aspas

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

Aqui ' gato 'Comando irá considerar Arquivo e nome como dois argumentos em vez de um único argumento. No entanto, se você usar o caractere de escape ou aspas, o bash shell irá 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. Aguarde Ctrl + Alt teclas e pressione T abrir terminal .
  2. Agora mude o diretório para onde o arquivo está localizado.
    (você também pode arrastar e solta o arquivo no terminal após o comando ' gato ', 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 'nome do arquivo.txt'

    ou

    cat 'nome do arquivo.txt'

    Uso de aspas para evitar espaços no erro de nome

  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. Aguarde Ctrl + Alt teclas e pressione T abrir terminal .
  2. Altere o diretório para onde o arquivo está localizado usando o comando a seguir.
    cd Desktop

    Nota : Coloque o nome do seu local no lugar do Desktop.

  3. Agora digite o comando e use escapar caractere em qualquer lugar onde haja espaço no nome:
    cat arquivo  nome.txt

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

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 caminho como fonte do arquivo se a cotação for usada em sua totalidade. Você precisa fornecer orçamentos para ambos fonte e destino individualmente para que comandos como ‘ cp 'Pode 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.

A diferença entre aspas e caractere de escape

2 minutos lidos