[gebookmarked] Bash voor beginners: 21 nuttige commando's

Het materiaal, waarvan we de vertaling vandaag publiceren, is bedoeld voor degenen die de Linux-opdrachtregel onder de knie willen krijgen. De mogelijkheid om deze tool effectief te gebruiken kan veel tijd besparen. In het bijzonder zullen we het hier hebben over de Bash-shell en 21 nuttige opdrachten. We zullen ook praten over het gebruik van opdrachtvlaggen en Bash-aliassen om het typen van lange instructies te versnellen.

[gebookmarked] Bash voor beginners: 21 nuttige commando's

Lees ook in onze blog een reeks publicaties over bash-scripts

termen

Terwijl u leert werken met de Linux-opdrachtregel, zult u veel concepten tegenkomen die nuttig zijn bij het navigeren. Sommigen van hen, zoals "Linux" en "Unix", of "shell" en "terminal", worden soms door elkaar gehaald. Laten we het over deze en andere belangrijke termen hebben.

Unix is een populair besturingssysteem dat in de jaren zeventig door Bell Labs werd ontwikkeld. Haar code was gesloten.

Linux is het populairste Unix-achtige besturingssysteem. Het wordt nu op veel apparaten gebruikt, waaronder computers.

Terminal (terminal), of terminalemulator, is een programma dat toegang geeft tot het besturingssysteem. U kunt meerdere terminalvensters tegelijkertijd geopend hebben.

schelp (shell) is een programma waarmee u opdrachten die in een speciale taal zijn geschreven, naar het besturingssysteem kunt sturen.

Slaan staat voor Bourne Again Shell. Het is de meest voorkomende shell-taal die wordt gebruikt voor interactie met het besturingssysteem. Bovendien is de Bash-shell de standaard op macOS.

Opdrachtregelinterface (Command Line Interface, CLI) is een interactiemethode tussen een persoon en een computer, waarbij de gebruiker opdrachten invoert vanaf het toetsenbord, en de computer, die deze opdrachten uitvoert, berichten in tekstvorm weergeeft voor de gebruiker. Het voornaamste gebruik van de CLI is het verkrijgen van actuele informatie over bepaalde entiteiten, zoals bestanden, en het werken met bestanden. De opdrachtregelinterface moet worden onderscheiden van de grafische gebruikersinterface (GUI), die voornamelijk de muis gebruikt. De opdrachtregelinterface wordt vaak eenvoudigweg de opdrachtregel genoemd.

Script (script) is een klein programma dat een reeks shell-opdrachten bevat. Scripts worden naar bestanden geschreven en kunnen herhaaldelijk worden gebruikt. Bij het schrijven van scripts kunt u variabelen, conditionals, loops, functies en andere functies gebruiken.

Nu we de belangrijke termen hebben besproken, wil ik erop wijzen dat ik hier de termen "Bash", "shell" en "opdrachtregel" door elkaar zal gebruiken, evenals de termen "directory" en "map".

standaard stromen, die we hier zullen gebruiken is de standaardinvoer (standaardinvoer, stdin), standaarduitvoer (standaarduitvoer, stdout) en standaardfoutuitvoer (standaardfout, stderr).

Als je in de voorbeeldopdrachten die hieronder worden gegeven, zoiets zult vinden als my_whatever - dit betekent dat dit fragment vervangen moet worden door iets van jou. Bijvoorbeeld de naam van een bestand.

Laten we, voordat we verder gaan met de analyse van de commando's waaraan dit materiaal is gewijd, eens kijken naar hun lijst en hun korte beschrijvingen.

21 Bash-opdrachten

▍Informatie verkrijgen

  • man: Toont de gebruikershandleiding (help) voor de opdracht.
  • pwd: geeft informatie weer over de werkmap.
  • ls: geeft de inhoud van een directory weer.
  • ps: Hiermee kunt u informatie over actieve processen bekijken.

▍Bestandssysteemmanipulatie

  • cd: wijzig de werkmap.
  • touch: maak een bestand.
  • mkdir: maak een map.
  • cp: Kopieer een bestand.
  • mv: een bestand verplaatsen of verwijderen.
  • ln: maak een link.

▍I/O-omleiding en pijplijnen

  • <: omleiden stdin.
  • >: omleiden stdout.
  • |: heeft de uitvoer van het ene commando doorgesluisd naar de invoer van een ander commando.

▍Bestanden lezen

  • head: lees het begin van het bestand.
  • tail: lees einde van bestand.
  • cat: een bestand lezen en de inhoud ervan op het scherm afdrukken, of bestanden samenvoegen.

▍Bestanden verwijderen, processen stoppen

  • rm: een bestand verwijderen.
  • kill: stop het proces.

