[in favorieten] Bash voor beginners: 21 handige commando's

Het materiaal dat we vandaag publiceren is bedoeld voor degenen die de Linux-opdrachtregel willen beheersen. Het effectief gebruiken van dit hulpmiddel kan veel tijd besparen. In het bijzonder zullen we het hebben over de Bash-shell en 21 nuttige commando's. Ook zullen we bespreken hoe je de vlaggen van commando's en Bash-aliasen kunt gebruiken, die het invoeren van lange instructies versnellen.

[in favorieten] Bash voor beginners: 21 handige commando's

→ Lees ook onze blogreeks over bash-scripts.

Termen

Bij het leren werken met de Linux-opdrachtregel kom je veel concepten tegen waarmee het nuttig kan zijn om vertrouwd te raken. Sommige daarvan, zoals 'Linux' en 'Unix', of 'shell' en 'terminal', worden soms door elkaar gehaald. Laten we deze en andere belangrijke termen bespreken.

Unix — is een populair besturingssysteem dat in de jaren '70 is ontwikkeld door Bell Labs. De code was gesloten.

Linux — is het meest populaire Unix-achtige besturingssysteem. Tegenwoordig wordt het op veel apparaten gebruikt, waaronder computers.

Terminal (terminal) of terminalemulator is een programma dat toegang geeft tot het besturingssysteem. Meerdere terminalvensters kunnen tegelijkertijd worden geopend.

Shell (shell) is een programma dat het mogelijk maakt om opdrachten in een specifieke taal naar het besturingssysteem te sturen.

Bash staat voor Bourne Again SHell. Dit is de meest gebruikte shell-taal voor interactie met het besturingssysteem. Bovendien is Bash standaard in gebruik op macOS.

Opdrachtregelinterface (Command Line Interface, CLI) is een manier van interactie tussen mens en computer, waarbij de gebruiker opdrachten vanaf het toetsenbord invoert en de computer die opdrachten uitvoert en tekstberichten voor de gebruiker weergeeft. CLI wordt voornamelijk gebruikt om actuele informatie over bepaalde entiteiten, zoals bestanden, op te vragen en om met bestanden te werken. De opdrachtregelinterface moet worden onderscheiden van de grafische gebruikersinterface (Graphical User Interface, GUI), waarbij voornamelijk de muis wordt gebruikt. De opdrachtregelinterface wordt vaak gewoon de opdrachtregel genoemd.

Script (script) is a small program that contains a sequence of shell commands. Scripts are written to files and can be reused multiple times. When writing scripts, you can use variables, conditional constructions, loops, functions, and other capabilities.

Now that we have covered the important terms, I want to note that here I will use the terms 'Bash', 'shell', and 'command line' interchangeably, as well as the concepts of 'directory' and 'folder'.

Standaard stromen, die we hier zullen gebruiken, zijn standaardinvoer (standard input, stdin), standaarduitvoer (standard output, stdout) en standaardfoutuitvoer (standard error, stderr).

Als je in de voorbeelden van de opdrachten die hieronder worden gegeven, iets tegenkomt zoals my_whatever — dit betekent dat dit fragment moet worden vervangen door iets van jou. Bijvoorbeeld - de naam van het bestand.

Voordat we beginnen met de bespreking van de opdrachten die dit materiaal betreffen, laten we eerst kijken naar hun lijst en korte beschrijvingen.

21 Bash-commando

▍Informatie verkrijgen

  • man: toont de gebruikershandleiding (hulp) voor het commando.
  • pwd: toont informatie over de werkdirectory.
  • ls: toont de inhoud van de directory.
  • ps: geeft informatie over actieve processen.

▍Bestandssysteemmanipulaties

  • cd: verandert de werkdirectory.
  • touch: creëert een bestand.
  • mkdir: creëert een directory.
  • cp: kopieert een bestand.
  • mv: verplaatst of verwijdert een bestand.
  • ln: maakt een link.

▍Invoer- en uitvoerrichting en pijpen

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

▍Bestanden lezen

  • head: leest het begin van een bestand.
  • tail: leest het einde van een bestand.
  • cat: leest een bestand en toont de inhoud op het scherm of voegt bestanden samen.

▍Bestanden verwijderen, processen stoppen

  • rm: verwijdert een bestand.
  • kill: stopt een proces.

▍Zoeken

  • grep: zoekt naar informatie.
  • ag: geavanceerd commando voor zoeken.

▍Archivering

  • tar: maakt archieven en werkt ermee.

Laten we deze commando's in detail bespreken.

Details over de commando's

Laten we beginnen met de commando's waarvan de resultaten worden weergegeven in de vorm van stdout. Gewoonlijk verschijnen deze resultaten in het terminalvenster.

