[bogmærket] Bash for begyndere: 21 nyttige kommandoer

Materialet, hvis oversættelse vi udgiver i dag, er beregnet til dem, der ønsker at mestre Linux-kommandolinjen. Evnen til at bruge dette værktøj effektivt kan spare en masse tid. Vi vil især tale om Bash-skallen og 21 nyttige kommandoer her. Vi vil også tale om, hvordan man bruger kommandoflag og Bash-aliaser til at fremskynde indtastningen af ​​lange instruktioner.

[bogmærket] Bash for begyndere: 21 nyttige kommandoer

Læs også i vores blog en række publikationer om bash-manuskripter

Betingelser

Når du lærer at arbejde med Linux-kommandolinjen, vil du støde på mange begreber, som er nyttige at navigere i. Nogle af dem, som "Linux" og "Unix", eller "shell" og "terminal", er nogle gange forvirrede. Lad os tale om disse og andre vigtige udtryk.

Unix er et populært styresystem, der blev udviklet af Bell Labs i 1970'erne. Hendes kode var lukket.

Linux er det mest populære Unix-lignende operativsystem. Det bruges nu på mange enheder, inklusive computere.

Terminal (terminal) eller terminalemulator er et program, der giver adgang til operativsystemet. Du kan have flere terminalvinduer åbne på samme tid.

shell (shell) er et program, der giver dig mulighed for at sende kommandoer skrevet på et særligt sprog til operativsystemet.

Bash står for Bourne Again Shell. Det er det mest almindelige shell-sprog, der bruges til at interagere med operativsystemet. Bash-skallen er også standard på macOS.

Kommandolinjegrænseflade (Command Line Interface, CLI) er en metode til interaktion mellem en person og en computer, hvor brugeren indtaster kommandoer fra tastaturet, og computeren, der udfører disse kommandoer, viser meddelelser i tekstform for brugeren. CLI'et bruges hovedsageligt til at få opdateret information om visse entiteter, for eksempel om filer, og til at arbejde med filer. Kommandolinjegrænsefladen skal adskilles fra den grafiske brugergrænseflade (GUI), som primært bruger musen. Kommandolinjegrænsefladen omtales ofte blot som kommandolinjen.

Manuskript (script) er et lille program, der indeholder en sekvens af shell-kommandoer. Scripts skrives til filer, de kan bruges gentagne gange. Når du skriver scripts, kan du bruge variabler, conditionals, loops, funktioner og andre funktioner.

Nu hvor vi har dækket de vigtige udtryk, vil jeg påpege, at jeg vil bruge udtrykkene "Bash", "shell" og "kommandolinje" i flæng her, såvel som udtrykkene "mappe" og "mappe".

standard streams, som vi vil bruge her, er standard input (standard input, stdin), standard output (standard output, stdout) og standardfejloutput (standardfejl, stderr).

Hvis i eksemplet kommandoer, der vil blive givet nedenfor, vil du finde noget lignende my_whatever - det betyder, at dette fragment skal erstattes med noget af dit. For eksempel navnet på en fil.

Nu, før vi fortsætter med analysen af ​​de kommandoer, som dette materiale er dedikeret til, lad os tage et kig på deres liste og deres korte beskrivelser.

21 Bash-kommandoer

▍Få information

  • man: Viser brugervejledningen (hjælp) til kommandoen.
  • pwd: viser information om arbejdsbiblioteket.
  • ls: viser indholdet af en mappe.
  • ps: Giver dig mulighed for at se oplysninger om kørende processer.

▍Manipulation af filsystem

  • cd: skift arbejdsmappe.
  • touch: opret en fil.
  • mkdir: opret en mappe.
  • cp: Kopier en fil.
  • mv: Flyt eller slet en fil.
  • ln: opret et link.

▍I/O omdirigering og pipelines

  • <: omdirigere stdin.
  • >: omdirigere stdout.
  • |: sendte output fra én kommando til input fra en anden kommando.

▍Læser filer

  • head: læs begyndelsen af ​​filen.
  • tail: læs slutningen af ​​filen.
  • cat: Læs en fil og udskriv dens indhold til skærmen, eller sammensæt filer.

▍Sletning af filer, stop af processer

  • rm: Slet en fil.
  • kill: stop processen.