▍Zoeken

  • grep: zoeken naar informatie.
  • ag: geavanceerde opdracht voor zoeken.

▍Archiveren

  • tar: archieven aanmaken en ermee werken.

Laten we deze opdrachten in meer detail bespreken.

Teamdetails

Laten we om te beginnen de commando's behandelen, waarvan de resultaten in de vorm worden uitgegeven stdout. Meestal verschijnen deze resultaten in een terminalvenster.

▍Informatie verkrijgen

man command_name: de opdrachtgids weergeven, d.w.z. helpinformatie.

pwd: toon het pad naar de huidige werkmap. Tijdens het werken met de opdrachtregel moet de gebruiker vaak precies weten waar hij zich in het systeem bevindt.

ls: toon de inhoud van een directory. Dit commando wordt ook vrij vaak gebruikt.

ls -a: toon verborgen bestanden. vlag hier toegepast -a commando's ls. Het gebruik van vlaggen helpt om het gedrag van de opdrachten aan te passen.

ls -l: gedetailleerde informatie over bestanden weergeven.

Merk op dat vlaggen kunnen worden gecombineerd. Bijvoorbeeld - zoals dit: ls -al.

ps: actieve processen bekijken.

ps -e: informatie weergeven over alle actieve processen, niet alleen de processen die zijn gekoppeld aan de huidige gebruikersshell. Deze opdracht wordt vaak in deze vorm gebruikt.

▍Bestandssysteemmanipulatie

cd my_directory: wijzig de werkmap naar my_directory. Gebruik om één niveau omhoog te gaan in de directorystructuur my_directory relatief pad ../.

[gebookmarked] Bash voor beginners: 21 nuttige commando's
cd-opdracht

touch my_file: bestand aanmaken my_file langs het aangegeven pad.

mkdir my_directory: maak een map my_directory langs het aangegeven pad.

mv my_file target_directory: bestand verplaatsen my_file naar map target_directory. Wanneer u de doelmap opgeeft, moet u het absolute pad ernaartoe gebruiken (en niet een constructie zoals ../).

team mvkan ook worden gebruikt om bestanden of mappen te hernoemen. Het kan er bijvoorbeeld zo uitzien:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: maak een kopie van een bestand my_source_file en plaats het in een map target_directory.

ln -s my_source_file my_target_file: maak een symbolische link my_target_file per bestand my_source_file. Als u de link wijzigt, verandert het originele bestand ook.

Als het bestand my_source_file wordt dan verwijderd my_target_file zal blijven. Vlag -s commando's ln Hiermee kunt u koppelingen voor mappen maken.

Laten we het nu hebben over I/O-omleiding en pijplijnen.

▍I/O-omleiding en pijplijnen

my_command < my_file: vervangt de standaardinvoerbestandsdescriptor (stdin) per bestand my_file. Dit kan handig zijn als de opdracht wacht op invoer van het toetsenbord en deze gegevens al in een bestand zijn opgeslagen.

my_command > my_file: stuurt de resultaten van de opdracht om, d.w.z. wat er normaal gesproken in zou gaan stdout en uitvoer naar het scherm, naar een bestand my_file. Als het bestand my_file bestaat niet - het is gemaakt. Als het bestand bestaat, wordt het overschreven.

Bijvoorbeeld na het uitvoeren van de opdracht ls > my_folder_contents.txt er wordt een tekstbestand gemaakt met een lijst van wat zich in de huidige werkmap bevindt.

Als in plaats van het symbool > gebruik de constructie >>, op voorwaarde dat het bestand waarnaar de uitvoer van de opdracht wordt omgeleid bestaat, zal dit bestand dan niet worden overschreven. De gegevens worden aan het einde van dit bestand toegevoegd.

Laten we nu eens kijken naar de verwerking van gegevenspijplijnen.

[gebookmarked] Bash voor beginners: 21 nuttige commando's
De uitvoer van het ene commando wordt ingevoerd in de invoer van een ander commando. Het is alsof je de ene pijp op de andere aansluit

first_command | second_command: transportbandsymbool, |, wordt gebruikt om de uitvoer van een commando naar een ander commando te sturen. Waar het commando aan de linkerkant van de beschreven structuur naartoe stuurt stdout, Val in stdin opdracht rechts van het pijplijnsymbool.

Op Linux kunnen gegevens worden gepijplijnd met behulp van vrijwel elk goed opgemaakt commando. Er wordt vaak gezegd dat alles in Linux een pijplijn is.

U kunt meerdere opdrachten aan elkaar koppelen met behulp van het pijplijnsymbool. Het ziet er zo uit:

first_command | second_command | third_command

[gebookmarked] Bash voor beginners: 21 nuttige commando's
Een pijplijn met meerdere opdrachten kan worden vergeleken met een pijplijn

