Come posso eseguire un comando Linux mentre utilizzo il comando less o nelle pagine man?


9

Generalmente installo il comando lscon lesse vorrei eseguire un comando mentre è il paging, ad esempio mi imbatto in un file che vorrei eliminare, quindi vorrei eseguire il comando rm {filename}mentre ancora il paging. Vorrei anche sperare di poter usare lo stesso metodo mentre sfoglio le pagine man. In caso contrario, come è diverso?

Risposte:


8

Puoi accedere alla riga di comando usando bang ( !) in meno.

Ad esempio, se digiti:

touch temp.txt
ls | less
!rm temp.txt

E temp.txt dovrebbe essere sparito.

Modifica: per impostazione predefinita sembra che man ora usi meno alla pagina (per qualche motivo ho pensato che fosse usato more, forse in passato lo ha fatto). Puoi usare lo stesso trucco, ma richiede il percorso completo (es. / Home / user / ...) per farlo funzionare.

Questo perché invocare man cambia la directory di lavoro corrente. Sulla mia macchina (xubuntu, usando xfce-terminal) va /usr/share/man. Se la tua console visualizza il CWD, puoi vederlo cambiare o puoi vederlo dall'interno maninserendo:

!pwd

man in realtà cambia CWD, quindi dovresti usare il percorso completo.
Rob,

@Rob - Cosa intendi man actually changes CWD?
PeanutsMonkey,

Ho installato tmux per mostrare il mio CWD nella mia barra di stato. Fare man man(o altro) cambierà il mio CWD mentre l'uomo è aperto. La mia macchina Linux non è al momento disponibile, e non sono sicuro di nessun altro modo per controllare CWD, ma a me sembra che sia quello che sta facendo.
Rob,

@Rob - Quindi vuoi dire che solo perché stai usando tmux, cambia la directory di lavoro corrente quando esegui il comando man {command}da dire /home/{user}a una posizione del comando man?
PeanutsMonkey,

Ciò spiegherebbe il comportamento che ho visto. Ora, perché sta cambiando il CWD, questa è un'altra domanda ...
Ash,

4

Il modo generico per farlo è sospendere il lavoro corrente, eseguire il comando e riprendere il vecchio lavoro.

ls | less (leggi il testo, nota il nome del file)
Control-zper sospendere l'attuale comando attivo

Dovresti ottenere una riga simile a questa: [1]+ Stopped ls | less
([1] è il numero del lavoro.)

rm testfile

fgoppure fg %1 (1 è il numero del lavoro)

È possibile sospendere più processi contemporaneamente. Ad esempio
ls | less
Control-z (output: [1]+ Stopped ls | less)
man rm
Control-z (output: [2]+ Stopped man rm)
rm -i testfile*

fg %1riprendere il lavoro 1 (lasciando aperta la pagina man in background) o
fg %2riprendere il lavoro 2 (man rm)

Se hai più processi sospesi puoi elencarli con jobs.

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.