▍Informatie verkrijgen

man command_name: toont de handleiding voor het commando, dat wil zeggen - referentie-informatie.

pwd: toont het pad naar de huidige werkdirectory op het scherm. Tijdens het werken met de commandoregel moet de gebruiker vaak weten waar hij zich precies in het systeem bevindt.

ls: toont de inhoud van een directory. Deze opdracht wordt ook vaak gebruikt.

ls -a: toont verborgen bestanden. Hier is de vlag toegepast -a van de opdrachten. ls. Het gebruik van vlaggen helpt het gedrag van de opdrachten aan te passen.

ls -l: toont gedetailleerde informatie over bestanden.

Let op dat vlaggen gecombineerd kunnen worden. Bijvoorbeeld als volgt: ls -al.

ps: bekijkt actieve processen.

ps -e: toont informatie over alle actieve processen, en niet alleen over die verbonden zijn met de huidige gebruikersshell. Deze opdracht wordt vaak in deze vorm gebruikt.

▍Bestandssysteemmanipulaties

cd my_directory: verandert de werkdirectory naar my_directory.Om één niveau hoger in de directorystructuur te gaan, gebruik je een my_directory. relatief pad. ../.

[in favorieten] Bash voor beginners: 21 handige commando's
De cd-opdracht

touch my_file: maakt het bestand my_file aan op het opgegeven pad.

mkdir my_directory: maakt een map aan. my_directory. aan op het opgegeven pad.

mv my_file target_directory: verplaatst het bestand my_file kopiëren naar de map target_directory.Bij het opgeven van de doeldirectory moet je het absolute pad naar deze directory gebruiken (en niet een constructie zoals ../).

De opdracht mv, bovendien kan dit worden gebruikt om bestanden of mappen te hernoemen. Dit kan er als volgt uitzien:

mv my_old_file_name.jpg my_new_file_name.jpg
cp mijn_source_bestand doeldirectory
: maakt een kopie van het bestand my_source_file en plaatst deze in de map target_directory..

ln -s my_source_file my_target_file: maakt een symbolische link my_target_file naar het bestand. my_source_fileAls de link wordt gewijzigd, verandert ook het oorspronkelijke bestand.

Als het bestand my_source_file wordt verwijderd, blijft my_target_file bestaan. De vlag -s van de opdrachten. ln maakt het mogelijk om ook links voor directories te creëren.

Laten we nu praten over invoer- en uitvoerredirectie en pijpen.

▍Invoer- en uitvoerrichting en pijpen

my_command < my_file: vervangt de bestandsdescriptor van de standaardinvoer (stdin) door het bestand my_file. Dit kan nuttig zijn als de opdracht om invoer van het toetsenbord vraagt, terwijl deze gegevens al in een bestand zijn opgeslagen.

my_command > my_file: leidt de uitvoer van de opdracht om, dat wil zeggen wat normaal gesproken in de stdout komt en op het scherm wordt weergegeven, naar het bestand my_file. Als het bestand my_file niet bestaat, wordt het aangemaakt. Als het bestand bestaat, wordt het overschreven.

Bijvoorbeeld, na het uitvoeren van de opdracht ls > my_folder_contents.txt zal er een tekstbestand worden aangemaakt met een lijst van hetgeen zich in de huidige werkdirectory bevindt.

Als je in plaats van het symbool > de constructie gebruikt >>, mits de voorwaarde dat er een bestand bestaat waarin de uitvoer van de opdracht wordt omgeleid, zal dit bestand niet worden overschreven. Gegevens worden aan het einde van dit bestand toegevoegd.

Laten we nu eens kijken naar de gegevenspijplijnverwerking.

[in favorieten] Bash voor beginners: 21 handige commando's
Wat de uitvoer van de ene opdracht is, wordt als invoer voor een andere opdracht gegeven. Dit lijkt op het aansluiten van de ene pijp op de andere.

first_command | second_command: het pijpsymbool, |, wordt gebruikt om de resultaten van de uitvoering van de ene opdracht naar de andere opdracht te sturen. Wat de opdracht aan de linkerkant van de beschreven constructie verzendt, gaat naar stdout, dat komt in stdin de opdracht die zich aan de rechterkant van het pijpsymbool bevindt.

In Linux kan gegevenspijplijnverwerking worden georganiseerd met bijna elke goed samengestelde opdracht. Het wordt vaak gezegd dat alles in Linux een pijplijn is.

Met het pijpsymbool kunnen meerdere opdrachten in een keten worden samengevoegd. Dit ziet er als volgt uit:

first_command | second_command | third_command

[in favorieten] Bash voor beginners: 21 handige commando's
Een pijplijn van meerdere opdrachten kan worden vergeleken met een pijpleiding.

