Come posso aggiungere un comando alla cronologia di Bash senza eseguirlo?


32

Di tanto in tanto sarebbe utile aggiungere un comando direttamente alla cronologia in Bash senza eseguirlo effettivamente. Finora la cosa chiusa che ho trovato è aggiungere un #davanti e colpire il ritorno. Ci sono modi migliori?

Risposte:


39

history -s comando


Non ho mai saputo di quella funzione. Non riesco a pensare a un uso immediato, ma è bene saperlo.
Doug Harris,

7
Sai se è possibile eseguire un comando simile a questo da uno script? Ho uno script la ./resize-images.shcui riga finale indica un comando che dovresti eseguire per annullare le modifiche, sarebbe davvero utile se invece lo script potesse aggiungere il comando alla mia cronologia, quindi ho appena premuto up-enterse avessi bisogno di annullare
Ben Page

1
@BenPage: guarda entrambe le risposte qui: unix.stackexchange.com/questions/112354/… .
RustyTheBoyRobot,

9

history -s comando

Puoi anche associare una sequenza di tasti per farlo per te. È possibile inserire questo al prompt di Bash:

bind '"\C-q": "\C-a history -s \C-j"'

o aggiungi questo al tuo ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

quindi puoi digitare qualcosa e premere Ctrl- qe verrà aggiunto alla cronologia senza essere eseguito. Lo spazio prima di "history" fa sì che il historycomando stesso non venga aggiunto alla cronologia se la HISTCONTROLvariabile contiene ignorespaceo ignoreboth. È possibile scegliere un altro tasto invece di "\ Cq".


3

È difficile trovare qualcosa di più breve di un "comando" di un carattere, quindi abbiamo davvero bisogno di passare al livello di battitura. Con la mia configurazione bash e una tastiera americana ciò che fai ora richiede:

  1. Vai all'inizio della riga CTRLA:: +1 istruzione, +2 tasti premuti
  2. Aggiungi #(necessità SHIFT): +1 istruzione, +2 pressione dei tasti
  3. Aggiungendolo alla cronologia con ENTER: +1 istruzione, +1 tasto premuto

quindi in totale 3 istruzioni, 5 tasti premuti.

L'utilizzo ALT#fa lo stesso in 1 istruzione, 2 tasti premuti.

YMMV a seconda del layout della tastiera e della configurazione bash.


3
Il problema non è il numero di pressioni dei tasti, ma quel "#comando" viene memorizzato nella cronologia, anziché il "comando" previsto.
Grumbel,

1
È bello che "#command" venga memorizzato nel file della cronologia poiché ti consente di sapere che il comando non è stato effettivamente eseguito. Questo potrebbe essere utile se in seguito volessi rivedere quali comandi hai inserito per capire un problema.
Marnix A. van Ammers,

2
@Grumbel, @Marnix: D'accordo, non ho risposto alla domanda alla lettera ma ho mostrato come rendere ciò che fa ora ancora più velocemente. Personalmente penso che usare #commandsia molto più veloce di history -s command, e anche molto facile da usare se mappi history-search-backward/-forwardcorrettamente. Ma è una questione di gusti.
Benjamin Bannier,
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.