web-dev-qa-db-fra.com

Noms de fichiers avec espace affiché comme «nom de fichier» après la mise à niveau vers 18.04

Après une mise à niveau vers 18.04, à partir de 16.04, tous les noms de fichiers avec des espaces s'affichent sous la forme 'file name'. Auparavant, c'était simplement file name. Les noms de fichiers sans espace s'affichent normalement:

$ ls
 bar  'foo bar'

Bien que cela n'affecte en rien la fonctionnalité, je trouve cela encombrant visuellement.

J'utilise bash comme Shell.

Comment puis-je supprimer '' montrant autour des noms de fichiers avec des espaces?

24
vidarlo

Ce changement de comportement de ls était à partir de 2016 mais il fait enfin son chemin dans Ubuntu.

Pour récupérer l'ancien comportement, utilisez ls -N.

Vous pouvez éventuellement utiliser une variable d'environnement:

QUOTING_STYLE=literal ls

Faites-en un alias ou définissez export QUOTING_STYLE=literal dans ton ~/.bashrc pour obtenir l'ancien comportement.

Vous pouvez lire le lien ci-dessus pour plus de détails, y compris l'historique de quand, où, pourquoi et comment tout cela a commencé. Il y a pas mal de commentaires sous l'auteur des modifications ls où il justifie le nouveau comportement:

Quelques points sur le changement.

  • Il a été introduit dans coreutils v8.25 et l'alignement amélioré dans v8.26
  • Cela ne se produit que lors de la sortie vers les terminaux, donc ne casse pas les scripts
  • Il supprime l'ambiguïté des utilisateurs pour les fichiers contenant des espaces
  • Il désinfecte la sortie de sorte qu'il est sûr de copier et coller
  • La sortie est désormais toujours valide pour copier et coller dans Shell
  • Les utilisateurs peuvent revenir à l'ancien format en ajoutant -N à leur alias ls
33
WinEunuuchs2Unix

C'est ls qui cite la sortie, exécutez:

ls -N

pour obtenir la sortie sans aucune citation.

man ls

-N, --literal

imprimer les noms des entrées sans citer


Alias ​​si vous le souhaitez:

echo "alias ls='ls -N'" >> .bashrc
12
Ravexina