sv.phhsnews.com


sv.phhsnews.com / Hur man använder din bashistorik i Linux eller MacOS-terminalen

Hur man använder din bashistorik i Linux eller MacOS-terminalen


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.

Tangentbordsgenvägar

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.

  • Upp pil eller Ctrl + P : Gå till föregående kommando i din historik. Tryck på knappen flera gånger för att gå bakåt genom de kommandon som du har använt.
  • Pil ned eller Ctrl + N : Gå till nästa kommando i din historik. Tryck på knappen flera gånger för att gå framåt genom de kommandon du har använt.
  • Alt + R : Återställ alla ändringar i ett kommando du har dragit från din historia om du har redigerat det på den aktuella raden.

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.

  • Ctrl + R : Återkalla det sista kommandot som matchar tecken du anger. Tryck på den här genvägen och börja skriva för att söka i din bash-historia för ett kommando.
  • Ctrl + O : Kör kommandot du hittade med Ctrl + R.
  • Ctrl + G : Lämna historiksökningsläget

Visa din bashistorik

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 kommandotgrepför att söka i kommandotaggen.

historia | grep your_search

Du kan också pipa den till kommandotsvansfö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

Kör kommandon från din historia

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! - 2skulle 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 tillsudoinnan 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: ptill 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

Återanvända argument från din historia

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 4och 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 4och 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 ubuntutidigare. 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: *

Återställ föregående kommando och ändra det

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.comkan du sedan köra^ gog ^ googoch bash skulle köra kommandotping google.comistället.

Där din historia lagras och hur du rensar den.

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 avHISTSIZEvariabel. 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 = 1000för att ställa in det till ett visst antal poster.

Hur ignorerar du mellanslag och dubbletter

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 inHISTCONTROLtillignoredups.

HISTCONTROL = ignoredups

För att använda både funktionenignorespaceochignoredupsHISTCONTROLvariabel 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.


Amazon Echo har länge saknat möjligheten att ställa in påminnelser, men företaget har äntligen lagt till funktionaliteten i sin senaste uppdatering. Så här ställer du på påminnelser på ditt echo med Alexa.

Amazon Echo har länge saknat möjligheten att ställa in påminnelser, men företaget har äntligen lagt till funktionaliteten i sin senaste uppdatering. Så här ställer du på påminnelser på ditt echo med Alexa.

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.

(how-top)

Google verkar tro att det finns en bra anledning att ha en genväg som kommer att döda var och en av dina flikar samtidigt. Vi är oense. Om du trycker på Ctrl + Shift + Q stängs varje Chrome-flik eller fönster du har öppnat och förstör ditt arbete. Om du hellre vill hålla ditt jobb där det är, är det här en lösning för att se till att det inte händer.

Google verkar tro att det finns en bra anledning att ha en genväg som kommer att döda var och en av dina flikar samtidigt. Vi är oense. Om du trycker på Ctrl + Shift + Q stängs varje Chrome-flik eller fönster du har öppnat och förstör ditt arbete. Om du hellre vill hålla ditt jobb där det är, är det här en lösning för att se till att det inte händer.

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.

(how-top)