Materialet, vi offentliggør i dag, er beregnet til dem, der ønsker at mestre kommandolinjen i Linux. At være i stand til effektivt at bruge dette værktøj kan spare betydelig tid. Især vil vi tale om Bash-skallen og 21 nyttige kommandoer. Vi vil også diskutere, hvordan man bruger kommando-flags og bash-aliaser, som gør det muligt at fremskynde indtastningen af lange instruktioner.
→
Termer
Når du lærer at arbejde med kommandolinjen i Linux, vil du støde på mange begreber, som det er nyttigt at forstå. Nogle af dem, såsom "Linux" og "Unix", eller "kommandoskallen" og "terminalen", bliver nogle gange forvekslet. Lad os tale om disse og andre vigtige termer.
— det er et populært operativsystem, der blev udviklet af Bell Labs i 1970'erne. Dets kode var lukket.
— det er det mest populære Unix-lignende operativsystem. Det anvendes i dag på mange enheder, herunder computere.
(terminal) eller terminalemulator — det er et program, der giver adgang til operativsystemet. Man kan åbne flere terminalvinduer på samme tid.
(shell) — det er et program, der giver mulighed for at sende kommandoer til operativsystemet, skrevet på et specielt sprog.
står for Bourne Again SHell. Det er det mest udbredte kommandoskalsprog, der bruges til at interagere med operativsystemet. Desuden bruges Bash-skallen som standard i macOS.
(Command Line Interface, CLI) — det er en måde, hvorpå mennesker og computere interagerer, hvor brugeren indtaster kommandoer via tastaturet, og computeren, når den udfører disse kommandoer, viser tekstbeskeder til brugeren. Primært bruges CLI til at hente friske oplysninger om forskellige enheder, for eksempel filer, og til at arbejde med filer. Kommandolinjegrænsefladen bør adskilles fra den grafiske brugergrænseflade (Graphical User Interface, GUI), hvor der primært bruges musen. Kommandolinjegrænsefladen omtales ofte blot som kommandolinjen.
(script) — et lille program, der indeholder en sekvens af shell-kommandoer. Skripter skrives til filer, hvilket gør dem genanvendelige. Ved skrivning af skripter kan der benyttes variabler, betingede strukturer, sløjfer, funktioner og andre muligheder.
Nu hvor vi har set på vigtige termer, vil jeg bemærke, at jeg her vil bruge termerne "Bash", "skal" og "kommando-linje" som udskiftelige, ligesom begreberne "bibliotek" (directory) og "mappe" (folder).
Standard , som vi her vil bruge — er standard input (standard input, stdin), standard output (standard output, stdout) og standard error (standard error, stderr).
Hvis du i de eksempler på kommandoer, der vil blive præsenteret nedenfor, støder på noget som my_whatever — betyder det, at denne del skal erstattes med noget, du har. For eksempel — filnavn.
Nu, før vi begynder at gennemgå de kommandoer, som dette materiale handler om, lad os tage et kig på listen over dem og deres korte beskrivelser.
21 Bash-kommando
▍Hentning af oplysninger
man: viser brugervejledning (hjælp) til kommandoen.pwd: viser oplysninger om den aktuelle mappe.ls: viser indholdet af mappen.ps: giver mulighed for at se oplysninger om de kørende processer.
▍Manipulation med filsystemet
cd: ændrer den aktuelle mappe.Opret en tom fil med kommandoen: opretter en fil.mkdir: opretter en mappe.cp: kopierer en fil.mv: flytter eller sletter en fil.ln: opretter et link.
▍Omdirigering af input-output og rør
<: omdirigeringstdin.>: omdirigeringstdout.|: omdirigering ved hjælp af et rør, der sender output fra en kommando til inputet af en anden kommando.
▍Læsning af filer
head: læser begyndelsen af en fil.tail: læser slutningen af en fil.cat: læser en fil og viser dens indhold på skærmen eller sammenkæder filer.
▍Sletning af filer, stop af processer
rm: sletter en fil.kill: stopper en proces.
▍Søgning
grep: søger efter information.ag: avanceret kommando til søgning.
▍Arkivering
tar: opretter arkiver og arbejder med dem.
Lad os tale mere om disse kommandoer.
Detaljer om kommandoerne
For at starte, lad os forstå kommandoerne, hvis resultater bliver præsenteret i form af stdout. Normalt vises disse resultater i terminalvinduet.
▍Hentning af oplysninger
man command_name: viser vejledning til kommandoen, det vil sige — referencer.
pwd: viser stien til den nuværende arbejdskatalog. Under brug af kommandolinjen har brugeren ofte brug for at vide, hvor i systemet han/hun befinder sig.
ls: viser indholdet af kataloget. Denne kommando bruges også meget ofte.
ls -a: viser skjulte filer. Her anvendes flaget -a kommandoer ls. Brug af flag hjælper med at tilpasse adfærden af kommandoer.
ls -l: viser detaljerede oplysninger om filer.
Bemærk, at flag kan kombineres. For eksempel - sådan her: ls -al.
ps: viser kørende processer.
ps -e: viser oplysninger om alle kørende processer, ikke kun dem, der er relateret til den nuværende bruger-shell. Denne kommando bruges ofte netop i denne form.
▍Manipulation med filsystemet
cd my_directory: ændrer arbejdskataloget til my_directory. For at gå et niveau op i katalogstrukturen skal du bruge en my_directory relativ sti ../.
![[til bogmærker] Bash for begyndere: 21 nyttige kommandoer](/wp-content/uploads/2019/03/91815e5212c9dfec88a76bc2ab37955f.png)
Kommandoen cd
touch my_file: opretter filen my_file på den angivne sti.
mkdir my_directory: opretter en mappe my_directory på den angivne sti.
mv my_file target_directory: flytter filen my_file til mappen target_directory. Når du angiver den målrettede mappe, skal du bruge den absolutte sti til den (og ikke en konstruktion som ../).
Kommandoen mv, kan desuden også bruges til at omdøbe filer eller mapper. For eksempel kan det se sådan her ud:
mv my_old_file_name.jpg my_new_file_name.jpg: opretter en kopi af filen
cp min_kildefil mål_mappemy_source_file og placerer den i mappen target_directory.
ln -s my_source_file my_target_file: opretter et symbolsk link my_target_file til filen my_source_file. Hvis linket ændres, ændres den oprindelige fil også.
Hvis filen my_source_file slet, vil my_target_file forblive. Flaget -s kommandoer ln giver mulighed for at oprette links også til mapper.
Lad os nu tale om omdirigering af input-output og rørledninger.
▍Omdirigering af input-output og rør
my_command < my_file: erstatter filbeskrivelsen for standard input (stdin) med filen my_file. Dette kan være nyttigt i tilfælde, hvor kommandoen forventer input af nogle data fra tastaturet, og disse data er gemt i en fil på forhånd.
my_command > my_file: omdirigerer resultaterne af kommandoens arbejde, det vil sige det, der normalt går til stdout og vises på skærmen, til filen my_file. Hvis filen my_file ikke eksisterer — oprettes den. Hvis filen eksisterer — overskrives den.
For eksempel, efter udførelsen af kommandoen ls > my_folder_contents.txt vil der blive oprettet en tekstfil, der indeholder en liste over, hvad der er i den nuværende arbejdskatalog.
Hvis du i stedet for symbolet > bruger konstruktionen >>, men hvis der eksisterer en fil, som output fra kommandoen omdirigeres til, vil denne fil ikke blive overskrevet. Data vil blive tilføjet til slutningen af denne fil.
Lad os nu se på pipelining af data.
![[til bogmærker] Bash for begyndere: 21 nyttige kommandoer](/wp-content/uploads/2019/03/dcc4e500b247cb13adb4d64c36c24f88.png)
Det, en kommando udskriver, sendes som input til en anden kommando. Dette er ligesom at forbinde et rør til et andet.
first_command | second_command: pipe-symbolet, |bruger til at sende resultaterne fra én kommando til en anden. Det, som kommandoen til venstre for det beskrevne udtryk sender til stdout, går ind i stdin den kommando, der ligger til højre for pipe-symbolet.
I Linux kan pipelining af data organiseres ved hjælp af stort set enhver korrekt formuleret kommando. Man siger ofte, at alt i Linux er en pipeline.
Ved hjælp af pipe-symbolet kan du kæde flere kommandoer sammen. Det ser således ud:
first_command | second_command | third_command ![[til bogmærker] Bash for begyndere: 21 nyttige kommandoer](/wp-content/uploads/2019/03/1d94b3f04846ef40c072299877c55b1f.png)
En pipeline med flere kommandoer kan sammenlignes med et rørledningssystem.
Bemærk, at når kommandoen til venstre for symbolet |, udskriver noget til stdout, så bliver det, den udskriver, straks gjort tilgængeligt i form af stdin til den anden kommando. Det viser sig, at ved at bruge pipelines har vi med parallel udførelse af kommandoer at gøre. Nogle gange kan dette føre til uventede resultater. Du kan læse mere om det .
Lad os nu tale om at læse data fra filer og om at udskrive dem til skærmen.
▍Læsning af filer
head my_file: læser linjer fra begyndelsen af filen og udskriver dem til skærmen. Du kan ikke kun læse indholdet af filer, men også det, som kommandoer udskriver til stdin, ved at bruge denne kommando som et element i en pipeline.
tail my_file: læser linjer fra slutningen af filen. Denne kommando kan også bruges i en pipeline.
![[til bogmærker] Bash for begyndere: 21 nyttige kommandoer](/wp-content/uploads/2019/03/0dd6e0353a1b5995d4a1228ae2550ad9.png)
Head (hoved) ligger foran, mens tail (hale) ligger bagved.
Hvis du arbejder med data ved hjælp af pandas-biblioteket, så vil kommandoerne head og tail være familiære for dig. Hvis ikke, så kig på det ovenfor, og du vil nemt huske dem.
Lad os se på andre måder at læse filer på, og tale om kommandoen cat.
Kommandoen cat som enten udskriver indholdet af en fil til skærmen eller konkatenerer flere filer. Dette afhænger af, hvor mange filer der er givet til denne kommando ved kald.
![[til bogmærker] Bash for begyndere: 21 nyttige kommandoer](/wp-content/uploads/2019/03/708bea2f5d31e1623e9fd80ff5b576af.png)
Kommandoen cat
cat my_one_file.txt: når denne kommando får én fil, udskriver den den. stdout.
Hvis du sender den to filer eller flere, opfører den sig anderledes.
cat my_file1.txt my_file2.txt: når der er flere filer som input, vil denne kommando sammenkæde deres indhold og vise resultatet i stdout.
Hvis resultatet af filkonkatenationen skal gemmes som en ny fil, kan du bruge operatoren >:
cat my_file1.txt my_file2.txt > my_new_file.txtNu skal vi tale om, hvordan man sletter filer og stopper processer.
▍Sletning af filer, stop af processer
rm my_file: sletter filen my_file.
rm -r my_folder: sletter mappen my_folder og alle filer og mapper, der er indeholdt i den. Flaget -r angiver, at kommandoen vil køre i rekursiv tilstand.
For at systemet ikke skal anmode om bekræftelse ved hver sletning af en fil eller mappe, kan du bruge flaget -f.
kill 012345: stopper den angivne kørende proces og giver den tid til at afslutte korrekt.
kill -9 012345: tvinger den angivne kørende proces til at afslutte. Flaget -s SIGKILL betyder det samme som flaget -9.
▍Søgning
For at søge efter data kan forskellige kommandoer anvendes. Især — grep, ag og ack. Lad os begynde vores bekendtskab med disse kommandoer med grep. Dette er en velafprøvet, pålidelig kommando, der dog er langsommere end de andre og ikke så brugervenlig som dem.
![[til bogmærker] Bash for begyndere: 21 nyttige kommandoer](/wp-content/uploads/2019/03/bc02403dbbd0109f0dfd595eccf239c7.png)
Kommandoen grep
grep my_regex my_file: udfører en søgning efter my_regex i my_file. Når der findes match, returneres hele linjen for hver af dem. Som standard my_regex betegnes som et regulært udtryk.
grep -i my_regex my_file: søgningen udføres uden hensyntagen til tegnsætningen.
grep -v my_regex my_file: returnerer alle linjer, der ikke indeholder my_regex— er den eneste mekanisme, der gør det muligt at arbejde med tjenester eller angive oplysninger om volumenets driver. Desuden er det nemmere at arbejde med dette flag. -v betyder inversion; det minder om operatoren NOT, der findes i mange programmeringssprog.
grep -c my_regex my_file: returnerer oplysninger om antallet af matchende forekomster med den ønskede skabelon, der er fundet i filen.
grep -R my_regex my_folder: udfører en rekursiv søgning i alle filer, der findes i den angivne mappe og i dens underordnede mapper.
Nu skal vi tale om kommandoen ag. Den blev udviklet senere grep, den er hurtigere, og det er lettere at arbejde med den.
![[til bogmærker] Bash for begyndere: 21 nyttige kommandoer](/wp-content/uploads/2019/03/f0eeb1d38a1e9c22a8463858753dedb5.png)
Kommandoen ag
ag my_regex my_file: returnerer oplysninger om linjenumre og selve linjerne, hvor der er fundet match med my_regex.
ag -i my_regex my_file: søgningen udføres uden hensyntagen til tegnsætningen.
Kommandoen ag behandler automatisk filen .gitignore og udelukker fra outputtet det, der findes i mapper eller filer nævnt i denne fil. Det er meget praktisk.
ag my_regex my_file -- skip-vcs-ignores: indholdet af filer i automatiske versionskontrolsystemer (som .gitignore) tages ikke i betragtning ved søgning.
Derudover, for at angive til kommandoen ag hvilke filstier der skal udelades fra søgningen, kan du oprette en fil .agignore.
I begyndelsen af denne sektion nævnte vi kommandoen ack. Kommandoerne ack og ag er meget ens, man kan sige, at de er udskiftelige i 99%. Men kommandoen ag arbejder hurtigere, så jeg har beskrevet netop den.
Lad os nu tale om arbejde med arkiver.
▍Arkivering
tar my_source_directory: kombinerer filer fra mappen my_source_directory til en tarball-fil. Sådanne filer er praktiske til at sende store mængder filer til nogen.
![[til bogmærker] Bash for begyndere: 21 nyttige kommandoer](/wp-content/uploads/2019/03/4531ef1d4084af608fcbe91964a6710b.png)
Kommandoen tar
Tarball-filer, der oprettes med denne kommando, er filer med udvidelsen .tar (Tape ARchive). Det faktum, at der i kommandonavnet og i filnavne-udvidelserne, der oprettes af den, gemmer sig ordet «tape», viser, 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 indholdet af mappen, my_source_directory— er den eneste mekanisme, der gør det muligt at arbejde med tjenester eller angive oplysninger om volumenets driver. Desuden er det nemmere at arbejde med dette flag. -c oversættes til «create» (oprettelse), og flaget -f til «file» (fil).
For at udtrække filer fra .tar-filen, bruges kommandoen tar c med flagene -x («extract», udtrækning) og -f («file», fil).
tar -xf my_file.tar: udtrækker filer fra my_file.tar til den nuværende arbejdsmappe.
Lad os nu tale om, hvordan man komprimerer og udpakker .tar-filer.
tar -cfz my_file.tar.gz my_source_directory: her, med brug af flaget -z (zip, komprimeringsalgoritme) er det angivet, at filerne skal komprimeres med en algoritme gzip (GNU zip). Komprimering af filer sparer diskplads ved opbevaring af sådanne filer. Hvis filerne f.eks. planlægges til at blive sendt til andre brugere, hjælper det med hurtigere download af sådanne filer.
Man kan pakke en fil ud .tar.gz ved at tilføje flaget -z til udtrækningskommandoen for .tar-filerne, som vi har gennemgået ovenfor. Det ser således ud:
tar -xfz my_file.tar.gz
Det skal bemærkes, at kommandoen tar har mange andre nyttige flag.
Bash-aliaser
Bash-aliaser (de kaldes også aliaser eller forkortelser) er beregnet til at skabe forkortede navne for kommandoer eller deres sekvenser, hvis brug i stedet for almindelige kommandoer fremskynder arbejdet. Hvis du for eksempel har et alias bu, som dækker kommandoen python setup.py sdist bdist_wheel, er det nok at bruge dette alias for at kalde kommandoen.
For creating a similar alias, simply add the following command to your file ~/ .bash_profile:
alias bu="python setup.py sdist bdist_wheel" If your system does not have the file ~/ .bash_profile, you can create it yourself using the command Opret en tom fil med kommandoen. After creating the alias, restart the terminal, after which you will be able to use this alias. In this case, entering two characters replaces the input of more than three dozen characters of the command intended for Python packages.
I ~/ .bash_profile You can add aliases for any frequently used commands.
▍Summary
In this material, we examined 21 popular Bash commands and discussed creating aliases for commands. If this topic interests you — a series of publications dedicated to Bash. you can find a pdf version of these publications. Additionally, if you want to master Bash, remember that, as with learning any other software system, practice is important.
Kære læsere! What commands that are useful for beginners would you add to those discussed in this article?
→
Kilde: habr.com
