Comment activer la pagination pour la commande ls?


34

Quelle est l'option équivalente pour la lscommande d'activation de la pagination comme sous DOS dir /p?

Réponses:


54

Il n'y a pas d'équivalent simple en lssoi, mais il y a l' lessutilitaire, qui formatera la sortie de n'importe quelle commande sous forme de pages séparées, pouvant être défilées par ligne ou par page:

ls -C | less

-Cdéclenche l'affichage de la colonne. Utilisation lahcomme arguments ( ls -lah) pour obtenir une l ine par affichage de la ligne avec un fichier ll affichés (y compris celles qui sont cachées), et h Uman filesizes lisibles.

  • Pour que les couleurs apparaissent correctement , vous devez ajouter l' --color=alwaysargument à ls, et l' -Rargument sur less *:

    ls -C --color=always | less -R

    texte alternatif
    cela montre 'ls -ah --color = always | moins -R '

Contrairement à more, lessvous permet de faire défiler la sortie. C'est aussi un peu plus rapide pour les très grandes listes.

Le tuyau fonctionne comme ceci:

Chaque programme a des entrées et des sorties, un tuyau redirige la sortie d’un programme (ls) vers l’entrée d’un autre programme (moins). Et moins simplement attend une entrée qu’elle formate ensuite.

  • Un équivalent dos plus ancien serait pg:

    ls | pg
    

Vous pouvez aussi

  • Utilisez ls | headou ls | tailpour afficher uniquement la première ou la dernière partie de la sortie
  • Utilisez watch "ls"pour garder l'écran ouvert, mettez-le à jour toutes les quelques secondes pour observer les changements
  • Utilisez-le banner $(ls)si vous êtes assis très loin de l'écran. (;

  • Si vous trouvez tout cela trop long à retenir, vous pouvez lui attribuer un alias :

    Ouvrez ~/.bash_aliasesavec un éditeur de texte et ajoutez quelque chose comme ceci:

    alias lsp="ls -ah --color=always | less -R"
    

    (Il s'agit d'un script exécuté à chaque démarrage d'un nouveau terminal virtuel. Vous devez y configurer tous vos alias permanents.)

    Maintenant, vous pouvez simplement taper lsp, ou le nom de votre choix.

    Si vous voulez pouvoir passer d' autres arguments à votre alias, nous devons plutôt définir une fonction :

    lsp(){ ls -ah --color=always "$@" | less -R; }
    

    Une fonction, à la recherche principalement comme ceci: name(){ commands; };peut accepter des arguments, $1, $2, $3et ainsi de suite. $@signifie "chaque argument, le cas échéant" .

    Vous pouvez maintenant exécuter quelque chose comme lsp *.py, lsp -Cet ainsi de suite. Nous insérons les arguments au moment où ils sont passés à ls. Nous aurions aussi pu insérer $ * pour moins, s'il s'agissait de la commande importante. Vous pouvez voir tous les arguments de ls à man ls(mérite une lecture).


*: La raison en est que chaque fois que vous effectuez une Pipe, il détecte un Terminal (en réalité l'autre programme) incapable d'afficher les couleurs. "--color = always" force ls à l'ignorer. Le commutateur -R permet de moins repeindre l’écran et d’ échapper correctement aux couleurs .


merci beaucoup réponse, exactement la partie avec le pseudonyme m'est venue à l'esprit quand j'ai vu la longue ligne de commande. le seul inconvénient de la création de l'alias est que l'utilisation d'un filtre générique tel que * .pdf n'est pas possible? Peut-être existe-t-il aussi une solution pour cela?
NDA

Tout est possible ;-) J'ai ajouté un peu d'argumentation, mais je n'y avais pas pensé plus tôt.
Stefano Palazzo

2
vous avez donné plus que prévu :) merci pour la réponse détaillée. PS savez-vous s'il existe des différences entre bash et fish qui empêchent d'une manière ou d'une autre cette méthode de passer l'argument du pseudonyme de fonctionner avec du poisson? J'ai obtenu l'alias sans l'option argument pour travailler ici.
NDA

1
Ok, ici askubuntu.com/questions/19728/… commence la nouvelle question, merci encore pour vos réponses utiles jusqu'à présent.
NDA

1
$*et $@faire exactement la même chose. Ils s'étendent à $1 $2 $3 .... Quoted, cependant, se "$@"développe en "$1" "$2" "$3" ...while se "$*"développe en "$1 $2 $3 ..."(c'est-à-dire, tous les arguments dans une chaîne, en utilisant le premier caractère de IFSséparateur). mywiki.wooledge.org/BashGuide/Parameters
geirha

3

Je ne sais pas s'il existe une commande ls pour la pagination. Cependant, vous pouvez utiliser un tuyau et less, comme ceci:

ls | less

Et utilisez q pour sortir.


1

Essayez ls | lessou ls | more. Le second est proche de la version DOS.


1
Y a-t-il peut-être une autre méthode? parce que l’inconvénient est pour moi que la colorisation de la coque n’est pas active lors de l’utilisation d’un tuyau?
NDA

2
Essayezls --color=always -C | less -R
FUZxxl
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.