Nomes de arquivos com espaço aparecendo como 'nome do arquivo' após a atualização para 18.04


23

Após uma atualização para 18.04, de 16.04, todos os nomes de arquivos com espaços são exibidos como 'file name'. Anteriormente, era simplesmente file name. Os nomes de arquivos sem espaço são exibidos normalmente:

$ ls
 bar  'foo bar'

Embora isso não afete a funcionalidade de nenhuma maneira, acho isso visualmente confuso.

Eu uso bashcomo concha.

Como posso remover a ''exibição de nomes de arquivos com espaços?


4
Por que você deseja removê-los, eles não fazem parte do nome do arquivo e podem ajudá-lo a gerenciar nomes de arquivos com espaços na linha de comando ou em scripts.
Soren A

2
Estou ciente de que eles não fazem parte do nome do arquivo. Mas eles são desordem visual, e eu não preciso deles.
vidarlo 31/12/19

4
@SorenA Se você usa lspara gerenciar arquivos em seus scripts, está fazendo errado. Por que você não deve analisar a saídals e Por que não analisar ls(e o que fazer em vez disso)?
sobremesa

2
@ WinEunuuchs2Unix Torna a colagem mais fácil, mas, como sua resposta menciona, ela não altera o comportamento quando não é enviada para o terminal ...
vidarlo

2
@vidarlo O lsautor está abordando pelo menos alguns dos problemas. Sabendo que o autor está envolvido ativamente no Stack Exchange (o link na minha resposta), pode-se sugerir mais facilmente melhorias futuras. Em seguida, comentários positivos de outros usuários incentivariam o autor a implementar sugestões.
WinEunuuchs2Unix

Respostas:


33

Essa lsmudança de comportamento foi a partir de 2016, mas finalmente está chegando ao Ubuntu.

Para voltar ao comportamento antigo, use ls -N.

Opcionalmente, você pode usar uma variável ambiental:

QUOTING_STYLE=literal ls

Crie um alias ou defina export QUOTING_STYLE=literal-o ~/.bashrcpara atingir o comportamento antigo.

Você pode ler o link acima para obter mais detalhes, incluindo o histórico de quando, onde, por que e como tudo isso aconteceu. Existem alguns comentários sob o autor de ls changes, onde ele justifica o novo comportamento:

Alguns pontos sobre a mudança.

  • Foi introduzido no coreutils v8.25 e o alinhamento foi aprimorado na v8.26
  • Isso só acontece ao enviar para terminais, para não quebrar scripts
  • Desambigua a saída dos usuários para arquivos que contêm espaço em branco
  • Ele higieniza a saída para que seja seguro copiar e colar
  • A saída agora é sempre válida para copiar e colar de volta ao shell
  • Os usuários podem voltar ao formato antigo adicionando -Nao lsalias

12

É lsisso que está citando a saída, execute:

ls -N

para obter a saída sem nenhuma citação.

man ls

-N, --literal

imprimir nomes de entrada sem citar


Alias ​​se você quiser:

echo "alias ls='ls -N'" >> .bashrc
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.