Materialet, vars översättning vi publicerar idag, är avsett för dem som vill behärska kommandoraden i Linux. Möjligheten att använda detta verktyg effektivt kan spara mycket tid. I synnerhet kommer vi att prata om Bash-skalet och 21 användbara kommandon här. Vi kommer också att prata om hur man använder kommandoflaggor och Bash-alias för att påskynda skrivningen av långa instruktioner.
→
Villkor
När du lär dig att arbeta med Linux-kommandoraden kommer du att stöta på många koncept som är användbara att navigera. Vissa av dem, som "Linux" och "Unix", eller "shell" och "terminal", är ibland förvirrade. Låt oss prata om dessa och andra viktiga termer.
Nu när vi har täckt de viktiga termerna vill jag påpeka att jag kommer att använda termerna "Bash", "shell" och "kommandorad" omväxlande här, liksom termerna "katalog" och "mapp".
standard stdin
), standardutgång (standardutgång, stdout
) och standardfelutgång (standardfel, stderr
).
Om i exemplet kommandon som kommer att ges nedan hittar du något liknande my_whatever
- detta betyder att det här fragmentet måste ersättas med något av ditt. Till exempel namnet på en fil.
Nu, innan vi fortsätter med analysen av kommandona som detta material är tillägnat, låt oss ta en titt på deras lista och deras korta beskrivningar.
21 Bash-kommandon
▍Hämta information
man
: Visar användarhandboken (hjälp) för kommandot.pwd
: visar information om arbetskatalogen.ls
: visar innehållet i en katalog.ps
: Låter dig se information om pågående processer.
▍Manipering av filsystem
cd
: ändra arbetskatalog.touch
: skapa en fil.mkdir
: skapa en katalog.cp
: Kopiera en fil.mv
: Flytta eller ta bort en fil.ln
: skapa en länk.
▍I/O-omdirigering och pipelines
<
: omdirigerastdin
.>
: omdirigerastdout
.|
: skickade utdata från ett kommando till indata från ett annat kommando.
▍ Läser filer
head
: läs början av filen.tail
: läs slutet av filen.cat
: Läs en fil och skriv ut dess innehåll på skärmen, eller sammanfoga filer.
▍Ta bort filer, stoppa processer
rm
: Ta bort en fil.kill
: stoppa processen.
▍Sök
grep
: sök information.ag
: avancerat kommando för sökning.
▍Arkivering
tar
: skapa arkiv och arbeta med dem.
Låt oss prata mer om dessa kommandon.
Lagdetaljer
Till att börja med, låt oss ta itu med kommandona, vars resultat utfärdas i formuläret stdout
. Vanligtvis visas dessa resultat i ett terminalfönster.
▍Hämta information
man command_name
: visa kommandoguiden, d.v.s. hjälpinformation.
pwd
: visa sökvägen till den aktuella arbetskatalogen. Under arbetet med kommandoraden behöver användaren ofta ta reda på exakt var i systemet han befinner sig.
ls
: visa innehållet i en katalog. Detta kommando används också ganska ofta.
ls -a
: visa gömda filer. flaggan tillämpas här -a
kommandon ls
. Användningen av flaggor hjälper till att anpassa kommandonas beteende.
ls -l
: Visa detaljerad information om filer.
Observera att flaggor kan kombineras. Till exempel - så här: ls -al
.
ps
: Visa pågående processer.
ps -e
: Visa information om alla pågående processer, inte bara de som är associerade med det aktuella användarskalet. Detta kommando används ofta i denna form.
▍Manipering av filsystem
cd my_directory
: ändra arbetskatalog till my_directory
. För att flytta upp en nivå i katalogträdet, använd my_directory
relativ väg ../
.
cd kommando
touch my_file
: skapande av filer my_file
längs den givna vägen.
mkdir my_directory
: skapa en mapp my_directory
längs den givna vägen.
mv my_file target_directory
: flytta fil my_file
till en mapp target_directory
. När du anger målkatalogen måste du använda den absoluta sökvägen till den (och inte en konstruktion som ../
).
team mv
kan också användas för att byta namn på filer eller mappar. Det kan till exempel se ut så här:
mv my_old_file_name.jpg my_new_file_name.jpg
: skapa en kopia av en fil
cp my_source_file target_directorymy_source_file
och lägg den i en mapp target_directory
.
ln -s my_source_file my_target_file
: skapa en symbolisk länk my_target_file
per fil my_source_file
. Om du ändrar länken ändras även originalfilen.
Om filen my_source_file
kommer då att raderas my_target_file
kommer att förbli. Flagga -s
kommandon ln
låter dig skapa länkar för kataloger.
Låt oss nu prata om I/O-omdirigering och pipelines.
▍I/O-omdirigering och pipelines
my_command < my_file
: ersätter standardinmatningsfilens beskrivning (stdin
) per fil my_file
. Detta kan vara användbart om kommandot väntar på inmatning från tangentbordet, och dessa data redan är sparade i en fil.
my_command > my_file
: omdirigerar resultatet av kommandot, det vill säga vad som normalt skulle gå in i stdout
och utdata till skärmen, till en fil my_file
. Om filen my_file
finns inte - det skapas. Om filen finns skrivs den över.
Till exempel efter att ha utfört kommandot ls > my_folder_contents.txt
en textfil kommer att skapas som innehåller en lista över vad som finns i den aktuella arbetskatalogen.
Om istället för symbolen >
använda konstruktionen >>
, sedan, förutsatt att filen till vilken utmatningen av kommandot omdirigeras finns, kommer denna fil inte att skrivas över. Data kommer att läggas till i slutet av denna fil.
Låt oss nu ta en titt på bearbetning av datapipeline.
Utdata från ett kommando matas till ingången för ett annat kommando. Det är som att koppla ett rör till ett annat
first_command | second_command
: transportörsymbol, |
, används för att skicka utdata från ett kommando till ett annat kommando. Vad kommandot på vänster sida av den beskrivna strukturen skickar till stdout
, Falla in i stdin
kommandot till höger om pipeline-symbolen.
På Linux kan data pipelineras med nästan vilket välformat kommando som helst. Det sägs ofta att allt i Linux är en pipeline.
Du kan koppla flera kommandon med hjälp av pipeline-symbolen. Det ser ut så här:
first_command | second_command | third_command
En pipeline med flera kommandon kan jämföras med en pipeline
Observera att när kommandot till vänster om symbolen |
, utmatar något till stdout
, vad hon matar ut är omedelbart tillgängligt som stdin
andra laget. Det vill säga, det visar sig att vi med hjälp av pipeline har att göra med parallell exekvering av kommandon. Ibland kan detta leda till oväntade resultat. Detaljer om detta kan läsas
Låt oss nu prata om att läsa data från filer och visa dem på skärmen.
▍ Läser filer
head my_file
: läser rader från början av en fil och skriver ut dem på skärmen. Du kan inte bara läsa innehållet i filerna utan också vad kommandona matas ut i stdin
använder detta kommando som en del av pipeline.
tail my_file
: läser rader från slutet av filen. Detta kommando kan också användas i en pipeline.
Huvudet (huvudet) är framför och svansen (svansen) är bakom
Om du arbetar med data med hjälp av pandas-biblioteket, då kommandona head
и tail
borde vara bekant för dig. Om så inte är fallet, ta en titt på bilden ovan, så kommer du lätt ihåg dem.
Överväg andra sätt att läsa filer, låt oss prata om kommandot cat
.
Team cat
skriver antingen ut innehållet i en fil på skärmen eller sammanfogar flera filer. Det beror på hur många filer som skickas till detta kommando när det anropas.
katt kommando
cat my_one_file.txt
: när en enskild fil skickas till det här kommandot matas den ut till stdout
.
Om du ger den två filer eller fler filer, så beter den sig annorlunda.
cat my_file1.txt my_file2.txt
: efter att ha tagit emot flera filer som indata, sammanfogar detta kommando deras innehåll och visar vad som hände i stdout
.
Om resultatet av filsammansättningen behöver sparas som en ny fil kan du använda operatorn >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Låt oss nu prata om hur man tar bort filer och stoppar processer.
▍Ta bort filer, stoppa processer
rm my_file
: radera fil my_file
.
rm -r my_folder
: tar bort en mapp my_folder
och alla filer och mappar som den innehåller. Flagga -r
indikerar att kommandot kommer att köras i rekursivt läge.
För att förhindra att systemet ber om bekräftelse varje gång en fil eller mapp raderas, använd flaggan -f
.
kill 012345
: Stoppar den angivna körprocessen, vilket ger den tid att graciöst stänga av.
kill -9 012345
: Tvångsavbryter den angivna körprocessen. Visa flagga -s SIGKILL
betyder detsamma som flaggan -9
.
▍Sök
Du kan använda olika kommandon för att söka efter data. Särskilt - grep
, ag
и ack
. Låt oss börja vår bekantskap med dessa kommandon med grep
. Detta är ett beprövat, pålitligt kommando, som dock är långsammare än andra och inte lika bekvämt att använda som de är.
grep kommando
grep my_regex my_file
: sökningar my_regex
в my_file
. Om en matchning hittas returneras hela strängen för varje matchning. Standard my_regex
behandlas som ett reguljärt uttryck.
grep -i my_regex my_file
: Sökningen utförs på ett skiftlägesokänsligt sätt.
grep -v my_regex my_file
: returnerar alla rader som inte innehåller my_regex
. Flagga -v
betyder inversion, den liknar operatören NOT
, som finns i många programmeringsspråk.
grep -c my_regex my_file
: Returnerar information om antalet matchningar som finns i filen för sökmönstret.
grep -R my_regex my_folder
: utför en rekursiv sökning i alla filer som finns i den angivna mappen och i mappar som är kapslade i den.
Nu ska vi prata om laget ag
. Hon kom senare grep
, det är snabbare, det är bekvämare att arbeta med det.
ag kommando
ag my_regex my_file
: returnerar information om radnummer, och själva raderna, där matchningar hittades med my_regex
.
ag -i my_regex my_file
: Sökningen utförs på ett skiftlägesokänsligt sätt.
Team ag
bearbeta filen automatiskt .gitignore
och exkluderar från utdata det som finns i mappar eller filer som listas i den filen. Det är väldigt bekvämt.
ag my_regex my_file -- skip-vcs-ignores
: innehållet i automatiska versionskontrollfiler (som .gitignore
) beaktas inte i sökningen.
Dessutom, för att berätta för laget ag
på vilka filsökvägar du vill utesluta från sökningen kan du skapa en fil .agignore
.
I början av det här avsnittet nämnde vi kommandot ack
. Lag ack
и ag
mycket lika, vi kan säga att de är utbytbara till 99 %. Däremot laget ag
fungerar snabbare, det var därför jag beskrev det.
Låt oss nu prata om att arbeta med arkiv.
▍Arkivering
tar my_source_directory
: sammanfogar filer från en mapp my_source_directory
till en enda tarball-fil. Sådana filer är användbara för att överföra stora uppsättningar filer till någon.
tar kommando
Tarball-filerna som genereras av detta kommando är filer med tillägget .tar
(Tape ARchive). Det faktum att ordet "tape" (tape) är dolt i namnet på kommandot och i förlängningen av namnen på de filer som det skapar indikerar hur länge detta kommando har funnits.
tar -cf my_file.tar my_source_directory
: skapar en tarball-fil med namnet my_file.tar
med mappinnehåll my_source_directory
. Flagga -c
står för "skapa" (skapande), och flaggan -f
som "fil" (fil).
Att extrahera filer från .tar
-fil, använd kommandot tar
med flaggor -x
("extrakt", extraktion) och -f
("fil", fil).
tar -xf my_file.tar
: extraherar filer från my_file.tar
till den aktuella arbetskatalogen.
Låt oss nu prata om hur man komprimerar och dekomprimerar .tar
-filer.
tar -cfz my_file.tar.gz my_source_directory
: här med flaggan -z
("zip", komprimeringsalgoritm) anger att algoritmen ska användas för att komprimera filer gzip
(GNUzip). Filkomprimering sparar diskutrymme när sådana filer lagras. Om filerna till exempel är planerade att överföras till andra användare bidrar detta till snabbare nedladdning av sådana filer.
Packa upp filen .tar.gz
du kan lägga till en flagga -z
till kommandot extrahera innehåll .tar
-filer, som vi diskuterade ovan. Det ser ut så här:
tar -xfz my_file.tar.gz
Det bör noteras att laget tar
Det finns många fler användbara flaggor.
Bash alias
Bash-alias (även kallade alias eller förkortningar) är utformade för att skapa förkortade namn på kommandon eller deras sekvenser, vars användning istället för vanliga kommandon påskyndar arbetet. Om du har ett alias bu
, som döljer kommandot python setup.py sdist bdist_wheel
, för att sedan anropa det här kommandot räcker det med att använda detta alias.
För att skapa ett sådant alias, lägg bara till följande kommando till filen ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Om ditt system inte har filen ~/.bash_profile
, då kan du skapa den själv med kommandot touch
. Efter att ha skapat aliaset, starta om terminalen, varefter du kan använda detta alias. I det här fallet ersätter inmatningen av två tecken inmatningen av mer än tre dussin tecken i kommandot, som är avsett för
В ~/.bash_profile
du kan lägga till alias för alla ofta använda kommandon.
▍Resultat
I det här inlägget har vi täckt 21 populära Bash-kommandon och pratat om att skapa kommandoalias. Om du är intresserad av detta ämne -
Kära läsare! Vilka kommandon som är användbara för nybörjare skulle du lägga till de som diskuterades i den här artikeln?
→
Källa: will.com