ZSH - uscita intera storia?


37

Di recente sono passato da bash a zsh. In bash, un modo (oltre alla ricerca ricorsiva) che ho usato per trovare i comandi eseguiti in precedenza era history | grep whatever, dove whateverè il bit di comando che ricordo.

In zsh, questo non funziona. historyrestituisce solo alcuni elementi, anche se il mio .zsh_historyfile contiene molte voci, che ho configurato per farlo.

Come posso visualizzare tutta la mia storia, adatta per la ricerca con grep?

Risposte:


48

La cronologia accetta un intervallo di voci zsh come [first] [last]argomenti, in modo da farle funzionare tutte history 0.

Per ottenere l'aiuto di zsh (almeno con la mente) digita Alt-hil comando history e questo farà apparire l'aiuto per i built-in.


3
Grande! Questo è un fastidioso default per me, quindi sto aggiungendo questo al mio file alias:alias history="history 0"
Nathan Long

7
Non importa, ma l'elenco della cronologia inizia da 1 e non da 0.
ggustafsson,

2
Sto usando questo alias da solo:alias h='history 1 | grep'
Harald Nordgren

3
Questo non sembra funzionare per me: il mio ~/.zsh_historyha 10066 righe, ma history 0(o il suo equivalente fc -l 0), stampa solo 4999 righe.
Jayhendren,

2
Per la history 1 | grepgente, spero che tu lo sappia ctrl+r- il miglior trucco / scorciatoia di sempre!
Emil Vatai,

9

La risposta accettata è corretta, ma vale la pena notare che non è necessario chiamare il grepbinario esterno per eseguire la ricerca, poiché tale abilità è inserita. Ho questa funzione definita nel mio .zshrc:

histsearch() { fc -lim "*$@*" 1 }

Gli appunti:

  • fcè l'integrato zsh che controlla la cronologia interattiva. historyè equivalente a fc -l.

  • La -mbandiera richiede un modello, che deve essere citato.

  • La -ibandiera aggiunge un timestamp.

  • fcha molti altri trucchi nella manica (ad esempio, limitare la ricerca alla cronologia interna per la sessione corrente). Vedi la zshbuiltins(1)pagina man o la documentazione ufficiale .


Meglio ancora è usare il modello "* $ @ *" (nota le stelle aggiuntive) invece di "$ @" poiché quest'ultimo produce solo corrispondenze esatte.
Piotr Dobrogost,

1
Hai perfettamente ragione, @PiotrDobrogost! Non sono sicuro di come sono riuscito a inviare questa risposta nello stato in cui l'ho fatto - suppongo di aver digitato quella funzione dalla memoria. Allo stato attuale non è molto utilizzabile, quindi ho intenzione di modificare la risposta per incorporare gli asterischi.
wjv,

3

Dai un'occhiata a FZF . Aiuta non solo a trovare "particelle qualunque" nella cronologia della shell, ma anche in altri luoghi interessanti, ad esempio cronologia del browser, cronologia delle directory, ecc.

fzf è un finder fuzzy da riga di comando. Ciò significa che puoi cercare particelle o frazioni di ciò che stai cercando e mostrerà una raccolta di corrispondenze che puoi continuamente perfezionare. È davvero un punto di svolta.

La homepage dell'autore contiene una serie di esempi illustrativi.


Valuta di aggiungere qualche riferimento a questa risposta a supporto di ciò che affermi.
Pimp Juice IT

Benvenuto in Super User! Leggi Come raccomandare il software per informazioni minime richieste e suggerimenti su come raccomandare il software su Super User. Per mantenere la risposta utile anche se i collegamenti forniti interrompono questi dettagli, è necessario modificarli nella risposta.
Dico Reintegrare Monica il
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.