Come copiare negli appunti il ​​testo di più pagine dal terminale?


13

Stavo visualizzando una pagina man per un software sulla mia macchina e avevo bisogno di copiare e incollare parte di quel testo, ma il testo era molto più di una pagina. Sono consapevole di poter indirizzare l'output su un file e utilizzare software basati sull'interfaccia utente come gedit per copiare il testo di cui ho bisogno. Ma questo può essere fatto dal terminale?

Joseph ha suggerito un metodo a riga di comando (un po 'complicato per me, non sono ancora bravo con le espressioni regolari su Linux). Ma mi chiedo se c'è un modo per farlo mentre sono ancora sul terminale, usando il mouse .

Spero di ottenere una risposta generica, tuttavia, sto usando Ubuntu.

Risposte:


9

Ho un paio di idee imperfette, ma forse utili.

Metodo 1 - mousey.

Utilizzare la barra di scorrimento del terminale.

Dettagli (presupponendo xterm; saranno necessari adattamenti per altri terminali.)

  1. Abilita la barra di scorrimento se non lo è già. (In xterm, è nel menu che ottieni con Ctrl + Button2.)
  2. Assicurati che lessnon sia in esecuzione con l' -copzione (ho questa opzione abilitata nella mia LESSvariabile di ambiente, ma interferisce con ciò che stiamo per fare, quindi devo digitare -cper disattivarla.)
  3. Utilizzando qualsiasi lesscomando ti piaccia, scorri verso l'alto o verso il basso in modo che la prima riga che desideri copiare sia visibile sullo schermo.
  4. triple-Button1 la linea di partenza prescelta per selezionarla.
  5. Scorri verso il basso fino a quando l'ultima riga che desideri copiare è visibile sullo schermo. Devi usare solo la barra spaziatrice o altri semplici tasti di scorrimento, non una /ricerca: il punto qui è arrivare lessa inviare tutte le linee al terminale in modo che possano essere copiate.
  6. Pulsante 3 sull'estremità prescelta per estendere la selezione.

Possibile difficoltà: il buffer di scorrimento potrebbe non essere abbastanza grande. Ciò può essere modificato xtermcon l' opzione della riga di comando saveLineso della risorsa -sl, ma non conosco un modo per cambiarlo in un xterm che è già in esecuzione.

Metodo 2: non pericoloso.

Utilizzare il |comando (pipe) in lessper inviare il testo a xclip.

Dettagli:

  1. Utilizzando i lesscomandi che preferisci, scorri verso l'alto o verso il basso per posizionare l' ultima riga che desideri copiare nella parte superiore dello schermo. È possibile saltare questo passaggio e il passaggio successivo se si desidera copiare fino in fondo.
  2. Utilizzare il mcomando (segno) per impostare un segno nella posizione finale prescelta. I segni sono una caratteristica utile da soli, e dovresti già conoscerli vi, ma nel caso in cui non lo fai: mximposta un segno, dove xpuò essere qualsiasi lettera, e 'xti restituisce lì in seguito.
  3. Ora scorri verso l'alto in modo che la prima riga che desideri copiare sia nella parte superiore dello schermo.
  4. Usa il comando pipe: |xche ti farà apparire un comando esterno. Il xdovrebbe essere la stessa lettera marchio è stato utilizzato nel mcomando o $per "tutta la strada fino alla fine". Digita xcliplì.

Il semplice caso di copiare l'intera pagina man si riduce a g|$xclipEnter.

Avvertenza (cioè la cosa orribile che mi è appena successa ): xclipsarà semi-in background, funzionante come parte del lessgruppo di processi. Se si tenta di sospendere less, avviare un altro lavoro sullo stesso terminale e incollarlo, non funzionerà. Quindi quando in primo piano il lavoro man/ less, all'improvviso la pasta passerà. Penso che questo dovrebbe essere considerato un xclipbug ...


2
Gli utenti Mac possono usare pbcopy se non hanno installato xclip.
Mike Hedman,

3

Il multiplexer terminale come tmuxo di screensolito ha una funzionalità come questa (vale a dire salvare parte del buffer di scrollback in un file o inoltrarlo a un comando) e usarli di solito è comunque una buona idea, quindi potresti voler dare un'occhiata a uno di quelli .


2

Come indicato su Nixcraft :

  1. Ottieni xclip:

    sudo apt-get install xclip 
    

    o

    yum install xclip
    

    su un sistema basato su RPM.

  2. man man | your_magic_here | xclip -selection clipboard
  3. Ctrl+ Val contenuto del tuo cuore. Puoi invece rimuoverlo -selection clipboardper scegliere incollare con il clic centrale del mouse (chiamato selezione principale).

Nota che your_magic_hereè un segnaposto per un filtro di testo ( sed/ awk/ perl/ ...) che seleziona la porzione desiderata della pagina man in base al tuo caso d'uso specifico, che non hai descritto, quindi temo di non poter essere specifico con un esempio.


A parte xclipc'è anche xsel(e altri). Puoi anche dare un'occhiata a questa discussione negli Appunti .
peterph

C'è un modo per farlo usando il mouse? In modo che quando il mouse raggiunge la fine della pagina, la pagina scorre.
Muhammad Gelbana,

0

Dipende dal programma terminale, ma la maggior parte dei programmi terminali non ha la funzionalità per salvare il testo selezionato.

LXTerminal, uxterm, Konsole e GNOME Terminal sembrano non avere questa "caratteristica", ma potrebbero essercene altri. Guarda la struttura del menu del tuo programma terminale e potrebbe esserci qualcosa come "Salva selezionati"


0

Supponendo che tu usi gnome-terminale lesscome cercapersone manpuoi:

  • Correre lessper mancon -Xchiave a schermo alternativo disabilitare, ad esempio:LESS=-X man less

Ciò consentirà di aggiungere l'output del manbuffer della cronologia dell'emulatore terminale. Vedi questa risposta per maggiori dettagli /unix//a/38638/87918 .

  • Scorri fino all'ultima pagina di testo che desideri copiare. (Tutto il testo fatto scorrere verrà salvato nel buffer della cronologia durante lo scorrimento)
  • Seleziona il testo con il mouse a gnome-terminalpartire dall'ultima pagina alla prima, trascinando il mouse sul bordo superiore della finestra. Il processo dettagliato di selezione del testo è descritto qui :

Questo non funziona in Gnome Terminal. Invece quello che devi fare è avviare la selezione con il tasto sinistro del mouse e mentre lo fai, trascina il cursore del mouse sul bordo della finestra (o fuori dalla finestra). GT scorrerà le cose per te, estendendo la selezione nel processo. Lo scorrimento di GT è sufficientemente rapido da rendere questo processo ragionevolmente conveniente e intuitivo, probabilmente migliore di quello di xterm.

  • Ora hai selezionato il testo (qualunque pagina tu voglia) che puoi copiare e incollare dove vuoi.

0

Usa il | (pipe) comando in meno con i segni come ha risposto Wumpus Q. Wumbley nella sua seconda opzione , ma reindirizzando usando tee per aggiungere un file esistente già lì allo scopo:

|tee >> ~/helpaggregator.txt

Suggerisco un file esistente come di solito è necessario consultare quando si apprendono nuovi comandi e si preferisce mantenerli consolidati. Inoltre, il completamento della scheda è utile.

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.