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

23

Après une mise à niveau vers 18.04, à partir de 16.04, tous les noms de fichiers avec des espaces s'affichent comme '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 bashcomme coque.

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

vidarlo
la source
4
Pourquoi voulez-vous les supprimer, ils ne font pas partie du nom de fichier et peuvent vous aider à gérer les noms de fichiers avec des espaces en ligne de commande ou dans des scripts.
Soren A
2
Je suis conscient qu'ils ne font pas partie du nom de fichier. Mais ils sont visuels et je n'en ai pas besoin .
vidarlo
4
@SorenA Si vous utilisez lspour gérer des fichiers dans vos scripts, vous vous trompez. Pourquoi vous ne devriez pas analyser la sortie dels et pourquoi pas analyser ls(et que faire à la place)?
dessert
2
@ WinEunuuchs2Unix Cela rend le collage plus facile, mais comme votre réponse le mentionne, cela ne change pas le comportement lorsqu'il ne
sort
2
@vidarlo L' lsauteur aborde au moins certains des problèmes. Sachant que l'auteur est activement impliqué dans Stack Exchange (le lien dans ma réponse), on pourrait plus facilement suggérer de futures améliorations. Ensuite, les commentaires positifs des autres utilisateurs encourageraient l'auteur à mettre en œuvre des suggestions.
WinEunuuchs2Unix

Réponses:

33

Ce lschangement de comportement date de 2016 mais 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-le export QUOTING_STYLE=literaldans votre~/.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 été créé. Il y a pas mal de commentaires sous l' auteur de ls changes 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 le shell
  • Les utilisateurs peuvent revenir à l'ancien format en ajoutant -Nà leur lsalias
WinEunuuchs2Unix
la source
12

C'est lsqui 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
Ravexina
la source