Como lidar com espaços em nomes de arquivos no Linux

Dec 14, 2024
Linux

Como a maioria dos sistemas operacionais, o Linux suporta nomes de arquivos com espaços neles. Mas o uso desses nomes de arquivos na linha de comando nem sempre é direto. Aqui estão várias maneiras pelas quais você pode lidar com nomes de arquivos contendo espaços.

O humilde nome do arquivo
Por que os espaços nos nomes de arquivos Linux são uma dor
Como citar e escapar de espaços
Como corrigir o problema do espaço em sua fonte
A expansão da guia facilita o tratamento de espaços
Como usar nomes de arquivos com espaços em scripts de bash
Espaçado, mas não esquisito

O humilde nome do arquivo

Tudo armazenado no seu computador disco rígido precisa ter um nome. Sem nome, nenhum arquivo existiria. Todos os aplicativos e daemons lançados quando o seu computador inicializa e todo o software que você usa deve ser identificado e armazenado em um sistema de arquivos. Essa identificação é o nome do arquivo. '

O mesmo se aplica aos arquivos que você cria ou instala. Todos os seus documentos, imagens e música precisam de nomes de arquivos. Sem nomes de arquivos, nenhum de seus ativos digitais poderia existir. Como os nomes de arquivos são tão importantes, o Linux tenta impor o número de regras sobre sua composição possível.

No Linux, um nome de arquivo pode conter qualquer personagem além da barra para a frente “ / ”E o personagem nulo, 0x00 . O caractere nulo é usado para marcar a extremidade de uma string, para que não possa estar presente na própria string, ou o Linux truncaria o nome do arquivo na posição do caractere nulo. O " / ”O slash forward é usado como separador em caminhos de diretório.

Os nomes de arquivos são sensíveis ao caso, e pode ter até 255 bytes de comprimento , incluindo o caráter nulo. Os caminhos de diretório podem ter até 4096 bytes de comprimento, incluindo o caractere nulo. Observe que esse é o comprimento deles em bytes , que pode não equivaler diretamente a personagens . Caracteres unicode de 16 bits, por exemplo, pegue dois bytes cada.

Os entusiastas da computação retrô e aqueles com longas lembranças saberão que nos primeiros dias dos computadores pessoais, Sistema operacional de disco da Microsoft , Dos, foi insensível ao caso e tinha um limite de nome de arquivo de oito caracteres, além de um três caracteres extensão .

Você tinha que ser muito atencioso e às vezes criativo quando nomeou arquivos. Em comparação, a liberdade que temos hoje significa que podemos nomear arquivos o que quisermos, com pouco pensamento para qualquer outra coisa que não seja a descrição que estamos criando para esse arquivo.

Mas com os nomes de arquivos, o que nos trata com mais frequência não são os personagens que digitamos, são os espaços entre eles.

Por que os espaços nos nomes de arquivos Linux são uma dor

Concursos como Bash interpretarão uma sequência de palavras separada por espaço como argumentos de comando individuais, não um único argumento. Aqui está um exemplo, usando tocar para Crie um novo arquivo chamado "Meu novo arquivo.txt".

Como podemos ver, ls Mostra -nos que existem três arquivos criados, um chamado "My", outro chamado "Novo" e um mais chamado "File.txt".

Observe que tocar Não reclamou ou deu um erro. Ele realiza o que acha que estamos pedindo. Então, ele nos devolve silenciosamente à linha de comando. Se não estivermos motivados a verificar, não sabemos que as coisas não foram de acordo com o planejado.

Para criar o arquivo que queríamos, precisamos citar ou escapar.

Como citar e escapar de espaços

Se citarmos todo o nome do arquivo, tocar sabe que precisa tratar o texto citado como um único argumento.

Desta vez, obtemos o arquivo único que esperamos.

Podemos obter o mesmo resultado se usarmos o personagem de barragem “ \ ”Para escapar dos espaços. Ao "escapar" dos espaços, eles não são tratados como personagens especiais - ou seja, separadores de argumentos - são considerados espaços antigos.

Isso funciona, mas os espaços escapar tornam os nomes de arquivos de digitação mais lentos e propensos a erros. As coisas podem ficar realmente feias se você tiver nomes de diretórios com espaços também.

Esse comando copia um único arquivo de texto de um diretório chamado "Dir One" para um diretório chamado "Dir Two" e salva a cópia como um arquivo BAK. E é um exemplo bastante simples.

Como corrigir o problema do espaço em sua fonte

Se eles são seus próprios arquivos, você pode tomar a decisão política de nunca usar espaços e criar (ou Renomear em massa ) nomes de arquivos como este.

É certo que essa é uma solução robusta, mas ainda é feia. Existem opções melhores, como usar traços “ - "Ou sublinham" _ ”Para separar suas palavras.

Ambos vão evitar o problema e são legíveis. Se você não deseja adicionar caracteres extras aos seus nomes de arquivos, você pode usar Camelcase Para tornar seus nomes de arquivos legíveis, assim:

A expansão da guia facilita o tratamento de espaços

Obviamente, a adoção de uma convenção de nomenclatura e a adesão a ela só ajudará quando você estiver lidando com seus próprios arquivos. É improvável que os arquivos que vêm de qualquer outro lugar sigam sua convenção de nomenclatura adotada.

