Faire défiler à l'intérieur de l'écran ou mettre en pause la sortie


384

J'utilise screen pour mes tâches de ligne de commande lors de la gestion des serveurs sur lesquels je travaille. J'exécute généralement de petites commandes (principalement des tâches de système de fichiers), mais parfois, j'exécute des tâches plus étendues (telles que DBA).

Le résultat de ces tâches est important pour moi. Puisque j'utilise Ubuntu et OS X (les deux Terminal Windows) pour mes tâches, mais que je dois utiliser écran, le défilement n'est pas disponible. Par conséquent, toute sortie longue (pensez à un tableau de 500 lignes d'une sélection) est invisible pour moi. La molette de la souris est hors de question.

Quand je dis "Le défilement est invisible pour moi, je veux dire ceci:

haut lors de l'utilisation d'écran, sous Mac OS X, lors du défilement

Je pensais à deux options:

  1. Pause (pensez paginer ) la sortie d'une certaine commande. Lorsque la sortie commence, cela me permet de lire ce qui se passe, puis j'appuie sur "Entrée", puis la sortie continue jusqu'à ce qu'il n'y ait plus rien à afficher.

  2. Faites défiler à l'intérieur de l'écran. Mais je ne sais pas si c'est possible.

Bien sûr, je ne sais pas si ces options sont réellement possibles . Si oui, comment peut-on les atteindre? D'autres alternatives seront bien reçues.

Réponses:


526

Screen possède son propre tampon de défilement, car il s’agit d’un multiplexeur de terminaux et doit gérer plusieurs tampons.

Il existe peut-être un meilleur moyen, mais je suis habitué à faire défiler en utilisant le "mode copie" (que vous pouvez utiliser pour copier du texte à l'aide de l'écran lui-même, bien que cela nécessite également la commande Coller):

  • Appuyez sur votre combinaison de préfixes d'écran ( C-a/ control+ Apar défaut), puis appuyez sur Escape.

  • Montez / descendez avec les flèches ( et ).

  • Lorsque vous avez terminé, appuyez sur qou Escapepour revenir à la fin du tampon de défilement.

(Si, au lieu de qou, Escapevous appuyez sur Enterou sur Return, puis déplacez le curseur, vous sélectionnerez le texte à copier et vous pourrez le copier Enterou Returnle copier une seconde fois. Vous pourrez ensuite coller avec C-asuivi de ].)

Bien sûr, vous pouvez toujours utiliser moreet lessdeux pagers couramment utilisés, ce qui peut être suffisant pour certaines commandes.


5
De plus, une pression sur q quitte le mode de copie sans rien copier (et il suffit d'appuyer sur un bouton de moins). Cela pourrait être dans l'explication vi mais le lien est maintenant brisé.
Nathanael Farley

3
Appuyez également sur [Echap] pour quitter le mode copie.
Sopalajo de Arrierez

8
une façon de faire la page?
Sungguk Lim

10
Le tampon de défilement semble prendre en charge les commandes de type vi: Cb et Cf pour faire défiler la page vers le haut ou le bas.
Touko le

3
En mode copie, mes boutons PageUp et PageDown fonctionnent. La première pression ne déplace qu'une ligne, mais après cela, les pages sont comme d'habitude.
Elijah

171

Utiliser le screentampon indiqué par njsg est une bonne solution. Vous pouvez également désactiver le tampon de texte alternatif dans l'écran intérieur de xterm termcap. Lorsque cette option est désactivée, vous pouvez utiliser les barres de défilement (et la molette de la souris) pour faire défiler de haut en bas.

Ajoutez ceci à votre ~/.screenrc.

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

Vous pouvez lire plus de discussion ici .


1
définir la limite de défilement en tapant Ctrl + A,:, tapez "scrollback 10000" ou la valeur numérique de votre
choix

2
Grâce à cela, les raccourcis typiques des terminaux Linux (Maj + Pg haut / bas maison / fin) fonctionnent également, merci.
tokland

5
Ce conseil seul me fait reconsidérer en utilisant l'écran ...
Fish Monitor

5
+1 Plus élégante que la solution acceptée.
Ryan Yoosefi

9
ne vous donne que le résultat que screenvous avez reçu depuis que vous l'avez démarré - c.-à-d. que vous rattachez-le ailleurs signifie que vous ne pouvez pas faire défiler vers le haut et voir ce qui s'est passé auparavant. mais vous pouvez toujours récupérer une sortie antérieure en utilisant la solution de la réponse acceptée - vous pourrez alors utiliser à nouveau la molette de la souris.
Phil

28

Toutes ces réponses ont expliqué comment naviguer dans une session d'écran, mais il existe une fonctionnalité intégrée dans la commande screen permettant de tout stocker dans un fichier grâce à l' -Largument, conformément au manuel qui se lit comme suit:

-L indique à l'écran d'activer l'enregistrement de la sortie automatique pour les fenêtres.

alors tu peux faire:

screen -L -S testscreen

et il créera un fichier avec le screenlog.#où le #est un numéro pour cet écran à partir de 0.

Cela présente de nombreux avantages et les plus importants pour moi sont:

  1. Garder trace de ce que j'ai fait depuis que je peux enregistrer le fichier journal dans le dossier du projet pour référence future.
  2. Vous pouvez surveiller le processus de manière passive et passive:
    • permet tailfde suivre les progrès en temps réel sans être attaché à l’écran.
    • utiliser greppour vérifier certains termes dans le journal et produire des notifications (email, popup, voip, etc.). Ceci peut être appliqué sur plusieurs écrans sans que vous les regardiez activement.

1
Je n'étais pas au courant du -Ldrapeau d'écran, c'est très utile! +1
Kredns

1
je veux juste en ajouter plus, screenlog.#est généré dans le même dossier que celui dans lequel vous exécutez la screencommande
Lê Quang Duy

3

J'ai eu du succès avec la pagination de base en canalisant le contenu more, par exemple:

ls -l | more

Ou, si vous souhaitez une sortie couleur pour des cas d'utilisation tels que la coloration syntaxique, vous pouvez utiliser

ls -l --color=always | more

Il en résulte une sortie que je peux facilement parcourir d’un écran à l’autre. Je n'ai pas essayé la modification de @ uther ~/.screenrcmais cela semble préférable comme solution durable lorsqu'une souris est disponible.

Pour essayer ceci, vous pouvez aller sur cet émulateur BusyBox puis ...

cd ~/bin
ls -l --color=always | more

Utilisez la barre d'espace pour parcourir les résultats de la ls -lcommande ou utilisez la touche Entrée pour parcourir les résultats ligne par ligne.

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.