24Aug

Hoe u uw bashistorie gebruikt in de Linux- of macOS-terminal

click fraud protection

De bash-shell is de standaardterminalomgeving die bij de meeste Linux-distributies wordt meegeleverd, wordt meegeleverd bij macOS en is beschikbaar voor installatie op Windows 10. Het onthoudt de opdrachten die u typt en slaat ze op in een geschiedenisbestand. Je kent waarschijnlijk wel een paar basisprincipes van de bash-geschiedenis, maar het is veel krachtiger dan je zou denken.

Sneltoetsen

Om door uw bash-geschiedenis te bladeren, kunt u enkele van de vele handige sneltoetsen van bash gebruiken. Druk op deze snelkoppelingen en de opdrachten die u eerder hebt gebruikt, verschijnen bij de prompt.

  • Pijl omhoog of Ctrl + P : Ga naar de vorige opdracht in uw geschiedenis. Druk meerdere keren op de toets om achteruit te lopen door de opdrachten die u hebt gebruikt.
  • Pijl omlaag of Ctrl + N : Ga naar de volgende opdracht in uw geschiedenis. Druk meerdere keren op de toets om vooruit te lopen door de opdrachten die u hebt gebruikt.
  • Alt + R : Herstel alle wijzigingen in een opdracht die u uit uw geschiedenis hebt gehaald als u deze op de huidige regel hebt bewerkt.
    instagram viewer

Bash heeft ook een speciale "recall" -modus die u kunt gebruiken om te zoeken naar opdrachten die u eerder hebt uitgevoerd, in plaats van ze een voor een te doorlopen.

  • Ctrl + R : Roep de laatste opdracht op die overeenkomt met de tekens die u opgeeft. Druk op deze snelkoppeling en begin met typen om in uw bash-geschiedenis naar een opdracht te zoeken.
  • Ctrl + O : Voer de opdracht uit die u hebt gevonden met Ctrl + R.
  • Ctrl + G : verlaat de geschiedeniszoekmodus zonder een opdracht uit te voeren.

Uw basishistorie weergeven

U kunt uw volledige bash-geschiedenis afdrukken op het scherm door een enkele opdracht uit te voeren:

-geschiedenis

U ziet een lijst met alle opdrachten in uw bash-geschiedenis, samen met een nummer links van elk. De opdracht met een "1" ernaast is de oudste opdracht in uw bash-geschiedenis, terwijl de opdracht met het hoogste nummer de meest recente is.

U kunt alles doen wat u maar wilt met de uitvoer. U kunt het bijvoorbeeld naar de opdracht grepcommand sturen om uw opdrachtgeschiedenis te doorzoeken.

-geschiedenis |grep your_search

Je zou het ook naar de tail-opdracht kunnen pipen om slechts een klein aantal recente opdrachten te bekijken die je hebt uitgevoerd. Met de volgende opdracht worden bijvoorbeeld de laatste 5 vermeldingen in uw geschiedenis weergegeven.

-geschiedenis |tail -5

Voer opdrachten uit voor uw geschiedenis

Bash kan snel eerdere opdrachten "uitbreiden", of uitbreiden en aanpassen. Deze functie staat bekend als "geschiedenisuitbreiding" en gebruikt een uitroepteken, ook wel "knal" genoemd. Typ ze gewoon bij de prompt en druk op Enter om ze uit te voeren alsof je een andere opdracht uitvoert.

Gebruik een van de volgende opdrachten om een ​​specifieke opdracht uit uw geschiedenis op zijn nummer uit te voeren:

! #

Laten we zeggen dat u de 12e opdracht uit uw bash-geschiedenis wilde uitvoeren. Dat is de opdracht met een "12" aan de linkerkant wanneer u de opdracht history uitvoert. Je zou de volgende opdracht typen.

! 12

Typ het volgende om de laatste opdracht die u hebt uitgevoerd opnieuw uit te voeren. Dit heeft hetzelfde effect als eenmaal op de pijl-omhoog drukken om het vorige commando te bekijken en vervolgens op Enter te drukken.

! !

