Completamento della riga di comando dalla cronologia dei comandi


85

Quindi, ho visto la storia e Ctrl+ R, ma non sono ciò che pensavo di sapere. C'è un modo in cui posso digitare all'inizio di un comando e scorrere le partite nella mia storia con qualche scorciatoia bash?

# mysq(some shortcut key)

Mi da:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p

Nota a margine: c'è '<kbd> Alt + Tab </kbd>' per tty senza desktop.
neverMind9,

Risposte:


91

Premendo Ctrl+ Rsi aprirà la ricerca cronologica inversa. Ora inizia a digitare il tuo comando, questo darà la prima corrispondenza. Premendo di nuovo Ctrl+ R(e di nuovo) è possibile scorrere la cronologia.

mysq(Ctrl+R)

Darebbe:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+ Rancora:

mysql -u ben.dauphinee -p

5
Grazie. Inoltre, Esc inserirà il comando selezionato sulla riga di comando senza eseguirlo, mentre Invio eseguirà il comando selezionato.
Ben Dauphinee,

3
Trovo CTRL + E migliore per questo che ESC, perché la fuga è difficile da raggiungere ma sto già colpendo CTRL + R, quindi E è proprio lì. Questo posiziona anche il cursore alla fine della riga, il che è utile nel caso in cui volessi cambiare qualcosa (come un nome di file) che trovo essere un caso comune.
Sorpigal,

Purtroppo, non funziona su Cygwin
ATorras il

2
Sui Mac, almeno, sembra mysq(CTRL+R)(CTRL+R)non scorrere i comandi che iniziano con "mysq". Devi (CTRL+R)mysq(CTRL+R)invece fare
BlueRaja - Danny Pflughoeft

62

Per espandere ciò che Gilles ha detto, ho i seguenti elementi .inputrcper associare il tasto freccia su / giù a history-search-backwarde history-search-forward:

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

Digita semplicemente qualcosa (facoltativo), quindi premi il tasto freccia su / giù per cercare nella cronologia i comandi che iniziano con ciò che hai digitato.

Per fare questo .bashrcinvece che .inputrc, puoi usare:

bind '"\e[A": history-search-backward'

3
quelli vincolanti appartengono a ~ / .inputrc ... grazie per aver supportato la mia pigrizia.
Martin Zeitler,

Vale la pena notare che il '\ e' è cruciale, almeno per i debuttanti bash. Basta digitare Ctrl-V per ottenere la sequenza di tasti per il tuo comando non racconta l'intera storia. Ad esempio, digitando Ctrl-V Meta-P (ovvero Alt-P) si ottiene ^ [p - per ottenere il comportamento desiderato, sostituire "^ [" con '\ e'.
MrMas

Accetto con @syslogic: inserisci le righe in .inputrc e rilascia il legame e le virgolette singole.
MrMas

copiandolo e incollandolo in .inputrc su osx, ottengo: source ~ / .inputrc -bash: \ e [A :: comando non trovato -bash: \ e [B :: comando non trovato -bash: \ eOA :: comando non trovato -bash: \ eOB :: comando non trovato
Walrus the Cat

1
Vedi superuser.com/questions/241187/how-do-i-reload-inputrc . Non puoi procurarti il ​​file.
Raychi,

7

È inoltre possibile premere il PAGEUPpulsante per completare automaticamente un comando. Fondamentalmente cerca nel bash_historyfile.


Devi decommentare due righe /etc/inputrco aggiungere queste due righe al tuo $HOME/.inputrcfile: "\e[5~": history-search-backward "\e[6~": history-search-forward
garlix,

5

È possibile utilizzare i comandi readline history-search-backwarde history-search-forwardspostarsi tra le righe dei comandi a partire dal prefisso già digitato. Nessuno di questi comandi è associato alle chiavi nella configurazione predefinita.

Zsh (zle) ha comandi simili history-beginning-search-backwarde history-beginning-search-forward, per impostazione predefinita, non è associato alle chiavi. Ci sono anche history-search-backwarde history-search-forward, che usa la prima parola del comando corrente come prefisso per cercare indipendentemente dalla posizione del cursore.


4

Se vuoi una buona panoramica di comandi molto simili puoi ottenere un elenco con:

history|grep KEYSTRING

Quindi copia e incolla con il pulsante centrale del mouse.

Rgds - Joe

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.