Merk op dat wanneer het commando links van het symbool |, voert iets uit stdout, wat ze uitvoert is onmiddellijk beschikbaar als stdin tweede elftal. Dat wil zeggen, het blijkt dat we met behulp van de pijplijn te maken hebben met parallelle uitvoering van opdrachten. Soms kan dit tot onverwachte resultaten leiden. Details hierover zijn te lezen hier.

Laten we het nu hebben over het lezen van gegevens uit bestanden en deze op het scherm weergeven.

▍Bestanden lezen

head my_file: leest regels vanaf het begin van een bestand en drukt deze af op het scherm. U kunt niet alleen de inhoud van de bestanden lezen, maar ook wat de opdrachten opleveren stdingebruik deze opdracht als onderdeel van de pijplijn.

tail my_file: leest regels vanaf het einde van het bestand. Deze opdracht kan ook in een pijplijn worden gebruikt.

[gebookmarked] Bash voor beginners: 21 nuttige commando's
De kop (kop) bevindt zich aan de voorkant en de staart (staart) bevindt zich achteraan

Als u met gegevens werkt met behulp van de Panda's-bibliotheek, dan zijn de commando's head и tail zou je bekend moeten zijn. Als dit niet het geval is, kijk dan eens naar de bovenstaande figuur, dan zul je ze gemakkelijk onthouden.

Overweeg andere manieren om bestanden te lezen, laten we het over de opdracht hebben cat.

Team cat drukt de inhoud van een bestand af op het scherm, of voegt meerdere bestanden samen. Het hangt af van hoeveel bestanden er aan deze opdracht worden doorgegeven wanneer deze wordt aangeroepen.

[gebookmarked] Bash voor beginners: 21 nuttige commando's
kat commando

cat my_one_file.txt: wanneer een enkel bestand aan deze opdracht wordt doorgegeven, wordt het uitgevoerd naar stdout.

Als je hem twee of meer bestanden geeft, gedraagt ​​hij zich anders.

cat my_file1.txt my_file2.txt: nadat ik verschillende bestanden als invoer heb ontvangen, voegt deze opdracht de inhoud ervan samen en wordt weergegeven wat er in is gebeurd stdout.

Als het resultaat van de bestandsaaneenschakeling als een nieuw bestand moet worden opgeslagen, kunt u de operator gebruiken >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Laten we het nu hebben over het verwijderen van bestanden en het stoppen van processen.

▍Bestanden verwijderen, processen stoppen

rm my_file: Verwijder bestand my_file.

rm -r my_folder: verwijdert een map my_folder en alle bestanden en mappen die het bevat. Vlag -r geeft aan dat de opdracht in recursieve modus wordt uitgevoerd.

Om te voorkomen dat het systeem telkens om bevestiging vraagt ​​wanneer een bestand of map wordt verwijderd, gebruikt u de vlag -f.

kill 012345: Stopt het opgegeven actieve proces, waardoor het de tijd krijgt om netjes af te sluiten.

kill -9 012345: beëindigt met geweld het opgegeven actieve proces. Vlag bekijken -s SIGKILL betekent hetzelfde als de vlag -9.

▍Zoeken

U kunt verschillende opdrachten gebruiken om naar gegevens te zoeken. In het bijzonder - grep, ag и ack. Laten we onze kennismaking met deze commando's beginnen met grep. Dit is een beproefde, betrouwbare opdracht, die echter langzamer is dan andere en niet zo handig in gebruik als ze zijn.

[gebookmarked] Bash voor beginners: 21 nuttige commando's
grep-opdracht

grep my_regex my_file: zoekopdrachten my_regex в my_file. Als er een overeenkomst wordt gevonden, wordt voor elke overeenkomst de gehele tekenreeks geretourneerd. Standaard my_regex behandeld als een reguliere expressie.

grep -i my_regex my_file: De zoekopdracht wordt hoofdletterongevoelig uitgevoerd.

grep -v my_regex my_file: retourneert alle rijen die niet bevatten my_regex. Vlag -v betekent inversie, het lijkt op de operator NOT, gevonden in veel programmeertalen.

grep -c my_regex my_file: Retourneert informatie over het aantal overeenkomsten voor het gezochte patroon dat in het bestand is gevonden.

grep -R my_regex my_folder: voert een recursieve zoekopdracht uit in alle bestanden die zich in de opgegeven map bevinden en in de mappen die daarin zijn genest.

Laten we het nu over het team hebben ag. Ze kwam later grep, het is sneller, het is handiger om ermee te werken.

[gebookmarked] Bash voor beginners: 21 nuttige commando's
ag commando

ag my_regex my_file: retourneert informatie over regelnummers en de regels zelf, waarmee overeenkomsten zijn gevonden my_regex.