Je kunt ook een opdracht naar een bepaald aantal regels terug verwijzen. Met bijvoorbeeld! -2 wordt het voor de laatste keer uitgevoerde commando uitgevoerd.!!betekent hetzelfde als! -1.

Deze uitbreiding werkt overal op de lijn. Je kunt alles toevoegen wat je wilt vóór of na! !of een van de andere uitdrukkingen in deze sectie. U kunt bijvoorbeeld de volgende opdracht typen om de laatste opdracht die u via sudo hebt uitgevoerd opnieuw uit te voeren, waarbij u deze de rootrechten geeft. Dit is met name handig als u sudo vergeet toe te voegen voordat u een opdracht uitvoert.

sudo! !

Of u kunt bijvoorbeeld de vorige opdracht opnieuw uitvoeren en de uitvoer naar grep pipen om naar tekst te zoeken.

! !|grep-tekst

Typ het volgende om naar een opdracht in uw geschiedenis te zoeken en uit te voeren. Hiermee wordt de laatste opdracht uitgevoerd die overeenkomt met de tekst die u opgeeft:

! -tekst

Als u onlangs een opdracht hebt uitgevoerd die begon met ping, kunt u de volgende opdracht uitvoeren om ernaar te zoeken. Dit zal achterwaarts door je geschiedenis zoeken, de meest recente opdracht die begint met "pi" zoeken en deze meteen uitvoeren:

! Pi

U kunt een: p toevoegen aan een van de bovenstaande uitbreidingen en bash zal de opdracht afdrukken naar de terminal zonder deze uit te voeren. Dit is handig als u wilt bevestigen dat u de juiste opdracht selecteert voordat u deze uitvoert.

! 12: p! !: p! Tekst: p

Gebruik argumenten uit je geschiedenis opnieuw Gebruik

Met Bash kun je ook een nieuwe opdracht uitvoeren, maar gebruik je argumenten uit eerdere opdrachten in je geschiedenis. Dit kan u helpen snel lange of gecompliceerde argumenten opnieuw te gebruiken zonder ze opnieuw te hoeven typen.

-opdracht! $

Laten we zeggen dat u bijvoorbeeld de opdracht touch /home/chris/ some_long_file_name_you_dont_want_to_type_again hebt uitgevoerd. U wilt nu de opdracht nano /home/chris/ some_long_file_name_you_dont_want_to_type_again uitvoeren. In plaats van alles vanuit het niets te typen, zou je kunnen rennen:

nano! $

De! $ Zou bash automatisch het laatste argument van je vorige commando laten invullen.

Dit vult alleen het laatste argument in. Dus, als u ping google.com -c 4 uitvoert en vervolgens ping! $ Uitvoert, zou dit gewoon uitbreiden naar "ping 4".

Om deze situatie op te lossen, kunt u de volgende truc gebruiken om het eerste argument op de regel uit te vouwen, in plaats van de laatste:

-opdracht! ^

Dus, als u ping google.com -c 4 hebt uitgevoerd en vervolgens ping hebt uitgevoerd! ^,bash zou dit uitbreiden naar "ping google.com".

Om alle argumenten in te vullen die gebruikt zijn in de vorige opdracht in plaats van slechts een enkel argument, zou je het volgende gebruiken:

commando! *

Dus, als je ping draaide!* in plaats daarvan vult bash automatisch alle argumenten in die u in de vorige opdracht gebruikte.

U kunt dezelfde truc gebruiken die u gebruikt om opdrachten uit uw geschiedenis uit te voeren om argumenten van hen te krijgen. Gebruik gewoon het volgende formulier.

-opdracht! abc:#

We hebben bijvoorbeeld eerder het commando sudo hostnaam ubuntu uitgevoerd. Als we de volgende opdracht uitvoeren, zal bash achteruit door de geschiedenis zoeken om de laatste opdracht te vinden die begint met de letters die we typen en het argument dat we specificeren in te vullen.we gebruiken echo! su: 2, bash zoekt terug naar de laatste opdracht die begint met "su" en vult het tweede argument in, dat "ubuntu" is.

Andere trucs werken zoals je zou verwachten. Als u bijvoorbeeld het nummer vervangt door een asterisk, ook wel het jokerteken genoemd, wordt bash gebruikt om alle argumenten uit de opdracht in te vullen:

