Come navigare selettivamente nella cronologia dei comandi di Bash su un terminale Linux [duplicato]


9

Tutti sanno (o dovrebbero sapere!) Che su un terminale i tasti freccia su e giù sono usati per navigare attraverso la cronologia dei comandi usati.

Quando si utilizza il terminale su base giornaliera, la cronologia dei comandi sarà probabilmente un lungo elenco di molti comandi diversi, rendendo la navigazione meno semplice. Ad esempio, diciamo che un mese fa ho usato il iwconfigcon un determinato set di parametri (come ho detto, è solo un esempio, non ho bisogno di rovinarlo adesso), come posso ricordare quel particolare comando con tutti i suoi argomenti e parametri senza dover tornare indietro attraverso centinaia di comandi storici?

So che potrei usare historyper avere un elenco di comandi usati in precedenza e !nper eseguire nuovamente il comando n in detto elenco, ma quando la storia diventa grande, non è molto pratico.

L'ideale sarebbe avere qualcosa che mi permetta di usare alcuni tasti di scelta rapida per navigare attraverso la cronologia, ma solo tra le istanze che contengono ciò che ho già digitato sulla riga di comando; quindi nel mio esempio, dopo aver digitato iwconfig, utilizzare alcuni tasti (forse PgUp e PgDown?) per navigare attraverso le voci che iniziano con iwconfig .

Se non è possibile, sarebbe anche bello stampare un elenco come historyfare, ma conterrà solo ciò che ho già digitato (sospetto che historysia grepcoinvolto il comando e non sono sicuro della sintassi corretta); ma la precedente soluzione di scelta rapida sarebbe l'opzione migliore.

Risposte:


12

Puoi cercare nella cronologia usando Ctrl+ Re quindi digitare la stringa di ricerca (ad es. iwPer trovare iwconfig). Quindi puoi ancora navigare attraverso la cronologia in quel punto con i tasti freccia su e giù, oppure premere di nuovo Ctrl+ Rper trovare la ricorrenza precedente.


Non sono sicuro di aver capito bene che funzioni. Se premo Ctrl + R e digito iwconfig, mi mostra un'istanza che lo contiene (non necessariamente il più recente), ma se uso i tasti freccia, naviga attraverso tutti gli elementi, non solo quelli che contengono la stringa. Mi sembra che selezioni un punto specifico nella storia per iniziare la navigazione (invece di iniziare dal basso come il tasto su), ma a parte questo, la navigazione è la stessa di sempre. Ho dimenticato qualcosa?
Sekhemty,

Penso che non abbia alcuna importanza, ma per ogni evenienza sto usando l' konsoleemulatore di terminale.
Sekhemty,

Siamo spiacenti, ho aggiornato la mia risposta su come trovare le partite precedenti.
Stefan Seidel,

5

Dopo un po 'di pratica, ho scoperto come utilizzare la soluzione alternativa.

Ho abbinato la sintassi corretta per stampare un elenco filtrato, l'ho fatto con history | grep iwconfig(dopo tutto non è stato così difficile); con l'output che posso usare !ncon l'elenco filtrato ora di facile lettura.


3
Un ulteriore trucco: utilizzare !n:p. Questo stampa il vecchio comando senza eseguirlo e lo riporta nella cronologia. Quindi vai su di esso con un solo colpo di freccia su e ora puoi modificarlo. Ci sono molti altri stupidi trucchi come questo: ss64.com/bash/history.html
Logica errante

3

Non posso commentare la risposta di Stefan, ma normalmente devi continuare a premere Ctrl + R. Vedi questa pagina per maggiori informazioni.


2

Premi "ctrl + r" quindi inserisci la stringa di ricerca.

Se non quello che stai cercando, quindi di nuovo "ctrl + r"

Se trovato, premere Invio per eseguirlo O premere il tasto freccia destra -> per modificarlo prima di utilizzarlo.

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.