Let op dat wanneer de opdracht aan de linkerkant van het symbool |, iets uitvoert naar stdout, hetgeen dat zij uitvoert onmiddellijk beschikbaar wordt als stdin in de tweede opdracht. Met andere woorden, het lijkt erop dat we met een gelijktijdige uitvoering van de opdrachten omgaan door gebruik te maken van de pijplijn. Dit kan soms leiden tot onverwachte resultaten. Meer details hierover kunnen worden gelezen hier.

Laten we nu praten over het lezen van gegevens uit bestanden en deze naar het scherm te schrijven.

▍Bestanden lezen

head my_file: leest regels van het begin van een bestand en schrijft deze naar het scherm. Je kunt niet alleen de inhoud van bestanden lezen, maar ook wat opdrachten naar stdin, door deze opdracht als onderdeel van de pijplijn te gebruiken.

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

[in favorieten] Bash voor beginners: 21 handige commando's
Head bevindt zich aan de voorkant en tail aan de achterkant.

Als je met gegevens werkt met de pandas-bibliotheek, dan zouden deze opdrachten je bekend moeten voorkomen. Als dat niet zo is, kijk dan eens naar de afbeelding hierboven en je zult ze gemakkelijk onthouden. head en tail Laten we kijken naar andere manieren om bestanden te lezen, we zullen het hebben over de opdracht

, die ofwel de inhoud van een bestand naar het scherm schrijft, of meerdere bestanden samenvoegt. Dit hangt af van het aantal bestanden dat aan deze opdracht is doorgegeven bij de aanroep. cat.

Opdracht cat De opdracht cat

[in favorieten] Bash voor beginners: 21 handige commando's
cat my_one_file.txt

: wanneer er één bestand aan deze opdracht wordt doorgegeven, schrijft het deze uit.: wanneer dit team één bestand ontvangt — geeft het dit weer in stdout.

Als je haar echter twee of meer bestanden doorgeeft, gedraagt ze zich anders.

cat my_file1.txt my_file2.txt: met meerdere bestanden als invoer voegt dit commando hun inhoud samen en geeft het resultaat weer in stdout.

Als het resultaat van de bestandsconcatenatie moet worden opgeslagen als een nieuw bestand, kun je de operator gebruiken >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Laten we nu praten over hoe je bestanden kunt verwijderen en processen kunt stoppen.

▍Bestanden verwijderen, processen stoppen

rm my_file: verwijdert het bestand my_file.

rm -r my_folder: verwijdert de map my_folder en alle daarin opgenomen bestanden en mappen. De vlag -r geeft aan dat het commando in recursieve modus zal werken.

Om te voorkomen dat het systeem om bevestiging vraagt bij elke verwijdering van een bestand of map, kun je de vlag gebruiken -f.

kill 012345: stopt het opgegeven lopende proces, waardoor het tijd heeft om correct af te sluiten.

kill -9 012345: beëindigt het opgegeven actieve proces geforceerd. De vlag -s SIGKILL betekent hetzelfde als de vlag -9.

▍Zoeken

Om data te zoeken kun je verschillende commando's gebruiken. In het bijzonder — grep, ag en ack. Laten we onze kennismaking met deze commando's beginnen met grep. Dit is een beproefd, betrouwbaar commando, dat echter langzamer is dan de anderen en niet zo gebruiksvriendelijk.

[in favorieten] Bash voor beginners: 21 handige commando's
Het grep-commando

grep my_regex my_file: voert een zoekopdracht uit my_regex in my_file. Bij het vinden van overeenkomsten retourneert het voor elk ervan de volledige regel. Standaard my_regex wordt behandeld als een reguliere expressie.

grep -i my_regex my_file: zoekt zonder rekening te houden met hoofdlettergebruik.

grep -v my_regex my_file: retourneert alle regels die niet bevatten my_regex. De vlag -v betekent inversie, het lijkt op de operator NOT, die in veel programmeertalen aanwezig is.

grep -c my_regex my_file: geeft informatie over het aantal overeenkomsten met het gezochte patroon die in het bestand zijn gevonden.

grep -R my_regex my_folder: voert een recursieve zoekopdracht uit in alle bestanden binnen de opgegeven map en in de submappen.

Laten we nu praten over het commando ag. Het is later ontwikkeld grep, het is sneller, het is gemakkelijker in gebruik.

[in favorieten] Bash voor beginners: 21 handige commando's
Het ag-commando

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

ag -i my_regex my_file: zoekt zonder rekening te houden met hoofdlettergebruik.

Opdracht ag verwerkt het bestand automatisch .gitignore en sluit uit wat is gevonden in de mappen of bestanden die in dit bestand zijn vermeld. Dit is erg handig.