-opdracht! Abc: *

Voer de vorige opdracht opnieuw uit en wijzig deze

Met Bash kunt u ook de vorige opdracht opnieuw uitvoerenen specificeer iets dat moet worden gewijzigd. Dit kan handig zijn om een ​​typfout in een opdracht te corrigeren. Met de volgende opdracht wordt bijvoorbeeld de vorige opdracht opnieuw uitgevoerd, waarbij de tekst 'abc' daarin wordt vervangen door de tekst 'xyz'.

^ abc ^ xyz

Als u bijvoorbeeld per ongeluk pinggogle.com hebt uitgevoerd, kunt u ^ gog ^ goog uitvoeren en bash voert de opdracht ping google.com uit.

Waar uw geschiedenis wordt opgeslagen en hoe u deze kunt wissen

De bash-shell slaat de geschiedenis van de opdrachten die u hebt uitgevoerd in het geschiedenisbestand van uw gebruikersaccount standaard op in ~ /. bash_history. Als uw gebruikersnaam bijvoorbeeld bob is, vindt u dit bestand op /home/bob/. bash_history.

Omdat uw geschiedenis is opgeslagen in een bestand, blijft deze tussen sessies bestaan. Je kunt wat opdrachten uitvoeren, uitloggen, de volgende dag terugkomen en die commando's zullen nog steeds in je geschiedenisbestand staan ​​om te bekijken en te gebruiken. Elk gebruikersaccount heeft een eigen geschiedenisbestand met een afzonderlijke opdrachthistorie.

Om uw bash-geschiedenis te wissen, kunt u de volgende opdracht uitvoeren. Hiermee wordt de inhoud van het. bash_history-bestand van uw gebruikersaccount gewist:

history -c

Bash onthoudt slechts een beperkt aantal opdrachten standaard, waardoor wordt voorkomen dat het geschiedenisbestand te groot wordt. Het aantal geschiedenisitems dat bash onthoudt, wordt bepaald door het HISTSIZEvariabele. De standaardinstelling is meestal 500 of 1000 items. U kunt de volgende opdracht uitvoeren om de grootte van de bash-geschiedenis op uw systeem te bekijken.

echo $ HISTSIZE

Voer de volgende opdracht uit om uw geschiedenis op nul in te stellen.

HISTSIZE = 0

Voor de huidige sessie slaat bash geen geschiedenisvermeldingen op tenzij u een opdracht zoals HISTSIZE = 1000 uitvoert om deze terug te zetten naar een bepaald aantal vermeldingen.

Ruimten en duplicaten negeren

Met Bash kunt u historie-items negeren die beginnen met een spatie als u het HISTCONTROLvariabele instelt op ignorespace.

HISTCONTROL = ignorespace

Typ een spatie voor een opdracht voordat u deze uitvoert in de bash-shell en de opdracht wordt normaal uitgevoerd, maar wordt niet in uw geschiedenis weergegeven als u deze variabele hebt ingeschakeld. Hiermee kunt u uw geschiedenis een beetje schoner houden en ervoor kiezen om opdrachten uit te voeren zonder dat deze in uw geschiedenis verschijnen.

Bash laat je ook toe om dubbele commando's te negeren die je geschiedenis kunnen vertroebelen. Hiertoe stelt u HISTCONTROL in op ignoredups.

HISTCONTROL = ignoredups

Om zowel de ignorespace- als de ignoredups-functie te gebruiken, stelt u de variabele HISTCONTROL in op ignoreboth.

HISTCONTROL = ignoreboth

Merk op dat bash-variabelen die u instelt alleen zullen blijven bestaan ​​voor de huidige sessie. Je moet deze toevoegen aan het. bashrc-bestand van je gebruikersaccount om deze waarden automatisch in te stellen in elke bash-sessie die je start, als je daar de voorkeur aan geeft.

De bash-shell is een complexe tool met veel meer opties dan deze. Raadpleeg de gedeelten Bash History Builtins en History Expansion in de officiële bash-handleiding voor meer gedetailleerde informatie en andere geavanceerde tricks die je kunt gebruiken.