Cronologia dei comandi selettiva nel terminale?


9

All'interno di un terminale, quando si preme verso l'alto sulla tastiera, è possibile vedere in ordine i comandi passati che gli sono stati precedentemente assegnati. Mi chiedevo se in passato ci fosse un modo per vedere solo i comandi che iniziano con -for, "ls -l". In questo modo, se l'elenco dei comandi è:

  1. ls -l -a
  2. cMake
  3. cd ~ / Desktop
  4. cMake

Un modo per scrivere semplicemente "ls" e tab o qualsiasi combinazione di tasti premuti per far apparire il comando passato cedendo al terminale che inizia con "ls"

Grazie,

Risposte:


14

Non mostrerà le cose solo a partire ls, ma puoi Ctrl-R lsfare una ricerca all'indietro nella storia. Ripeti Ctrl-Rper trovare la prossima partita.


Grazie per il CTRL+Rcomando di scelta rapida.
Kleber S.

8

A volte è utile avere questo ...

Esempio

Connessione ad un altro computer usando ssh:

iniziare a digitare

ssh

Usa il PgUptasto e il tuo ssh finisce con l'ultimo usato ... premi di PgUpnuovo e ti dà il prossimo e così via. Mi piace?

Puoi usare questo:

Modifica il tuo .bashrc ( vi /home/<yourfolder>/.bashrc) e aggiungi questo:

$if Bash
    # Search history back and forward using page-up and page-down
    "\e[5~": history-search-backward
    "\e[6~": history-search-forward

    # Completion
    set match-hidden-files off
    set page-completions off
    set completion-query-items 350
    set show-all-if-ambiguous on

$endif

Questo aggiunge solo al terminale dell'utente questa funzione. Dovrai modificare anche quello del root per avere lo stesso: puoi seguire questo tutorial dal wiki non c'è modo di farlo in modo sbagliato, inoltre ci sono molte cose extra per migliorare la tua esperienza terminale ...


Puoi anche associarlo ai tasti freccia Su / Giù: bind '"\e[A": history-search-backward'; bind '"\e[B": history-search-forward'rendendolo ancora più intuitivo.
Fritz,

5

Per vedere la cronologia dei comandi, usare può usare:

$ history

Se vuoi solo vedere il comando precedente iniziare con, ad esempio, "ls", secondo me utilizzo:

$ history | grep ls

Certamente l'output conterrà qualcosa che non è un comando ma con caratteri "ls", ma penso che possa essere d'aiuto.


2

Il modo più semplice per ottenere ciò che desideri è !<whatever-command>. Ad esempio, per eseguire l' lsultima operazione eseguita, è possibile eseguire un !ls. Dai un'occhiata al seguente registro per vedere se questo è quello che ti serve:

nits@nits-excalibur:~$ ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
nits@nits-excalibur:~$ cd Documents/
nits@nits-excalibur:~/Documents$ top
nits@nits-excalibur:~/Documents$ !ls
ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI

1
Questo esegue il comando senza visualizzarlo, esiste un'alternativa che lo visualizza come richiesto dall'OP?
Bruno Pereira,

In zsh, è possibile setopt HIST_VERIFYe il comando verrà inserito nel buffer di input, dove è possibile premere Invio per accettarlo o modificarlo.
poolie,

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.