Materialet, oversettelsen av som vi publiserer i dag, er beregnet på de som ønsker å mestre Linux-kommandolinjen. Evnen til å bruke dette verktøyet effektivt kan spare mye tid. Spesielt vil vi snakke om Bash-skallet og 21 nyttige kommandoer her. Vi vil også snakke om hvordan du bruker kommandoflagg og Bash-aliaser for å fremskynde skrivingen av lange instruksjoner.
→
Vilkår
Når du lærer å jobbe med Linux-kommandolinjen, vil du møte mange konsepter som er nyttige å navigere. Noen av dem, som "Linux" og "Unix", eller "shell" og "terminal", er noen ganger forvirrede. La oss snakke om disse og andre viktige begreper.
Nå som vi har dekket de viktige begrepene, vil jeg påpeke at jeg vil bruke begrepene "Bash", "shell" og "kommandolinje" om hverandre her, i tillegg til begrepene "katalog" og "mappe".
standard stdin
), standard utgang (standard utgang, stdout
) og standard feilutgang (standardfeil, stderr
).
Hvis i eksempelkommandoene som vil bli gitt nedenfor, vil du finne noe lignende my_whatever
- Dette betyr at dette fragmentet må erstattes med noe av ditt. For eksempel navnet på en fil.
Nå, før vi fortsetter med analysen av kommandoene som dette materialet er dedikert til, la oss ta en titt på listen deres og deres korte beskrivelser.
21 Bash-kommandoer
▍ Få informasjon
man
: Viser brukerveiledningen (hjelpen) for kommandoen.pwd
: viser informasjon om arbeidskatalogen.ls
: viser innholdet i en katalog.ps
: Lar deg se informasjon om kjørende prosesser.
▍Manipering av filsystem
cd
: endre arbeidskatalog.touch
: opprette en fil.mkdir
: opprett en katalog.cp
: Kopier en fil.mv
: Flytt eller slett en fil.ln
: opprette en lenke.
▍I/O omdirigering og rørledninger
<
: omdirigerestdin
.>
: omdirigerestdout
.|
: sendte utdataene fra en kommando til inngangen til en annen kommando.
▍ Lese filer
head
: les begynnelsen av filen.tail
: les slutten av filen.cat
: Les en fil og skriv ut innholdet på skjermen, eller sett sammen filer.
▍Slette filer, stoppe prosesser
rm
: Slett en fil.kill
: stopp prosessen.
▍Søk
grep
: søk etter informasjon.ag
: avansert kommando for søk.
▍ Arkivering
tar
: lage arkiver og jobbe med dem.
La oss snakke om disse kommandoene mer detaljert.
Lagdetaljer
Til å begynne med, la oss håndtere kommandoene, hvis resultater utstedes i skjemaet stdout
. Vanligvis vises disse resultatene i et terminalvindu.
▍ Få informasjon
man command_name
: Vis kommandoveiledningen, dvs. hjelpeinformasjon.
pwd
: Vis banen til gjeldende arbeidskatalog. I løpet av arbeidet med kommandolinjen må brukeren ofte finne ut nøyaktig hvor i systemet han er.
ls
: viser innholdet i en katalog. Denne kommandoen brukes også ganske ofte.
ls -a
: vis skjulte filer. flagg brukt her -a
kommandoer ls
. Bruken av flagg bidrar til å tilpasse oppførselen til kommandoene.
ls -l
: Vis detaljert informasjon om filer.
Merk at flagg kan kombineres. For eksempel - slik: ls -al
.
ps
: Se kjørende prosesser.
ps -e
: Vis informasjon om alle kjørende prosesser, ikke bare de som er knyttet til gjeldende brukerskall. Denne kommandoen brukes ofte i denne formen.
▍Manipering av filsystem
cd my_directory
: endre arbeidskatalog til my_directory
. For å gå opp ett nivå i katalogtreet, bruk my_directory
relativ vei ../
.
cd kommando
touch my_file
: filoppretting my_file
langs den gitte veien.
mkdir my_directory
: opprett en mappe my_directory
langs den gitte veien.
mv my_file target_directory
: flytt fil my_file
til mappe target_directory
. Når du spesifiserer målkatalogen, må du bruke den absolutte banen til den (og ikke en konstruksjon som ../
).
team mv
kan også brukes til å gi nytt navn til filer eller mapper. For eksempel kan det se slik ut:
mv my_old_file_name.jpg my_new_file_name.jpg
: Lag en kopi av en fil
cp my_source_file target_directorymy_source_file
og legg den i en mappe target_directory
.
ln -s my_source_file my_target_file
: lag en symbolsk lenke my_target_file
per fil my_source_file
. Hvis du endrer lenken, endres også den opprinnelige filen.
Hvis filen my_source_file
vil da bli slettet my_target_file
vil forbli. Flagg -s
kommandoer ln
lar deg lage lenker for kataloger.
La oss nå snakke om I/O-omdirigering og rørledninger.
▍I/O omdirigering og rørledninger
my_command < my_file
: erstatter standard inndatafilbeskrivelse (stdin
) per fil my_file
. Dette kan være nyttig hvis kommandoen venter på inndata fra tastaturet, og disse dataene allerede er lagret i en fil.
my_command > my_file
: omdirigerer resultatene av kommandoen, det vil si det som normalt vil gå inn i stdout
og sende ut til skjermen, til en fil my_file
. Hvis filen my_file
eksisterer ikke - den er skapt. Hvis filen eksisterer, overskrives den.
For eksempel etter å ha utført kommandoen ls > my_folder_contents.txt
en tekstfil vil bli opprettet som inneholder en liste over hva som er i gjeldende arbeidskatalog.
Hvis i stedet for symbolet >
bruke konstruksjonen >>
, så, forutsatt at filen som utdataene fra kommandoen er omdirigert til eksisterer, vil denne filen ikke bli overskrevet. Dataene vil bli lagt til på slutten av denne filen.
La oss nå ta en titt på datapipeline-behandling.
Utdata fra en kommando mates inn i inngangen til en annen kommando. Det er som å koble et rør til et annet
first_command | second_command
: transportbånd symbol, |
, brukes til å sende utdata fra en kommando til en annen kommando. Hva kommandoen på venstre side av den beskrevne strukturen sender til stdout
, Fall inn i stdin
kommandoen til høyre for pipeline-symbolet.
På Linux kan data overføres ved å bruke omtrent hvilken som helst velformet kommando. Det sies ofte at alt i Linux er en pipeline.
Du kan lenke flere kommandoer ved å bruke pipeline-symbolet. Det ser slik ut:
first_command | second_command | third_command
En pipeline med flere kommandoer kan sammenlignes med en pipeline
Merk at når kommandoen til venstre for symbolet |
, utganger noe til stdout
, hva hun gir ut er umiddelbart tilgjengelig som stdin
andre lag. Det vil si at det viser seg at ved bruk av pipeline har vi å gjøre med parallell utførelse av kommandoer. Noen ganger kan dette føre til uventede resultater. Detaljer om dette kan leses
La oss nå snakke om å lese data fra filer og vise dem på skjermen.
▍ Lese filer
head my_file
: leser linjer fra begynnelsen av en fil og skriver dem ut på skjermen. Du kan ikke bare lese innholdet i filene, men også hva kommandoene sendes ut i stdin
bruker denne kommandoen som en del av rørledningen.
tail my_file
: leser linjer fra slutten av filen. Denne kommandoen kan også brukes i en pipeline.
Hode (hode) er foran, og hale (hale) er bak
Hvis du jobber med data ved hjelp av pandas-biblioteket, så kommandoene head
и tail
bør være kjent for deg. Hvis dette ikke er tilfelle, ta en titt på figuren ovenfor, og du vil lett huske dem.
Vurder andre måter å lese filer på, la oss snakke om kommandoen cat
.
Lag cat
skriver enten ut innholdet i en fil til skjermen, eller setter sammen flere filer. Det avhenger av hvor mange filer som sendes til denne kommandoen når den kalles.
kattekommando
cat my_one_file.txt
: når en enkelt fil sendes til denne kommandoen, sendes den ut til stdout
.
Hvis du gir den to filer eller flere filer, oppfører den seg annerledes.
cat my_file1.txt my_file2.txt
: etter å ha mottatt flere filer som input, setter denne kommandoen sammen innholdet og viser hva som skjedde i stdout
.
Hvis resultatet av filsammenkoblingen må lagres som en ny fil, kan du bruke operatoren >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
La oss nå snakke om hvordan du sletter filer og stopper prosesser.
▍Slette filer, stoppe prosesser
rm my_file
: slett fil my_file
.
rm -r my_folder
: sletter en mappe my_folder
og alle filene og mappene den inneholder. Flagg -r
indikerer at kommandoen kjøres i rekursiv modus.
For å forhindre at systemet ber om bekreftelse hver gang en fil eller mappe slettes, bruk flagget -f
.
kill 012345
: Stopper den spesifiserte kjøreprosessen, og gir den tid til å slå seg elegant av.
kill -9 012345
: Tvangsavslutter den angitte kjøreprosessen. Se flagget -s SIGKILL
betyr det samme som flagget -9
.
▍Søk
Du kan bruke forskjellige kommandoer for å søke etter data. Spesielt - grep
, ag
и ack
. La oss begynne å bli kjent med disse kommandoene med grep
. Dette er en tidstestet, pålitelig kommando, som imidlertid er tregere enn andre og ikke så praktisk å bruke som de er.
grep kommando
grep my_regex my_file
: søk my_regex
в my_file
. Hvis en treff blir funnet, returneres hele strengen for hvert treff. Misligholde my_regex
behandles som et regulært uttrykk.
grep -i my_regex my_file
: Søket utføres på en måte som ikke skiller mellom store og små bokstaver.
grep -v my_regex my_file
: returnerer alle rader som ikke inneholder my_regex
. Flagg -v
betyr inversjon, det ligner operatøren NOT
, finnes i mange programmeringsspråk.
grep -c my_regex my_file
: Returnerer informasjon om antall treff funnet i filen for søkemønsteret.
grep -R my_regex my_folder
: utfører et rekursivt søk i alle filer som ligger i den angitte mappen og i mappene som er nestet i den.
La oss nå snakke om laget ag
. Hun kom senere grep
, det er raskere, det er mer praktisk å jobbe med det.
ag kommando
ag my_regex my_file
: returnerer informasjon om linjenummer, og selve linjene, der det ble funnet samsvar med my_regex
.
ag -i my_regex my_file
: Søket utføres på en måte som ikke skiller mellom store og små bokstaver.
Lag ag
behandle filen automatisk .gitignore
og ekskluderer fra utdataene det som finnes i mappene eller filene som er oppført i den filen. Det er veldig behagelig.
ag my_regex my_file -- skip-vcs-ignores
: innholdet i automatiske versjonskontrollfiler (som .gitignore
) er ikke tatt med i søket.
I tillegg, for å fortelle laget ag
på hvilke filbaner du vil ekskludere fra søket, kan du opprette en fil .agignore
.
I begynnelsen av denne delen nevnte vi kommandoen ack
. Lag ack
и ag
veldig like, vi kan si at de er 99% utskiftbare. Imidlertid laget ag
fungerer raskere, det er derfor jeg beskrev det.
La oss nå snakke om å jobbe med arkiver.
▍ Arkivering
tar my_source_directory
: kobler sammen filer fra en mappe my_source_directory
i en enkelt tarball-fil. Slike filer er nyttige for å overføre store sett med filer til noen.
tar kommando
Tarball-filene som genereres av denne kommandoen er filer med utvidelsen .tar
(Båndarkiv). Det faktum at ordet "tape" (tape) er skjult i navnet på kommandoen og i forlengelsen av navnene på filene den oppretter indikerer hvor lenge denne kommandoen har eksistert.
tar -cf my_file.tar my_source_directory
: oppretter en tarball-fil med navnet my_file.tar
med mappeinnhold my_source_directory
. Flagg -c
står for "skape" (skapelse), og flagget -f
som "fil" (fil).
For å trekke ut filer fra .tar
-fil, bruk kommandoen tar
med flagg -x
("ekstraksjon", utvinning) og -f
("fil", fil).
tar -xf my_file.tar
: trekker ut filer fra my_file.tar
til gjeldende arbeidskatalog.
La oss nå snakke om hvordan du komprimerer og dekomprimerer .tar
-filer.
tar -cfz my_file.tar.gz my_source_directory
: her bruker flagget -z
("zip", komprimeringsalgoritme) indikerer at algoritmen skal brukes til å komprimere filer gzip
(GNUzip). Filkomprimering sparer diskplass når du lagrer slike filer. Dersom filene er planlagt for eksempel å overføres til andre brukere, bidrar dette til raskere nedlasting av slike filer.
Pakk ut filen .tar.gz
du kan legge til et flagg -z
til kommandoen extract content .tar
-filer, som vi diskuterte ovenfor. Det ser slik ut:
tar -xfz my_file.tar.gz
Det skal bemerkes at laget tar
Det er mange flere nyttige flagg.
Bash-aliaser
Bash-aliaser (også kalt aliaser eller forkortelser) er designet for å lage forkortede navn på kommandoer eller deres sekvenser, hvis bruk i stedet for vanlige kommandoer fremskynder arbeidet. Hvis du har et alias bu
, som skjuler kommandoen python setup.py sdist bdist_wheel
, så for å kalle denne kommandoen, er det nok å bruke dette aliaset.
For å lage et slikt alias, legg bare til følgende kommando til filen ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Hvis systemet ditt ikke har filen ~/.bash_profile
, så kan du lage den selv ved å bruke kommandoen touch
. Etter å ha opprettet aliaset, start terminalen på nytt, deretter kan du bruke dette aliaset. I dette tilfellet erstatter inntastingen av to tegn inntastingen av mer enn tre dusin tegn i kommandoen, som er ment for
В ~/.bash_profile
du kan legge til aliaser for alle ofte brukte kommandoer.
▍Resultater
I dette innlegget har vi dekket 21 populære Bash-kommandoer og snakket om å lage kommandoaliaser. Hvis du er interessert i dette emnet -
Kjære lesere! Hvilke kommandoer som er nyttige for nybegynnere vil du legge til de som ble diskutert i denne artikkelen?
→
Kilde: www.habr.com