▍Søg

  • grep: søg efter information.
  • ag: avanceret kommando til søgning.

▍ Arkivering

  • tar: oprettelse af arkiver og arbejde med dem.

Lad os tale om disse kommandoer mere detaljeret.

Holddetaljer

Til at begynde med, lad os beskæftige os med kommandoerne, hvis resultater er udstedt i formularen stdout. Normalt vises disse resultater i et terminalvindue.

▍Få information

man command_name: Vis kommandoguiden, dvs. hjælpeoplysninger.

pwd: Vis stien til den aktuelle arbejdsmappe. I løbet af arbejdet med kommandolinjen skal brugeren ofte finde ud af præcis, hvor i systemet han er.

ls: Vis indholdet af en mappe. Denne kommando bruges også ret ofte.

ls -a: vis skjulte filer. flag anvendt her -a hold ls. Brugen af ​​flag hjælper med at tilpasse kommandoernes adfærd.

ls -l: Vis detaljerede oplysninger om filer.

Bemærk at flag kan kombineres. For eksempel - sådan her: ls -al.

ps: Se kørende processer.

ps -e: Vis information om alle kørende processer, ikke kun dem, der er knyttet til den aktuelle brugerskal. Denne kommando bruges ofte i denne form.

▍Manipulation af filsystem

cd my_directory: skift arbejdsmappe til my_directory. For at flytte et niveau op i mappetræet, brug my_directory relativ vej ../.

[bogmærket] Bash for begyndere: 21 nyttige kommandoer
cd kommando

touch my_file: oprettelse af fil my_file ad den givne vej.

mkdir my_directory: Opret en mappe my_directory ad den givne vej.

mv my_file target_directory: flyt fil my_file til en mappe target_directory. Når du angiver målmappen, skal du bruge den absolutte sti til den (og ikke en konstruktion som ../).

hold mvkan også bruges til at omdøbe filer eller mapper. For eksempel kan det se sådan ud:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: Opret en kopi af en fil my_source_file og læg det i en mappe target_directory.

ln -s my_source_file my_target_file: opret et symbolsk link my_target_file pr fil my_source_file. Hvis du ændrer linket, ændres den originale fil også.

Hvis filen my_source_file vil blive slettet, så my_target_file vil forblive. Flag -s hold ln giver dig mulighed for at oprette links til mapper.

Lad os nu tale om I/O-omdirigering og pipelines.

▍I/O omdirigering og pipelines

my_command < my_file: erstatter standardinputfilbeskrivelsen (stdin) pr. fil my_file. Dette kan være nyttigt, hvis kommandoen venter på input fra tastaturet, og disse data allerede er gemt i en fil.

my_command > my_file: omdirigerer resultaterne af kommandoen, dvs. hvad der normalt ville gå ind i stdout og output til skærmen til en fil my_file. Hvis filen my_file eksisterer ikke - det er skabt. Hvis filen eksisterer, overskrives den.

For eksempel efter at have udført kommandoen ls > my_folder_contents.txt en tekstfil vil blive oprettet indeholdende en liste over, hvad der er i den aktuelle arbejdsmappe.

Hvis i stedet for symbolet > bruge konstruktionen >>, så forudsat at filen, som kommandoens output er omdirigeret til, eksisterer, vil denne fil ikke blive overskrevet. Dataene vil blive tilføjet til slutningen af ​​denne fil.

Lad os nu tage et kig på datapipelinebehandling.

[bogmærket] Bash for begyndere: 21 nyttige kommandoer
Outputtet fra en kommando føres til input fra en anden kommando. Det er som at forbinde et rør med et andet

first_command | second_command: transportør symbol, |, bruges til at sende output fra en kommando til en anden kommando. Hvad kommandoen i venstre side af den beskrevne struktur sender til stdout, Fald ind stdin kommando til højre for pipeline-symbolet.

På Linux kan data overføres ved hjælp af næsten enhver velformet kommando. Det siges ofte, at alt i Linux er en pipeline.

Du kan sammenkæde flere kommandoer ved hjælp af pipeline-symbolet. Det ser sådan ud:

first_command | second_command | third_command

[bogmærket] Bash for begyndere: 21 nyttige kommandoer
En pipeline med flere kommandoer kan sammenlignes med en pipeline

