Bash-skalet är standardterminalmiljön som ingår i de flesta Linux-distributioner, som ingår i MacOS, och är tillgänglig för installation på Windows 10. Den kommer ihåg de kommandon du skriver och lagrar dem i en historikfil. Du vet noga några grunder av bash-historiken, men det är mycket kraftfullare än du kanske inser.
RELATERADE: De bästa tangentbordsgenvägarna för Bash (aka Linux och MacOS Terminal)
För att bläddra i din bash-historia kan du använda några av bashs många användbara tangentbordsgenvägar. Tryck på dessa genvägar och kommandon som du tidigare använde kommer att visas vid prompten.
Bash har också ett speciellt "återkall" -läge som du kan använda för att söka efter kommandon som du tidigare kört, istället för att bläddra igenom dem en efter en.
Du kan skriva ut hela bash-historiken till skärmen genom att köra ett enda kommando:
historia
Du får se en lista över alla kommandon i din bash historia, tillsammans med ett tal till vänster om varje. Kommandot med ett "1" bredvid det är det äldsta kommandot i din bash-historia, medan kommandot med det högsta numret är det senaste.
RELATERAD: Bli en Linux Terminal Power User med dessa 8 trimmer
Du kan göra allt du gillar med utgången. Du kan till exempel koppla det till kommandotgrep
för att söka i kommandotaggen.
historia | grep your_search
Du kan också pipa den till kommandotsvans
för att bara visa ett litet antal av de senaste kommandon du har kört. Följande kommando skulle till exempel visa de senaste 5 inmatningarna i din historik.
historik | svans -5
Bash kan snabbt "expandera" tidigare kommandon, eller expandera dem och ändra dem. Denna funktion är känd som "historiaxpansion" och använder ett utropstecken, kallat "bang". Skriv bara in dem vid prompten och tryck på Enter för att köra dem som om du skulle köra ett annat kommando.
För att köra ett specifikt kommando från din historia med dess nummer, använd följande kommando:
! #
För Låt oss säga att du ville köra det 12: e kommandot från din bash-historia. Det här är kommandot med en "12" till vänster om det när du kör kommandothistoria
. Du skulle skriva följande kommando.
! 12
Om du vill köra det sista kommandot du körde skriver du följande. Detta har samma effekt som att trycka uppåtpilen en gång för att visa föregående kommando och sedan trycka på Enter.
!!
Du kan också referera till ett kommando ett visst antal rader tillbaka. Exempelvis! - 2
skulle köra den andra till sista kommandot du körde.!!
betyder samma sak som! - 1
.
Denna expansion fungerar någonstans på linjen. Du kan lägga till något du gillar före eller efter!!
eller något av de andra uttrycken i det här avsnittet. Till exempel kan du skriva följande kommando för att återställa det sista kommandot du körde genomsudo
, vilket ger det root-privilegier. Detta är särskilt användbart om du glömmer att lägga tillsudo
innan du kör ett kommando.
sudo !!
Eller, till exempel, kan du omdirigera det föregående kommandot och pipa utmatningen till grep för att söka efter lite text.
!! | grep text
Skriv efter ett kommando i din historia och kör det. Detta kommer att köra det sista kommandot som matchar texten du anger:
! text
Så om du nyligen körde ett kommando som började medping
, kan du köra följande kommando för att söka efter det. Detta kommer att söka bakåt genom din historia, hitta det senaste kommandot som börjar med "pi
" och kör det genast:
! Pi
Du kan lägga till en: p
till någon av ovanstående expansioner och bash skriver ut kommandot till terminalen utan att köra det. Det här är användbart om du vill bekräfta att du väljer rätt kommando innan du kör det.
! 12: p
!!: p
! Text: p
Bash tillåter dig också att köra ett nytt kommando, men använd argument från tidigare kommandon i din historia. Detta kan hjälpa dig att snabbt återanvända långa eller komplicerade argument utan att behöva skriva in dem igen.
command! $
Låt oss säga att du körde kommandottouch / home / chris / some_long_file_name_you_dont_want_to_type_again
. Nu vill du köra kommandotnano / home / chris / some_long_file_name_you_dont_want_to_type_again
. I stället för att skriva hela saken från början, kan du köra:
nano! $
The! $
skulle göra att bash automatiskt fyller i det sista argumentet från ditt tidigare kommando.
Detta bara fyller i det sista argumentet. Så om du körping google.com -c 4
och kör sedanping! $
, skulle detta bara expandera till "ping 4
".
För att fixa den här situationen kan du använda följande trick för att expandera det första argumentet på raden, i stället för det sista:
-kommandot! ^
Så om du kördeping google.com -c 4
och körde sedanping! ^
, skulle bash expandera detta till "ping google.com"
.
För att fylla i alla argument som användes i föregående kommando istället för bara ett enda argument skulle du använda följande:
kommando! *
Så, om du kördeping! *
istället, fyllde bash automatiskt alla argument du använde i föregående kommando
Du kan använda samma trick som du använder för att köra kommandon från din historia för att få argument från dem. Använd bara följande formulär.
command! Abc: #
Till exempel körde vi kommandotsudo värdnamn ubuntu
tidigare. Om vi kör följande kommando kommer bash att söka bakåt genom historiken för att hitta det sista kommandot beginni ng med de bokstäver vi skriver och fyll i det argument vi anger. Så, om vi körecho! Su: 2
, kommer bash att söka tillbaka för att hitta det sista kommandot som börjar med "su
" och fylla i sitt andra argument, som är "ubuntu
".
Andra tricks fungerar som du kan förvänta dig. Om du till exempel ersätter numret med en asterisk, som kallas jokertecken, orsakar bash att fylla i alla argument från kommandot:
kommando! Abc: *
Bash tillåter också du omdirigerar det föregående kommandot och anger något som ska ändras. Detta kan vara användbart för att korrigera ett skrivfel i ett kommando. Till exempel kommer följande kommando att återställa föregående kommando, ersätter texten "abc
" med texten "xyz
".
^ abc ^ xyz
För Om du till exempel kördeping gogle.com
kan du sedan köra^ gog ^ goog
och bash skulle köra kommandotping google.com
istället.
Bash-skalet lagrar historiken om kommandon som du har kört i ditt användarkonto historikfil vid ~ / .bash_history som standard. Om ditt användarnamn till exempel är Bob, hittar du den här filen på /home/bob/.bash_history.
Om din historia lagras i en fil, fortsätter den mellan sessionerna. Du kan köra några kommandon, logga ut, kom tillbaka nästa dag, och de här kommandona kommer fortfarande att finnas i din historikfil redo att visa och använda. Varje användarkonto har sin egen historikfil med en separat kommandog History.
För att rensa bashistoriken kan du köra följande kommando. Detta raderar innehållet i ditt användarkonto .bash_history-fil:
history -c
Bash minns bara ett begränsat antal kommandon som standard, vilket förhindrar att historikfilen växer för stor. Antalet historiska poster som bash kommer ihåg styrs avHISTSIZE
variabel. Standardvärdet är vanligtvis 500 eller 1000 poster. Du kan köra följande kommando för att se storleken på bashistoriken på ditt system.
echo $ HISTSIZE
För att ställa in din historia till noll, kör följande kommando.
HISTSIZE = 0
För nuvarande session kommer bash inte lagra några historiska poster om du inte kör ett kommando somHISTSIZE = 1000
för att ställa in det till ett visst antal poster.
Bash kan du ignorera historikposter som börjar med ett mellanslag om du ställer inHISTCONTROL
-variabeln tillignorespace.
HISTCONTROL = ignorespace
Skriv ett mellanslag före ett kommando innan du kör det i bash skal och kommandot körs normalt men kommer inte att visas i din historia om du har den här variabelen aktiverad. Detta gör att du kan hålla din historia lite renare och väljer att köra kommandon utan att de visas i din historia.
Med Bash kan du också ignorera dubbla kommandon som kan störa din historia. För att göra så ställer du inHISTCONTROL
tillignoredups.
HISTCONTROL = ignoredups
För att använda både funktionenignorespace
ochignoredups
HISTCONTROL
variabel tillignoreboth.
HISTCONTROL = ignoreboth
Observera att bash-variabler du ställer in kommer bara att kvarstå för den aktuella sessionen. Du måste lägga till dessa i ditt användarkonto .bashrc-fil så att dessa värden automatiskt anges i varje bash session du startar, om du föredrar det.
Bash-skalet är ett komplext verktyg med många fler alternativ än dessa. Konsultera Bash History Builtins och History Expansion sektionerna i den officiella bashandboken, mer detaljerad information och andra avancerade knep du kan använda.
Ange påminnelser med ditt eko Kanske är den mest användbara sätten att ställa in påminnelser på ditt Echo talar med Alexa. Om du inte är nära din Echo kan du använda Amazon-appen på iPhone eller Ubi på Android. Du kan formulera dem på flera sätt: "Alexa, påminna mig om min frisyravtale kl 13.00". "Alexa, påminna mig om att göra tvätt på en timme.
Gå till krom: // tillägg i webbläsaren. Bläddra ner till undersidan av sidan och klicka på "Tangentbordsgenvägar." I fönstret som dyker upp väljer du vilken funktion som helst av en av dina tillägg som du inte använder och tilldelar Ctrl + Shift + Q till den. Nu, när du oavsiktligt trycker på den genvägen, kommer den att starta den här åtgärden istället.