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.
→
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.
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 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
<
: omleidenstdin
.>
: omleidenstdout
.|
: 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 ../
.
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 mv
kan 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
: maak een kopie van een bestand
cp my_source_file target_directorymy_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.
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
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
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 stdin
gebruik 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.
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.
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.
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.
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.
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
В ~/.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 -
Beste lezers! Welke commando's die nuttig zijn voor beginners zou je toevoegen aan de commando's die in dit artikel zijn besproken?
→
Bron: www.habr.com