ag my_regex my_file -- skip-vcs-ignores: de inhoud van bestanden van automatische versiebeheersystemen (zoals .gitignore) wordt niet meegenomen in de zoekopdracht.

Bovendien, om het team aan te geven ag welke paden naar bestanden moeten worden uitgesloten van de zoekopdracht, kan een bestand worden aangemaakt .agignore.

Aan het begin van dit gedeelte hebben we het gehad over de commando's ack. De commando's ack en ag zijn erg vergelijkbaar, je kunt zeggen dat ze voor 99% verwisselbaar zijn. Echter, het commando ag werkt sneller, daarom beschreef ik precies dat.

Laten we nu praten over het werken met archieven.

▍Archivering

tar my_source_directory: voegt bestanden uit de map my_source_directory samen in één tarball-bestand. Dergelijke bestanden zijn handig om grote sets bestanden naar iemand te verzenden.

[in favorieten] Bash voor beginners: 21 handige commando's
Het commando tar

Tarball-bestanden die door dit commando worden aangemaakt, zijn bestanden met de extensie .tar (Tape ARchive). Het feit dat in de naam van het commando en in de extensie van de bestanden die door het wordt gemaakt het woord 'tape' verborgen is, geeft aan hoe lang dit commando al bestaat.

tar -cf my_file.tar my_source_directory: creëert een tarball-bestand met de naam my_file.tar met de inhoud van de map my_source_directory. De vlag -c deze term betekent 'create' (creëren), en de vlag -f betekent 'file' (bestand).

Om bestanden die zich bevinden in .tar-bestand uit te pakken, wordt het commando gebruikt tar c met de vlaggen -x ('extract', uitpakken) en -f ('file', bestand).

tar -xf my_file.tar: pakt bestanden uit my_file.tar in de huidige werkdirectory.

Laten we nu bespreken hoe je -bestanden kunt comprimeren en decomprimeren. .tartar -cfz my_file.tar.gz my_source_directory

: hier, met gebruik van de vlag-z ('zip', compressie-algoritme) is aangegeven dat voor het comprimeren van bestanden het algoritme (GNU zip) moet worden gebruikt. Het comprimeren van bestanden helpt om schijfruimte te besparen bij het opslaan van dergelijke bestanden. Als de bestanden bijvoorbeeld aan andere gebruikers moeten worden verzonden, versnelt dit de downloadtijd van deze bestanden. gzip Een bestand uitpakken

kan door de vlag .tar.gz toe te voegen aan het commando voor het uitpakken van inhoud ('zip', compressie-algoritme) is aangegeven dat voor het comprimeren van bestanden het algoritme -bestanden, dat we hierboven hebben besproken. Dit ziet er zo uit: .tartar -xfz my_file.tar.gz

Het moet worden opgemerkt dat het commando
nog veel meer nuttige vlaggen heeft. tar Bash-aliases

Bash-aliases (ook wel aliasen of verkortingen genoemd) zijn bedoeld om verkorte namen van commando's of commissies te creëren, het gebruik hiervan in plaats van de normale commando's versnelt de werking. Stel je voor dat je een alias hebt

bu , dat de volgende commandoreeks verbergt:python setup.py sdist bdist_wheel , dan is het voldoende om dit alias te gebruiken om dit commando aan te roepen., dan is het genoeg om deze alias te gebruiken om deze opdracht aan te roepen.

Om een dergelijke alias te maken, hoeft u alleen de volgende opdracht aan het bestand toe te voegen ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Als uw systeem het bestand niet heeft ~/.bash_profile, dan kunt u het zelf aanmaken met de opdracht touch. Na het maken van de alias, herstart u de terminal, waarna u deze alias kunt gebruiken. In dit geval vervangt het invoeren van twee symbolen het invoeren van meer dan een dertigtal symbolen van de opdracht, die bedoeld is voor builds Python-pakketten.

In ~/.bash_profile U kunt aliassen toevoegen voor elke vaak gebruikte opdracht.

▍Conclusies

In dit artikel hebben we 21 populaire Bash-opdrachten bekeken en gesproken over het maken van aliassen voor opdrachten. Als u geïnteresseerd bent in dit onderwerp — hier is een reeks publicaties gewijd aan Bash. Hier U kunt een pdf-versie van deze publicaties vinden. Daarnaast, als u Bash wilt leren, onthoud dan dat, net als bij het leren van elk ander softwaresysteem, praktijk belangrijk is.

Geachte lezers! Welke opdrachten, die nuttig zijn om te weten voor beginners, zou u toevoegen aan de opdrachten die in dit artikel zijn behandeld?

→ Lees ook onze blogreeks over bash-scripts.

[in favorieten] Bash voor beginners: 21 handige commando's

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster