Bash: quale comando posso usare per reindirizzare l'intero contenuto della mia attuale finestra del Terminale a un file di testo?


0

Diciamo, ho un sacco di testo nella mia sessione Terminale da quando la finestra è stata aperta (o dall'ultimo comando "chiaro" è stato utilizzato), e esattamente tutto ciò è ciò che voglio in un file di testo.

Invece di "selezionare tutto" manualmente e copiare dalla mia finestra di terminale e incollare in un editor di testo per fare uno "snapshot", qual è il comando equivalente di fare tutto questo?

Risposte:


0

sembra che il comando di script possa essere tuo amico ma devi iniziare in questo modo: https://askubuntu.com/questions/216322/how-can-i-capture-text-from-a-specific-terminal-and-redirect-it-to-a-log-file-wh o da man script script fa un dattiloscritto di tutto ciò che è stampato sul tuo terminale. È utile per gli studenti che        bisogno di un registro cartaceo di una sessione interattiva come prova di un incarico, come il file dattiloscritto        può essere stampato successivamente con lpr (1).

   If  the  argument file is given, script saves all dialogue in file.  If no file name is given, the
   typescript is saved in the file typescript.

0

Questo dipende dal tuo emulatore di terminale.

Se usi KDE konsole, Puoi usare Save Output As... nel File menu. (Di default, nessuna scorciatoia da tastiera, ma puoi usare Ctrl Cambio F10 seguito da un .)

Se usi gnome-terminal, puoi selezionare l'intero scrollback usando Select All sotto il Edit menu (di nuovo, nessuna scorciatoia predefinita). Quindi puoi usare il xsel utility (o equivalente) per scaricare la selezione in un file.

xterm (almeno, la versione installata sulla mia macchina) ha un print-immediate() azione, che può essere attivata dal menu principale. Per impostazione predefinita, questo invia l'intero scrollback più la finestra attualmente visibile a un file denominato XTerm con un timestamp aggiunto. Il prefisso del nome file può essere impostato con printFileImmediate risorsa, e i dati salvati sono influenzati dal printModeImmediate e printOptsImmediate risorse.

In alternativa, è possibile selezionare tutto il testo e quindi utilizzare il xsel tecnica come sopra, ma non conosco un modo conveniente per selezionare tutto con xterm.

Guarda anche: man xterm man xsel così come la relativa documentazione per konsole, gnome-terminalo l'emulatore di terminale che di solito usi.


Sto usando il magazzino Terminale con Ubuntu, e sto cercando una soluzione di comando semplice, quindi questo può essere fatto facilmente e all'interno di uno script bash
user3125996

In altre parole, il mio script bash inizia con l'esecuzione di un "clear", eseguirà la sua funzione, POI vorrei fare una funzione "salva tutto il testo scritto sulla finestra terminale corrente in un file di testo" alla fine, che dovrà ovviamente essere tutto automatico come comando interno.
user3125996

@ user3125996: non puoi chiedere a bash di salvare l'output da uno script perché bash non ha idea di cosa sia quell'output. Non interviene; quando bash esegue un'utilità, fornisce all'utilità i descrittori di file aperti per qualsiasi stdin, stdout e stderr vengono reindirizzati e, successivamente, l'utilità legge e scrive da tali descrittori di file. Anche bash fa la stessa cosa; invia semplicemente il suo output a un descrittore di file. L'unico programma che ha un modello della "finestra terminale corrente" è l'emulatore di terminale e comunichi con l'emulatore di terminale attraverso i suoi menu.
rici

... Ovviamente, è possibile reindirizzare l'output dello script su un file. Potresti anche usarlo tee per reindirizzare a un file e inviare a stdout. Questo non catturerà alcun input da stdin, ma forse non ce n'è. O puoi usare script, che apre una subshell attraverso una pseudotty e raccoglie l'output raw, inclusi i codici di formattazione del terminale, in un file di log. I codici di formattazione rendono il file di log un po 'noioso da gestire, ma è possibile.
rici
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.