Você pode usar a expansão da guia para ajudá -lo a "preencher" os nomes de arquivos para nós. Vamos dizer que queremos excluir O arquivo BAK que criamos em "Dir Two", usando rm .

Começamos digitando "rm dir" porque estamos usando o rm Comando e sabemos que o nome do diretório começa com "dir".

Pressionar a tecla "Tab" faz com que o Bash digitalize para correspondências no diretório atual.

Existem dois diretórios que começam com "dir" e, em ambos os casos, o próximo personagem é um espaço. Então Bash adiciona o personagem de barragem “ \ ”E um espaço. Bash então espera que forneçamos o próximo personagem. Ele precisa do próximo personagem para diferenciar entre as duas correspondências possíveis neste diretório.

Vamos digitar um "t", para "dois" e depois pressionar "guia" mais uma vez.

Bash completa o nome do diretório para nós e espera que digite o início do nome do arquivo.

Temos apenas um arquivo neste diretório; portanto, digitar a primeira letra do nome do arquivo, "M", é suficiente para informar o Bash qual arquivo queremos usar. Digitar "M" e pressionar "guia" completa o nome do arquivo para nós, e "Enter" executa o comando inteiro.

A expansão da guia facilita a garantia de que você acerte os nomes de arquivos e também acelera a navegação e digitação na linha de comando em geral.

RELACIONADO: Use a conclusão da guia para digitar comandos mais rapidamente em qualquer sistema operacional

Como usar nomes de arquivos com espaços em scripts de bash

Não é surpresa que scripts Tenha exatamente os mesmos problemas com os espaços nos nomes de arquivos que a linha de comando. Se você estiver passando um nome de arquivo como uma variável, certifique -se de citar o nome da variável.

Este pequeno script verifica o diretório atual para arquivos que correspondem ao padrão de arquivo "*.txt" e os armazena em uma variável chamada File_list . A para laço é usado para executar uma ação simples em cada um.

Copie este texto em um editor e salve -o em um arquivo chamado "files.sh". Em seguida, use o chmod comando para torná -lo executável.

Temos alguns arquivos neste diretório. Um tem um nome de arquivo simples, e os outros dois usam sublinhados “ _ "Ou traços" - ”Em vez de espaços. É isso que vemos quando executamos o script.

Isso parece funcionar bem. Mas vamos alterar os arquivos no diretório para arquivos que contêm espaços em seus nomes.

Cada palavra em cada nome de arquivo é tratada como se fosse um nome de arquivo por conta própria e, portanto, o script falha. Mas tudo o que precisamos fazer para fazer o script lidar com os espaços em nomes de arquivos é citar o $ arquivo variável dentro do para laço.

Observe que o sinal do dólar “ $ ”Está dentro das citações. Fizemos essa alteração e a salvamos no arquivo de script "arquivos.sh". Desta vez, os nomes de arquivos são tratados corretamente.

RELACIONADO: Como processar uma linha de arquivo por linha em um script Linux Bash

Espaçado, mas não esquisito

Evitar espaços em seus próprios nomes de arquivos só o levará até agora. É inevitável que você encontre arquivos de outras fontes com nomes que contêm espaços. Felizmente, se você precisar lidar com esses arquivos na linha de comando ou nos scripts, existem maneiras fáceis de fazê -lo.


Linux - Artigos mais populares

Como recuperar arquivos excluídos no Linux com o TestDisk

Linux Nov 18, 2024

Fatmawati Achmad Zaenuri / Shutterstock Você já excluiu um arquivo e lamentou instantaneamente? Você precisa de volta e rápido! Mas e se o arquivo for tão..


As melhores distribuições do Linux sem Systemd

Linux Feb 24, 2025

BMJ / Shutterstock.com. Quando as distribuições dominantes do Linux adotadas Systemd. , Dissidores Distribuições Bifurcadas e iniciou novos proj..


Como obter um gerenciador de dispositivos gráficos para Linux

Linux Mar 17, 2025

África Studio / Shutterstock.com Há infinitas utilitários de linha de comando do Linux que mostram os detalhes de hardware do seu computador . Ha..


Como ocultar todos os ícones da área de trabalho no Mac

Linux Jun 23, 2025

Krisda / Shutterstock. Seu Mac Desktop uma bagunça? Realmente não quer organizar tudo? Não se preocupe, você pode usar um comando de terminal para ocultar ..


O que há de novo no Fedora 35

Linux Nov 2, 2024

Fedora 35, chapéu vermelho O livre Distribuição do Linux. (Distro), foi lançado em 2 de novembro de 2021. De uma experiência de desktop atualizada para os ajuste..


Ubuntu 21.10 chega com um desktop personalizado gnome 40

Linux Oct 14, 2025

Ubuntu. Se você é um usuário do Ubuntu, ou alguém que está pensando em dar uma tentativa, hoje é um bom dia. Canônico lançou oficialmente o Ubuntu 21.10 com um de..


10 comandos básicos do Linux para iniciantes

Linux Oct 13, 2025

Basta começar no Linux? Fazendo-se confortável com a linha de comando é essencial. Se você já estiver familiarizado com utilitários de linha de comando, descobrirá que o Linux e o M..


O que há de novo no Ubuntu 21.10 'Impish Indri'

Linux Oct 14, 2025

Canônico Ubuntu 21.10 "Impish Indri" era liberado em 14 de outubro de 2021. Possui Gnomo 40. , um novo kernel e aplicativos atualizados. M..


Categorias