web-dev-qa-db-fra.com

Faites défiler l'écran ou suspendez la sortie

J'utilise écran pour mes tâches en ligne de commande tout en gérant les 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 (comme DBA).

La sortie de ces tâches est importante pour moi. Étant donné que j'utilise Ubuntu et OS X (les deux terminaux Windows) pour mes tâches, pourtant je dois utiliser l'écran, le défilement n'est pas disponible, donc toute sortie longue (pensez à un tableau de 500 lignes à partir 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:

top while using screen, in Mac OS X, while scrolling

Je pensais à deux options:

  1. Pause (pensez paginez ) 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'écran. Mais je ne sais pas si c'est possible.

Bien sûr, je ne sais pas si ces options sont réellement possibles . S'ils le sont, comment les réaliser? D'autres alternatives seront bien reçues.

441
AeroCross

Screen a son propre tampon de défilement, car il s'agit d'un multiplexeur de terminal et doit gérer plusieurs tampons.

Il y a peut-être une meilleure façon, mais j'ai l'habitude de faire défiler en utilisant le "mode copie" (que vous pouvez utiliser pour copier du texte en utilisant l'écran lui-même, bien que cela nécessite également la commande coller):

  • Frappez votre combinaison de préfixe d'écran (C-acontrol+A par défaut), puis appuyez sur Escape.

  • Montez/descendez avec les touches fléchées ( et ).

  • Lorsque vous avez terminé, appuyez sur q ou Escape pour revenir à la fin du tampon de défilement.

(Si au lieu de q ou Escape vous frappez Enter ou Return puis déplacez le curseur, vous allez sélectionner le texte à copier et appuyer sur Enter ou Return une deuxième fois le copiera. Ensuite, vous pouvez coller avec C-a suivi par ].)

Bien sûr, vous pouvez toujours utiliser more et less, deux pagers couramment utilisés, qui peuvent suffire pour certaines commandes.

606
njsg

Utiliser le tampon screen comme indiqué par njsg est une bonne solution. Vous pouvez également désactiver le tampon de texte alternatif dans les informations de terminaison xterm à l'intérieur de l'écran. Lorsqu'elle est désactivée, vous pouvez utiliser les barres de défilement (et la molette de la souris) pour faire défiler vers le haut et vers le bas.

Ajoutez ceci à votre ~/.screenrc.

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

Vous pouvez lire plus de discussion ici .

189
George M

Toutes ces réponses traitaient de la façon de naviguer dans une session d'écran, mais il existe une fonctionnalité intégrée dans la commande d'écran pour tout stocker dans un fichier à travers le -L argument selon le manuel qui se lit comme suit:

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

afin que vous puissiez faire:

screen -L -S testscreen

et il va créer un fichier dans le répertoire courant, avec le nom 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 une 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 inactive et passive:
    • utilisation tail -F pour suivre la progression en temps réel sans être attaché à l'écran.
    • utilisez grep pour vérifier certains termes dans le journal et produire des notifications (email, popup, voip, etc.). Cela peut être appliqué sur plusieurs écrans sans que vous les regardiez activement.
35
Mehrad Mahmoudian

J'ai réussi à obtenir la pagination de base en redirigeant le contenu vers more, par exemple:

ls -l | more

Ou, si vous voulez une sortie couleur pour des cas d'utilisation comme la mise en évidence de la syntaxe, vous pouvez utiliser

ls -l --color=always | more

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

Pour l'essayer, vous pouvez aller à cet émulateur BusyBox puis ...

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

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

3
Michael Hogan

Si vous êtes sur Windows et que vous utilisez Bitvise SSH Client , vous pouvez facilement faire défiler la sortie lorsque vous utilisez screen. Je l'utilise tout le temps sans aucun problème. Même si vous detach l'écran et attach à nouveau, vous pouvez toujours faire défiler la sortie précédente dans cet écran.

Lorsque vous utilisez PuTTY ou Mac Terminal, la suggestion de @njsg fonctionne très bien.

0
AbsarAkram