GNU/Linux >> Tutoriels Linux >  >> Linux

La sortie de Ls a des retours à la ligne mais s'affiche sur une seule ligne. Pourquoi?

Je pense que j'oublie peut-être un point relativement fondamental concernant le shell. Sortie du ls La commande par défaut sépare la sortie avec des retours à la ligne, mais le shell affiche la sortie sur une seule ligne.

Quelqu'un peut-il m'expliquer cela? J'avais toujours supposé que la sortie était simplement séparée par des espaces, mais maintenant que je vois la sortie séparée par des retours à la ligne, je m'attendrais à ce que la sortie s'affiche sur des lignes séparées.

Exemple :

[email protected]:~/lpi103-4$ ls text*
text1  text2  text3

od montre que la sortie est séparée par des retours à la ligne :

[email protected]:~/lpi103-4$ ls text* | od -c
0000000   t   e   x   t   1  n   t   e   x   t   2  n   t   e   x   t
0000020   3  n
0000022

Si des retours à la ligne sont présents, alors pourquoi la sortie ne s'affiche-t-elle pas comme :

text1 
text2
text3

Réponse acceptée :

Lorsque vous dirigez la sortie, ls agit différemment.

Ce fait est caché dans la documentation d'information :

Si la sortie standard est un terminal, la sortie est en colonnes (triées verticalement) et les caractères de contrôle sont sortis sous forme de points d'interrogation ; sinon, la sortie est listée une par ligne et les caractères de contrôle sont sortis tels quels.

Pour le prouver, essayez de courir

ls

puis

ls | less

Cela signifie que si vous voulez que la sortie soit garantie d'être un fichier par ligne, qu'il soit canalisé ou redirigé, vous devez exécuter

ls -1

(-1 est le numéro un)

Ou, vous pouvez forcer ls | less afficher en colonnes en exécutant

ls -C

(-C est un C majuscule)


Linux
  1. Comment savoir sur quelle version d'Os X je suis depuis la ligne de commande ?

  2. Traiter chaque ligne de sortie de `ping` immédiatement dans le pipeline ?

  3. Linux - Comment basculer de manière robuste le périphérique de sortie Pulseaudio à partir de la ligne de commande ?

  4. Pourquoi y a-t-il une sortie de Ping après qu'il a été terminé ?

  5. Comment changer la sortie audio en HDMI à partir de la ligne de commande ?

Comment sauvegarder une seule base de données MySQL à partir de la ligne de commande

Coloriser la sortie des capteurs ?

Comment récupérer uniquement la ligne nécessaire à partir de la sortie du terminal ?

Comment imprimer les noms de groupe Linux sur plusieurs lignes au lieu d'une sortie sur une seule ligne

Bash si sur une seule ligne

Liste des répertoires en fonction de la taille du plus grand au plus petit sur une seule ligne