ag -i my_regex my_file: De zoekopdracht wordt hoofdletterongevoelig uitgevoerd.

Team ag het bestand automatisch verwerken .gitignore en sluit uit de uitvoer uit wat er in de mappen of bestanden in dat bestand staat. Het is zeer comfortabel.

ag my_regex my_file -- skip-vcs-ignores: inhoud van bestanden met automatisch versiebeheer (zoals .gitignore) wordt bij het zoeken niet in aanmerking genomen.

Bovendien, om het team te vertellen ag op welke bestandspaden u wilt uitsluiten van de zoekopdracht, kunt u een bestand aanmaken .agignore.

Aan het begin van deze sectie noemden we het commando ack. Teams ack и ag zeer vergelijkbaar, we kunnen zeggen dat ze voor 99% uitwisselbaar zijn. Echter, de ploeg ag werkt sneller, daarom heb ik het beschreven.

Laten we het nu hebben over het werken met archieven.

▍Archiveren

tar my_source_directory: voegt bestanden uit een map samen my_source_directory in één tarball-bestand. Dergelijke bestanden zijn handig voor het overbrengen van grote sets bestanden naar iemand.

[gebookmarked] Bash voor beginners: 21 nuttige commando's
teer commando

De tarball-bestanden die door deze opdracht worden gegenereerd, zijn bestanden met de extensie .tar (Tape-archief). Het feit dat het woord "tape" (tape) verborgen is in de naam van het commando en in de extensie van de namen van de bestanden die het creëert, geeft aan hoe lang dit commando bestaat.

tar -cf my_file.tar my_source_directory: maakt een tarball-bestand met de naam my_file.tar met mapinhoud my_source_directory. Vlag -c staat voor "create" (creatie), en de vlag -f als "bestand" (bestand).

Om bestanden uit te extraheren .tar-bestand, gebruik de opdracht tar met vlaggen -x ("extract", extractie) en -f ("bestand", bestand).

tar -xf my_file.tar: extraheert bestanden uit my_file.tar naar de huidige werkmap.

Laten we het nu hebben over het comprimeren en decomprimeren .tar-bestanden.

tar -cfz my_file.tar.gz my_source_directory: hier met behulp van de vlag -z ("zip", compressie-algoritme) geeft aan dat het algoritme moet worden gebruikt om bestanden te comprimeren gzip (GNUzip). Bestandscompressie bespaart schijfruimte bij het opslaan van dergelijke bestanden. Als het de bedoeling is dat de bestanden bijvoorbeeld worden overgedragen aan andere gebruikers, draagt ​​dit bij aan het sneller downloaden van dergelijke bestanden.

Bestand uitpakken .tar.gz je kunt een vlag toevoegen -z naar de opdracht inhoud extraheren .tar-bestanden, die we hierboven hebben besproken. Het ziet er zo uit:

tar -xfz my_file.tar.gz
Opgemerkt moet worden dat het team tar Er zijn nog veel meer nuttige vlaggen.

Bash-aliassen

Bash-aliassen (ook wel aliassen of afkortingen genoemd) zijn ontworpen om verkorte namen van opdrachten of hun reeksen te creëren, waarvan het gebruik in plaats van gewone opdrachten het werk versnelt. Als u een alias heeft bu, waarmee de opdracht wordt verborgen python setup.py sdist bdist_wheel, en om deze opdracht aan te roepen, volstaat het om deze alias te gebruiken.

Om een ​​dergelijke alias te maken, voegt u gewoon de volgende opdracht aan het bestand toe ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Als uw systeem het bestand niet heeft ~/.bash_profile, dan kunt u het zelf maken met behulp van de opdracht touch. Nadat u de alias heeft aangemaakt, start u de terminal opnieuw op, waarna u deze alias kunt gebruiken. In dit geval vervangt de invoer van twee tekens de invoer van meer dan drie dozijn tekens van de opdracht waarvoor deze is bedoeld assemblages Python-pakketten.

В ~/.bash_profile u kunt aliassen toevoegen voor veelgebruikte opdrachten.

▍Resultaten

In dit bericht hebben we 21 populaire Bash-opdrachten besproken en gesproken over het maken van opdrachtaliassen. Als u geïnteresseerd bent in dit onderwerp - hier een reeks publicaties gewijd aan Bash. Hier Van deze publicaties kunt u een pdf-versie vinden. Als je Bash wilt leren, onthoud dan dat, net als bij elk ander programmeersysteem, oefenen essentieel is.

Beste lezers! Welke commando's die nuttig zijn voor beginners zou je toevoegen aan de commando's die in dit artikel zijn besproken?

Lees ook in onze blog een reeks publicaties over bash-scripts

[gebookmarked] Bash voor beginners: 21 nuttige commando's

Bron: www.habr.com

Voeg een reactie