Bemærk, at når kommandoen til venstre for symbolet |, udsender noget til stdout, hvad hun udsender er umiddelbart tilgængelig som stdin andet hold. Det vil sige, det viser sig, at vi ved hjælp af pipeline har at gøre med parallel udførelse af kommandoer. Nogle gange kan dette føre til uventede resultater. Detaljer om dette kan læses her.

Lad os nu tale om at læse data fra filer og vise dem på skærmen.

▍Læser filer

head my_file: læser linjer fra begyndelsen af ​​en fil og udskriver dem til skærmen. Du kan ikke kun læse indholdet af filerne, men også hvad kommandoerne udlæses i stdinbruger denne kommando som en del af pipelinen.

tail my_file: læser linjer fra slutningen af ​​filen. Denne kommando kan også bruges i en pipeline.

[bogmærket] Bash for begyndere: 21 nyttige kommandoer
Hoved (hoved) er foran, og hale (hale) er bagved

Hvis du arbejder med data ved hjælp af pandas-biblioteket, så kommandoerne head и tail burde være bekendt for dig. Hvis dette ikke er tilfældet, så tag et kig på ovenstående figur, og du vil nemt huske dem.

Overvej andre måder at læse filer på, lad os tale om kommandoen cat.

Team cat enten udskriver indholdet af en fil til skærmen eller sammenkæder flere filer. Det afhænger af, hvor mange filer der sendes til denne kommando, når den kaldes.

[bogmærket] Bash for begyndere: 21 nyttige kommandoer
kat kommando

cat my_one_file.txt: når en enkelt fil sendes til denne kommando, udsender den den til stdout.

Hvis du giver den to filer eller flere filer, opfører den sig anderledes.

cat my_file1.txt my_file2.txt: Efter at have modtaget flere filer som input, sammenkæder denne kommando deres indhold og viser, hvad der skete i stdout.

Hvis resultatet af filsammenkædning skal gemmes som en ny fil, kan du bruge operatoren >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Lad os nu tale om, hvordan man sletter filer og stopper processer.

▍Sletning af filer, stop af processer

rm my_file: slet fil my_file.

rm -r my_folder: sletter en mappe my_folder og alle de filer og mapper, den indeholder. Flag -r angiver, at kommandoen kører i rekursiv tilstand.

For at forhindre systemet i at bede om bekræftelse, hver gang en fil eller mappe slettes, skal du bruge flaget -f.

kill 012345: Stopper den specificerede kørende proces, hvilket giver den tid til at lukke ned.

kill -9 012345: Tvang afslutter den specificerede kørende proces. Se flag -s SIGKILL betyder det samme som flaget -9.

▍Søg

Du kan bruge forskellige kommandoer til at søge efter data. I særdeleshed - grep, ag и ack. Lad os starte vores bekendtskab med disse kommandoer med grep. Dette er en gennemtestet, pålidelig kommando, som dog er langsommere end andre og ikke så praktisk at bruge som de er.

[bogmærket] Bash for begyndere: 21 nyttige kommandoer
grep kommando

grep my_regex my_file: søgninger my_regex в my_file. Hvis der findes et match, returneres hele strengen for hvert match. Standard my_regex behandles som et regulært udtryk.

grep -i my_regex my_file: Søgningen udføres på en måde, hvor der ikke skelnes mellem store og små bogstaver.

grep -v my_regex my_file: returnerer alle rækker, der ikke indeholder my_regex. Flag -v betyder inversion, det ligner operatøren NOT, findes på mange programmeringssprog.

grep -c my_regex my_file: Returnerer oplysninger om antallet af matches fundet i filen for søgemønsteret.

grep -R my_regex my_folder: udfører en rekursiv søgning i alle filer, der er placeret i den angivne mappe og i mapperne indlejret i den.

Lad os nu tale om holdet ag. Hun kom senere grep, det er hurtigere, det er mere bekvemt at arbejde med det.

[bogmærket] Bash for begyndere: 21 nyttige kommandoer
ag kommando

ag my_regex my_file: returnerer oplysninger om linjenumre og selve linjerne, hvor der blev fundet match med my_regex.

ag -i my_regex my_file: Søgningen udføres på en måde, hvor der ikke skelnes mellem store og små bogstaver.

