Vraag Hoe zoek ik mijn opdrachtregelgeschiedenis op voor opdrachten die ik eerder gebruikte?


Is er naast het bekijken van de geschiedenis ook een manier om mijn geschiedenis te filteren?

Stel dat ik wil zoeken naar een commando dat begon met "ssh"?


148
2017-11-02 01:25


oorsprong




antwoorden:


druk op Ctrl+R en typ ssh. Ctrl+R zal zoeken van de meest recente opdracht naar de oude (achteruit zoeken). Als u meer dan één opdracht heeft die begint met ssh, Druk op Ctrl+R opnieuw en opnieuw totdat je de match vindt.

Zodra je de match hebt gevonden, kun je op drukken invoeren om het commando of de linker / rechter cursor uit te voeren om gewoon de tekst van het commando te selecteren.

Er is geen standaard omgekeerde optie voor Ctrl+R om de richting van de zoekopdracht om te keren maar hier u zult er enkele suggesties over vinden.


230
2017-11-02 01:32





Als u alleen uw geschiedenis wilt doorzoeken, kunt u die gewoon gebruiken history | grep ssh, vervang ssh door wat je maar wilt zoeken.


76
2017-11-02 01:36



Ik gebruik deze methode, omdat ik een link maak om in de lijst elke opdracht weer te geven die overeenkomt met mijn filter. - Pisu


persing Ctrl+R start de "reverse-i-search" -modus, typ "ssh" zou je geschiedenis doorzoeken op commando's die "ssh" bevatten.


13
2017-11-02 01:33





Ik doe een kleine variatie op het bovenstaande, werkt goed voor mij (als je verwijst naar je bash-geschiedenis

In mijn thuismap maak ik een bestand met de naam

.inputrc

Binnen gaat dit

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Opmerking: het bovenstaande lijkt niet meer te werken in 14.04, dus dit doet hetzelfde -

"\e[A":history-search-backward
"\e[B":history-search-forward

Typ dan een deel van een vorig commando dat ik wens & gebruik de pagina omhoog / pagina dn-knoppen doorzoekt de geschiedenis, altijd beginnend met pagina omhoog


13
2017-11-02 01:42



als je root-permissies hebt, kun je / etc / inputrc bewerken zodat dit voor alle gebruikers werkt. - Wolfy
@doug, hmm .. Ik heb Ubuntu 15.04. Deze oplossing werkt maar verknoeit de toetsen Ctrl + LeftArrow / Ctrl + RightArrow. Probleem ziet eruit als bij het maken van .inputrc-bestand en niet met vermeldingen erin. - Ravi
Vergeet niet om .inputrc opnieuw te binden of de terminal te sluiten - David Brossard


Hier is nog een andere methode die klassieke commando's gebruikt (meer kans om in distro's te werken). Commandogeschiedenis wordt opgeslagen in het bestand .bash_history in je homedirectory, zodat je dit kunt doen:

grep "ssh" ~/.bash_history

Vergeet het -i vlag als u een niet-hoofdlettergevoelig zoeken nodig hebt.


5
2017-11-02 09:49





Ik vond de volgende functie ergens op internet en heb deze met groot succes gebruikt. Zet dit in uw ~/.bashrc:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}

Nu laad je je shell opnieuw: exec bash. U hebt nu een nieuwe opdracht, die u als volgt kunt gebruiken:

hgrep ssh

Het zal je een lijst tonen met bijpassende commando's uit je geschiedenis. Typ om een ​​opdracht uit te voeren ! gevolgd door het commando nummer. Hier is een voorbeeld:

~:$ hgrep scp
  207  tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
  421  tn scp scott-laptop __HOST__:Scott\ Severance.asc .
  422  tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
  468  tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  469  tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  470  scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207

Ik vind deze aanpak leuker dan Ctrl+R omdat het veel flexibelere zoekopdrachten toestaat en ik meerdere resultaten tegelijkertijd kan zien.


2
2017-11-09 03:14





Zet dit in uw ~/.bashrc :

alias hgrep = 'geschiedenis | grep --color = auto '

voorbeeld:


2
2017-10-15 10:59