De bash-shell is de standaardterminalomgeving die bij de meeste Linux-distributies wordt meegeleverd, die is meegeleverd met macOS en beschikbaar is 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 basisbegrippen van de bash-geschiedenis, maar het is veel krachtiger dan je zou denken.
GERELATEERD: De beste sneltoetsen voor Bash (ook bekend als de Linux- en macOS-terminal)
Om door je bash-geschiedenis te bladeren, kun je 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.
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 één voor één te doorlopen.
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 je bash-geschiedenis, terwijl de opdracht met het hoogste nummer de meest recente is.
GERELATEERD: Word een gebruiker van Linux Terminal Power met deze 8 tricks
Met de uitvoer kunt u alles doen wat u maar wilt. U kunt het bijvoorbeeld naar de opdrachtgrep
pipen om uw opdrachtgeschiedenis te doorzoeken.
geschiedenis | grep your_search
U kunt het ook naar de opdrachttail
pipen om slechts een klein aantal recente opdrachten te bekijken die u hebt uitgevoerd. Met de volgende opdracht worden bijvoorbeeld de laatste 5 vermeldingen in uw geschiedenis weergegeven.
geschiedenis | tail -5
Bash kan snel vorige commando's "uitvouwen", 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 je geschiedenis uit te voeren:
! #
Laten we bijvoorbeeld zeggen dat je de 12e opdracht uit je bash-geschiedenis wilde uitvoeren. Dat is de opdracht met een "12" aan de linkerkant wanneer u de opdrachtgeschiedenis
uitvoert. Typ de volgende opdracht.
! 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 de vorige opdracht te bekijken en vervolgens op Enter te drukken.
!!
U kunt ook een opdracht naar een bepaald aantal regels terug verwijzen. Bijvoorbeeld! - 2
voert de voorlaatste opdracht uit die u hebt uitgevoerd.!!
betekent hetzelfde als! - 1
.
Deze uitbreiding werkt overal op de lijn. U kunt alles toevoegen wat u wilt vóór of na!!
of een van de andere uitdrukkingen in dit gedeelte. U kunt bijvoorbeeld de volgende opdracht typen om de laatste opdracht die usudo
hebt uitgevoerd, opnieuw uit te voeren, met rootbevoegdheden. Dit is vooral handig als u vergeetsudo
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 te zoeken naar wat tekst.
!! | grep-tekst
Typ het volgende om 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:
! text
Dus, als je onlangs een opdracht hebt uitgevoerd die begon metping
, kun je de volgende opdracht uitvoeren om ernaar te zoeken. Dit zal achterwaarts door uw geschiedenis zoeken, de meest recente opdracht die begint met "pi
" lokaliseren en deze onmiddellijk uitvoeren:
! Pi
U kunt eentoevoegen: p
naar een van de bovenstaande uitbreidingen en bash zal het commando naar de terminal afdrukken zonder het uit te voeren. Dit is handig als u wilt bevestigen dat u de juiste opdracht selecteert voordat u het uitvoert.
! 12: p
!!: p
! Tekst: p
Met Bash kunt u ook een nieuwe opdracht uitvoeren, maar argumenten uit eerdere opdrachten in uw geschiedenis gebruiken. Dit kan je helpen snel lange of ingewikkelde argumenten te hergebruiken zonder ze opnieuw te hoeven typen.
opdracht! $
Stel dat je de opdrachttouch / home / chris / some_long_file_name_you_dont_want_to_type_again
hebt uitgevoerd. U wilt nu de opdrachtnano / 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 alleen vult het laatste argument in. Dus als uping google.com -c 4
uitvoert en vervolgensping! $
uitvoert, wordt dit gewoon uitgebreid 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 het laatste:
-commando! ^
Dus, als uping google.com -c 4
ping! ^
, bash zou dit uitbreiden naar "ping google.com"
.
Om alle argumenten in te vullen die in de vorige opdracht zijn gebruikt in plaats van alleen een enkel argument, zou je het volgende gebruiken:
commando! *
Dus als je in plaats daarvanping! *
uitvoerde, vulde bash automatisch alle argumenten in die je in het vorige commando 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.
command! Abc: #
We hebben bijvoorbeeld de opdracht uitgevoerdsudo hostnaam ubuntu
eerder Als we de volgende opdracht uitvoeren, zal bash achteruit zoeken door de geschiedenis om de laatste opdracht te vinden ng met de letters die we typen en vul het argument in dat we opgeven. Dus, als weecho! Su: 2
uitvoeren, zal bash terug zoeken om de laatste opdracht te vinden die begint met "su
" en het tweede argument invullen, dat is "ubuntu
".
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: *
Bash staat ook toe om de vorige opdracht opnieuw uit te voeren en iets op te geven dat moet worden gewijzigd. Dit kan handig zijn om een typfout in een opdracht te corrigeren. Met de volgende opdracht voert u bijvoorbeeld de vorige opdracht opnieuw uit en vervangt u daarin de tekst "abc
" door de tekst "xyz
".
^ abc ^ xyz
For Als u bijvoorbeeld per ongelukping gogle.com
hebt uitgevoerd, kunt u^ gog ^ goog
uitvoeren en zou bash de opdrachtping google.com
uitvoeren.
De bash-shell slaat de geschiedenis op van de opdrachten die u standaard in ~ / .bash_history hebt uitgevoerd in het geschiedenisbestand van uw gebruikersaccount. 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 doorHISTSIZE
variabel. 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 in te stellen op nul.
HISTSIZE = 0
Voor de huidige sessie, slaat bash geen geschiedenisvermeldingen op tenzij u een opdracht zoalsHISTSIZE = 1000
uitvoert om het terug te zetten naar een bepaald aantal vermeldingen.
Bash kunt u geschiedenisvermeldingen negeren die beginnen met een spatie als u deHISTCONTROL
-variabele instelt opignorespace.
HISTCONTROL = ignorespace
Typ een spatie vóór een opdracht voordat u deze in de bash uitvoert shell en de opdracht wordt normaal uitgevoerd, maar verschijnt niet in uw geschiedenis 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 worden weergegeven.
Met Bash kunt u ook dubbele opdrachten negeren die uw geschiedenis nog verder kunnen slepen. Hiertoe stelt uHISTCONTROL
in opgenegeerde waarden.
HISTCONTROL = ignoredups
Als u zowel de functieignorespace
alsignoredups
wilt gebruiken, stelt u deHISTCONTROL
variabele naarignoreboth.
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.
Hoe Bluetooth Audio op twee luidsprekers tegelijk te spelen met de Galaxy S8
Het is geen geheim dat Bluetooth 5.0 best indrukwekkend is, en als een resultaat kan de Galaxy S8 dit behoorlijk goed doen dingen die andere telefoons gewoon niet kunnen doen. Bluetooth-audio afspelen op twee aangesloten apparaten tegelijk is een van die functies: Dual Audio. Hier is hoe het te gebruiken.
Google Home gebruiken Uw Netflix-profiel gebruiken op basis van uw stem
Google Home vragen om een bepaalde show of film op Netflix af te spelen, was een van de eerste functies die beschikbaar zijn op het platform, maar daar was altijd een flagrante kwestie: het speelde altijd vanuit het primaire profiel, ongeacht wie de opdracht uitvoerde. Nu verandert dat. GERELATEERD: Google Home zal de Netflix-profielen van uw gezin niet verder vermengen In het verleden ging het zo: "Ok Google, speel The Walking Dead op Netflix.