Team ag behandle filen automatisk .gitignore og udelukker fra outputtet, hvad der findes i de mapper eller filer, der er angivet i den pågældende fil. Det er meget behageligt.

ag my_regex my_file -- skip-vcs-ignores: indholdet af automatiske versionskontrolfiler (som .gitignore) tages der ikke hensyn til i søgningen.

Derudover for at fortælle holdet ag på hvilke filstier du vil udelukke fra søgningen, kan du oprette en fil .agignore.

I begyndelsen af ​​dette afsnit nævnte vi kommandoen ack. Hold ack и ag meget ens, kan vi sige, at de er 99% udskiftelige. Dog holdet ag virker hurtigere, derfor beskrev jeg det.

Lad os nu tale om at arbejde med arkiver.

▍ Arkivering

tar my_source_directory: sammenkæder filer fra en mappe my_source_directory i en enkelt tarball-fil. Sådanne filer er nyttige til at overføre store sæt filer til nogen.

[bogmærket] Bash for begyndere: 21 nyttige kommandoer
tar kommando

Tarball-filerne, der genereres af denne kommando, er filer med udvidelsen .tar (Båndarkiv). Det faktum, at ordet "tape" (tape) er skjult i navnet på kommandoen og i forlængelsen af ​​navnene på de filer, det opretter, indikerer, hvor længe denne kommando har eksisteret.

tar -cf my_file.tar my_source_directory: opretter en tarball-fil med navnet my_file.tar med mappeindhold my_source_directory. Flag -c står for "skabe" (skabelse), og flaget -f som "fil" (fil).

Til at udtrække filer fra .tar-fil, brug kommandoen tar med flag -x ("udtræk", ekstraktion) og -f ("fil", fil).

tar -xf my_file.tar: udtrækker filer fra my_file.tar til den aktuelle arbejdsmappe.

Lad os nu tale om, hvordan man komprimerer og dekomprimerer .tar-filer.

tar -cfz my_file.tar.gz my_source_directory: her bruger flaget -z ("zip", komprimeringsalgoritme) angiver, at algoritmen skal bruges til at komprimere filer gzip (GNUzip). Filkomprimering sparer diskplads ved lagring af sådanne filer. Hvis filerne for eksempel planlægges at blive overført til andre brugere, bidrager det til hurtigere download af sådanne filer.

Unzip fil .tar.gz du kan tilføje et flag -z til kommandoen udtræk indhold .tar-filer, som vi diskuterede ovenfor. Det ser sådan ud:

tar -xfz my_file.tar.gz
Det skal bemærkes, at holdet tar Der er mange flere nyttige flag.

Bash aliaser

Bash-aliaser (også kaldet aliaser eller forkortelser) er designet til at skabe forkortede navne på kommandoer eller deres sekvenser, hvis brug i stedet for almindelige kommandoer fremskynder arbejdet. Hvis du har et alias bu, som skjuler kommandoen python setup.py sdist bdist_wheel, så for at kalde denne kommando, er det nok at bruge dette alias.

For at oprette et sådant alias skal du blot tilføje følgende kommando til filen ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Hvis dit system ikke har filen ~/.bash_profile, så kan du oprette det selv ved hjælp af kommandoen touch. Efter oprettelse af alias, genstart terminalen, hvorefter du kan bruge dette alias. I dette tilfælde erstatter input af to tegn input af mere end tre dusin tegn af kommandoen, som er beregnet til forsamlinger Python-pakker.

В ~/.bash_profile du kan tilføje aliaser for alle ofte brugte kommandoer.

▍Resultater

I dette indlæg har vi dækket 21 populære Bash-kommandoer og talt om at oprette kommandoaliasser. Hvis du er interesseret i dette emne - her en række publikationer dedikeret til Bash. Her Du kan finde en pdf-version af disse publikationer. Også, hvis du vil lære Bash, så husk, at øvelse er nøglen, som med ethvert andet programmeringssystem.

Kære læsere! Hvilke kommandoer, der er nyttige for begyndere, ville du tilføje til dem, der blev diskuteret i denne artikel?

Læs også i vores blog en række publikationer om bash-manuskripter

[bogmærket] Bash for begyndere: 21 nyttige kommandoer

Kilde: www.habr.com

Tilføj en kommentar