Comment utiliser `cat` pour voir le haut d'un très long fichier?

18

J'aimerais savoir comment

cat my-verylong-file

et le montrer du haut au lieu de la fin. Comme le fait la commande man .

IDK
la source
5
Pour être complet, il y a aussi la morecommande ... mais comme morec'est moins capable que less, c'est très vrai que "moins c'est plus". Enfin il y a aussi pgpour "page". Vous pouvez également utiliser ces commandes avec des tuyaux - par exemple. ls -l | lesspour diviser une liste de fichiers très longue en plusieurs pages. Et vous pourriez même utiliser cat my-verylong-file | less.
Baard Kopperud
Il convient également de souligner que "Par défaut, l'homme utilise / usr / bin / less -is." (à partir de man man).
Digital Trauma

Réponses:

43

Utilisez less, qui affichera le fichier par le haut, vous permettant de le faire défiler, tout comme man:

less my-verylong-file
  • Appuyez qpour quitter.

Si vous souhaitez simplement voir les n premières lignes d'un fichier, cela headpeut être une alternative:

head -n 25 filename

affichera les 25 premières lignes du fichier.

Même chose pour les n dernières lignes d'un fichier avec tail:

tail -n 25 filename
vidarlo
la source
2
lesspourrait également être utilisé pour faire défiler de très longues sorties de commandes. Voici est présenté un exemple: ls -laR --color=always ~/ | less -R.
pa4080
2
Et le nom de commande "less" est un jeu de mots sur le nom de commande "more" (qu'il remplace plus ou moins) qui à son tour a été nommé à partir de l'invite "--More" qu'il a donnée. Sous MacOS, il semble que plus soit le même binaire que moins, donc la métamorphose est terminée :)
Thorbjørn Ravn Andersen
5
Alors, plus ou moins la même chose?
Ryan The Leach
1
@ pa4080: vous pouvez configurer, lessdonc il -Rest activé par défaut. Voir ma réponse.
Peter Cordes
@RyanTheLeach more et less : la même chose :)
chepner
11

manutilise less(1)comme pager par défaut. Utilisez-le à la place de cat. Voir aussi la réponse de @ vidarlo .

Comment personnaliser lesspour le rendre encore meilleur:

J'aime bien alias m=less, donc c'est juste une commande à une seule lettre, parce que je la tape tout le temps. Mettre un |mà la fin de quoi que ce soit le dirige vers un téléavertisseur.

Vous pouvez mettre des options comme -iMRj5Xdans l'alias (par exemple alias m='less -iMRX), mais je le fais avec mon ~/.lesskeyfichier. (Voir lesskey(1)).

  • -i: les recherches ne respectent pas la casse (sauf si vous utilisez des majuscules)
  • -M: ligne d'état plus longue, affichant le numéro de ligne et le pourcentage de fichier
  • -R: autorisez le passage de certains codes de contrôle afin de pouvoir rediriger les commandes colorisées en moins.
  • -X: ne passez pas à l'écran "alternatif" de l'émulateur de terminal, donc tout ce que vous regardiez sera toujours là lorsque vous qquitterez less. (idéal pour les pages de manuel une fois que vous avez trouvé l'option souhaitée et que vous souhaitez la consulter tout en la tapant.)
  • -j5: les recherches placent la ligne cible à la ligne 5 au lieu du haut de l'écran. Ainsi, vous pouvez voir le contexte des deux côtés de votre résultat de recherche. (Parfois, je change cela de manière interactive, en tapant -j40ou quelque chose à l'intérieur less, s'il est plus utile de voir le contexte avant une recherche).

Je lie également .à next-fileet ,à prev-file, car les liaisons par défaut sont deux caractères distincts qui sont beaucoup plus lents à taper: :net :p.


C'est mon .lesskey:

$ cat .lesskey
. next-file
, prev-file
#env
LESS = iMRj5X

Exécutez-le lesskeypour le «compiler» en a ~/.less.

Cela importait probablement il y a plus de 20 ans, mais lesslit ce fichier binaire au lieu d'analyser un fichier de configuration de texte à chaque démarrage.

Peter Cordes
la source
@Dan: Ajout d'une ligne en haut pour que cette réponse puisse se suffire à elle-même comme réponse à la question. Je pensais que laisser cette partie implicite serait suffisant compte tenu de l'autre réponse, mais si je n'ai aucune objection à la rendre explicite si cela vous dérangeait.
Peter Cordes