Terminal * sortie * historique?

19

J'utilise largement les fonctions pour naviguer dans l'historique des commandes de mon terminal; Je me demande s'il existe un moyen de naviguer dans l'historique de sortie des commandes également? (en plus de garder une grande taille et de s'appuyer sur la touche pgup)

Je ne peux pas simplement «réexécuter la commande», car dans ma situation particulière, la source des commandes change; J'ai souvent besoin de revenir sur la sortie d'un changement précédent.

Bienvenue Hacks.

Merci!

Edit 2010:

J'ai donné «tee» le crédit; parmi toutes les méthodes pour enregistrer votre session ailleurs, c'est la plus largement applicable (c'est-à-dire qu'elle fait partie de gnu coreutils, et ne nécessite pas de shell ou d'utilitaire spécifique pour fonctionner). Ce n'était pas vraiment ce que je cherchais, mais je me rends compte qu'une telle chose n'existe pas vraiment.

L'approximation la plus proche à laquelle je peux penser est d'utiliser quelque chose comme screen(byobu / tmux) qui se connecte au fichier et écrit (et associe) une commande personnalisée pour paginer / rechercher dans ce fichier journal (pensez à la lesspagination par invite plutôt que par écran). Merci tout le monde.

Modifier 2012:

La réponse de @Dustin Kirkland est clairement la meilleure, au moins généralement; le tampon de défilement du terminal est le moyen le moins intrusif de parcourir l'historique des sorties de commande. Byobu semble avoir un grand nombre de lignes d'historique par défaut enregistrées (10K; tmux a 2K, écran GNU 100), et il permet des recherches regex (un aperçu rapide indique que l'écran GNU n'a pas de recherche par défilement, et tmux n'a qu'une recherche en texte brut).

mikewaters
la source

Réponses:

4

Vous mentionnez l'utilisation de byobu ...

C'est certainement une façon de procéder. Byobu stocke 10 000 lignes d'historique de défilement par fenêtre ou par division (volet).

Vous pouvez entrer facilement le défilement en appuyant sur Alt- PageUp, Alt- PageDownou F7. Une fois en mode de défilement, vous pouvez rechercher en avant et en arrière à l'aide de commandes de type vi. Utilisez /regexpour rechercher en avant et ?regexpour rechercher en arrière.

Dustin Kirkland
la source
Où est stocké l'historique de défilement et existe-t-il un moyen de le faire persister entre les sessions? C'est-à-dire: ouvrir le terminal avec Byobu, exécuter certaines commandes, appeler exit, fermer le terminal, ouvrir un nouveau terminal avec Byobu et conserver la session précédente.
Darrel Holt le
11

Vous pouvez utiliser teepour envoyer votre sortie de commande vers un fichier et vers le terminal en même temps.

Carl Norum
la source
8

Vous pouvez utiliser scriptpour enregistrer votre session de terminal dans un fichier. Si vous voulez toujours que cela se produise, ajoutez une scriptcommande appropriée à votre .login.

$ man script

Paul R
la source
5

utilisation screen -L

après avoir quitté la session shell ( exitcommande), vous obtenez un fichier journal dans le même répertoire que vous avez commencéscreen

alors vous pouvez voir la sortie avec moreouless -R

wieczorek1990
la source
5

screen peut être défini pour consigner la sortie.

Une façon de le démarrer, au cours d'une screensession en cours , consiste à appuyer sur Ctrl- a, puis sur :, puis sur Entrée log.

De man screen:

log [on|off]

Start/stop writing output of the current window to a file "screenlog.n" in the 
window's default directory, where n is the number  of  the  current  window.
This filename can be changed with the `logfile' command. If no parameter is
given, the state of logging is toggled. The session log is appended to the
previous contents of the file if it already  exists.  The current contents and
the contents of the scrollback history are not included in the session log.
Default is `off'.

logfile filename
logfile flush secs

Defines  the  name  the  log files will get. The default is "screenlog.%n". The 
second form changes the number of seconds screen will wait before flushing the
logfile buffer to the file-system. The default value is 10 seconds.
En pause jusqu'à nouvel ordre.
la source
@SQB: J'ai développé ma réponse.
pause jusqu'à nouvel ordre.
3

bash conserve l'historique de ce que vous avez fait, mais pas la sortie des commandes. Cela pourrait être énorme et n'est souvent pas utile.

Geai
la source