Enregistrer le défilement du terminal actuel dans un fichier?

24

J'ai cherché une réponse à cela et je n'ai rien trouvé qui me fasse penser que ce n'est pas possible mais ...

Est-il possible d'enregistrer le tampon de défilement Gnome Terminal actuel dans un fichier?

Je sais que je peux faire quelque chose comme command > output.txtrediriger toutes les sorties vers un fichier, ou command | tee output.txtdiviser la sortie vers le terminal ainsi que vers un fichier. Ce que j'essaie de faire, c'est de saisir cela après coup. Je voudrais enregistrer le contenu de défilement de l'onglet terminal actuel dans un fichier.

Karl Wilbur
la source
kittyest un programme terminal qui peut le faire, malheureusement les polices ont l'air horribles (pas de rendu sous-pixel)
jberryman
Merci, @jberryman. Bon à savoir.
Karl Wilbur

Réponses:

37

Après avoir joué un peu, j'ai découvert que vous pouvez:

  • triple-click la dernière ligne
  • frappé shift + home
  • shift + click Première ligne
  • copier avec ctrl + shift + c(ou right-click> 'Copier')

Maintenant, collez-le dans un fichier texte ... ou, en utilisant, xselvous pouvez insérer votre presse-papiers dans un nouveau fichier en ouvrant simplement un nouvel onglet et en faisant:

xsel -o > out.txt

(Pour installer xselfaire sudo apt-get install xsel)

Karl Wilbur
la source
5
La mise en évidence peut se faire plus facilement: Edit-> Select All.
egmont
3
C'est une excellente réponse car elle vous fait réaliser que vous pouvez utiliser triple-click the last lineet shift + home or the scrollbarvous rendre à l'emplacement exact que vous souhaitez pour le début de la sortie.
Chef Pharaoh
2
Avertissement: n'essayez pas ceci avec un grand rappel (plusieurs mégaoctets) car cela pourrait bloquer X (ce qui m'est arrivé).
Kevin Cox
Avec plusieurs mégaoctets, un traitement lent est à prévoir. Soyez patient et laissez l'ordinateur fonctionner. "Donnez-lui une seconde! Il va dans l'espace! Pouvez-vous lui donner une seconde pour revenir de l'espace?!"
Karl Wilbur
J'ai juste essayé de copier un grand scrollback (sortie rsync en sauvegardant quelques disques de 2 To pendant la nuit) en utilisant la méthode Edit-> Select Allpour capturer la sortie. Cela fait maintenant 25 à 30 minutes et le terminal Gnome est toujours verrouillé. En utilisant Byobu, j'ai pu démarrer toppour voir que Gnome Terminal est toujours en cours d'exécution (augmentation du temps CPU); utilise actuellement plus de 4,176 g de RAM et grimpe lentement. Donc, oui, avec un très grand défilement, ça va prendre du temps. X fonctionne toujours (et Chrome, YouTube, Nautilus, Byobu, etc.) mais Gnome Terminal va avoir besoin d'une minute. J'aurais dû mieux planifier.
Karl Wilbur
2

scriptest appropriée lorsque vous souhaitez enregistrer une session de terminal dans un fichier et l'afficher ultérieurement. Lorsque vous l'appelez, scriptil lance votre shell, et lorsque vous avez terminé, tapez simplement exit. Tout sera dans le typescriptfichier, sauf indication contraire.

Par exemple,

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit
Script done, file is typescript
xieerqi@eagle:~$ cat typescript 
Script started on 2015年10月27日 星期二 11时37分55秒

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit

Script done on 2015年10月27日 星期二 11时38分18秒

Cependant, il peut y avoir des caractères de contrôle dans le fichier dactylographié, comme à partir de la commande ls, utilisez donc la cat typescript | col -b > outputfile.txtcommande pour rediriger la sortie propre vers le fichier

Sergiy Kolodyazhnyy
la source
5
Merci, mais c'est quelque chose qui doit être fait avant d'avoir collecté des informations précieuses dans votre terminal. J'avais besoin d'une solution après coup.
Karl Wilbur
1
C'est très bon à savoir cependant. Je vais lui donner un coup à l'avenir.
Karl Wilbur
@KarlWilbur :) Je suis sûr que vous le trouverez utile. Je l'utilise beaucoup pour mes devoirs de programmation. Il y a en fait un moyen de vider ce qui est à l'écran dans les consoles TTY, mais gnome-terminal est un peu plus délicat
Sergiy Kolodyazhnyy
@SergiyKolodyazhnyy J'essaie d'implémenter cela dans mon script python, mais je ne peux pas quitter le script en faisant "os.system (" exit "). Cependant, il
quitte le
@mtkilic La scriptcommande lance un processus distinct, donc votre script python étant parent du sous-processus attend la sortie de l'enfant. Il est plus destiné aux sessions interactives, mais si vous souhaitez enregistrer une session dans l'interpréteur Python, démarrez d'abord la scriptcommande et lancez l'interpréteur ensuite. La commande doit également avoir-c indicateur pour que vous puissiez appeler, script -c pythonmais vérifiez avec man script.
Sergiy Kolodyazhnyy