Das Material, das wir heute veröffentlichen, richtet sich an diejenigen, die die Linux-Befehlszeile erlernen möchten. Die FĂ€higkeit, dieses Tool effektiv zu nutzen, spart viel Zeit. Insbesondere geht es hier um die Bash-Shell und 21 nĂŒtzliche Befehle. AuĂerdem werden wir darĂŒber sprechen, wie man die Befehls-Flags und Bash-Aliase verwendet, die die Eingabe langer Anweisungen beschleunigen.
â
Begriffe
Bei der Einarbeitung in die Arbeit mit der Linux-Befehlszeile begegnen Ihnen viele Begriffe, mit denen es nĂŒtzlich ist, sich auszukennen. Einige davon, wie âLinuxâ und âUnixâ oder âShellâ und âTerminalâ, werden manchmal verwechselt. Lassen Sie uns ĂŒber diese und andere wichtige Begriffe sprechen.
â ist ein beliebtes Betriebssystem, das in den 1970er Jahren von den Bell Labs entwickelt wurde. Ihr Code war geschlossen.
â ist das am weitesten verbreitete Unix-Ă€hnliche Betriebssystem. Es wird heute auf vielen GerĂ€ten, einschlieĂlich Computern, verwendet.
(terminal) oder Terminal-Emulator ist ein Programm, das Zugang zum Betriebssystem bietet. Es können mehrere Terminalfenster gleichzeitig geöffnet werden.
(shell) ist ein Programm, das es ermöglicht, der Betriebssystem Befehle in einer speziellen Sprache zu senden.
steht fĂŒr Bourne Again SHell. Dies ist die am weitesten verbreitete Shell-Skriptsprache, die zur Interaktion mit dem Betriebssystem verwendet wird. DarĂŒber hinaus wird die Bash-Shell standardmĂ€Ăig in macOS verwendet.
(Command Line Interface, CLI) ist eine Art der Interaktion zwischen Mensch und Computer, bei der der Benutzer Befehle ĂŒber die Tastatur eingibt, und der Computer, indem er diese Befehle ausfĂŒhrt, Textnachrichten fĂŒr den Benutzer ausgibt. HauptsĂ€chlich wird die CLI verwendet, um aktuelle Informationen ĂŒber bestimmte EntitĂ€ten, wie z.B. Dateien, zu erhalten und um mit Dateien zu arbeiten. Die Befehlszeilenschnittstelle sollte von der grafischen BenutzeroberflĂ€che (Graphical User Interface, GUI) unterschieden werden, bei der hauptsĂ€chlich die Maus verwendet wird. Die Befehlszeilenschnittstelle wird oft einfach als Kommandozeile bezeichnet.
(script) â ist ein kleines Programm, das eine Abfolge von Befehlen der Shell enthĂ€lt. Skripte werden in Dateien gespeichert und können mehrfach verwendet werden. Beim Schreiben von Skripten können Variablen, bedingte Konstruktionen, Schleifen, Funktionen und andere Möglichkeiten genutzt werden.
Jetzt, da wir wichtige Begriffe behandelt haben, möchte ich betonen, dass ich die Begriffe âBashâ, âShellâ und âEingabeaufforderungâ als austauschbar verwenden werde, ebenso wie die Konzepte âVerzeichnisâ (directory) und âOrdnerâ (folder).
Standarde , die wir hier verwenden werden â sind der Standard-Eingang (standard input, stdin), der Standard-Ausgang (standard output, stdout) und der Standard-Fehlerausgang (standard error, stderr).
Wenn Sie in den nachfolgend genannten Befehlen auf etwas stoĂen wie my_whatever â bedeutet das, dass dieser Teil durch etwas Eigenes ersetzt werden muss. Zum Beispiel â den Dateinamen.
Jetzt, bevor wir zu den Befehlen ĂŒbergehen, die in diesem Material behandelt werden, lassen Sie uns einen Blick auf ihre Liste und deren kurze Beschreibungen werfen.
21 Bash-Befehle
âInformationen abrufen
man: gibt die Benutzeranleitung (Hilfe) fĂŒr den Befehl aus.pwd: gibt Informationen ĂŒber das aktuelle Verzeichnis aus.ls: gibt den Inhalt eines Verzeichnisses aus.ps: ermöglicht das Anzeigen von Informationen ĂŒber laufende Prozesse.
âDateisystemmanipulationen
cd: Àndert das aktuelle Verzeichnis.touch: erstellt eine Datei.mkdir: erstellt ein Verzeichnis.cp: kopiert eine Datei.mv: verschiebt oder löscht eine Datei.ln: erstellt einen Link.
âUmleitung von Ein- und Ausgaben und Pipes
<: Umleitungstdin.>: Umleitungstdout.|: Umleitung durch Pipe von der Ausgabe eines Befehls zur Eingabe eines anderen Befehls.
âDateien lesen
head: liest den Anfang einer Datei.tail: liest das Ende einer Datei.cat: liest eine Datei und gibt ihren Inhalt auf dem Bildschirm aus oder verkettet Dateien.
âDateien löschen, Prozesse stoppen
rm: löscht eine Datei.kill: stoppt einen Prozess.
âSuche
grep: sucht Informationen.ag: erweiterter Befehl zur Suche.
âArchivierung
tar: erstellt Archive und arbeitet mit ihnen.
Lassen Sie uns diese Befehle genauer betrachten.
Details zu den Befehlen
Lassen Sie uns zunĂ€chst die Befehle betrachten, deren AusfĂŒhrungsresultate in Form von stdoutausgegeben werden. Diese Ergebnisse erscheinen gewöhnlich im Terminalfenster.
âInformationen abrufen
man command_name: gibt das Handbuch fĂŒr den Befehl aus, das heiĂt die Hilfeinformationen.
pwd: Ausgabe des Pfades zum aktuellen Arbeitsverzeichnis. WÀhrend der Arbeit mit der Eingabeaufforderung muss der Benutzer hÀufig herausfinden, wo genau er sich im System befindet.
ls: Anzeige des Inhalts eines Verzeichnisses. Dieser Befehl wird ebenfalls sehr hÀufig verwendet.
ls -a: Anzeige versteckter Dateien. Hier wird das Flag -a Befehle ls. Die Verwendung von Flags hilft, das Verhalten von Befehlen anzupassen.
ls -l: Ausgabe detaillierter Informationen ĂŒber Dateien.
Beachten Sie, dass Flags kombiniert werden können. Zum Beispiel â so: ls -al.
ps: Anzeige der laufenden Prozesse.
ps -e: Ausgabe von Informationen ĂŒber alle laufenden Prozesse, nicht nur ĂŒber die, die mit der aktuellen Benutzershell verbunden sind. Dieser Befehl wird hĂ€ufig in dieser Form verwendet.
âDateisystemmanipulationen
cd my_directory: Ăndern des Arbeitsverzeichnisses zu my_directory. Um eine Ebene höher im Verzeichnisbaum zu wechseln, verwenden Sie als my_directory relative Pfad ../.
![[in den Lesezeichen] Bash fĂŒr AnfĂ€nger: 21 nĂŒtzliche Befehle](/wp-content/uploads/2019/03/91815e5212c9dfec88a76bc2ab37955f.png)
Der Befehl cd
touch my_file: Erstellung einer Datei my_file am angegebenen Pfad.
mkdir my_directory: Erstellung eines Ordners my_directory am angegebenen Pfad.
mv my_file target_directory: Verschieben der Datei my_file in den Ordner target_directory. Bei der Angabe des Zielverzeichnisses muss der absolute Pfad zu diesem verwendet werden (nicht eine Konstruktion wie ../).
Der Befehl mv, kann auĂerdem zum Umbenennen von Dateien oder Ordnern verwendet werden. Zum Beispiel könnte das so aussehen:
mv my_old_file_name.jpg my_new_file_name.jpg: Erstellen einer Kopie der Datei
cp my_source_file zielverzeichnismy_source_file und Platzierung in den Ordner target_directory.
ln -s my_source_file my_target_file: Erstellen eines symbolischen Links my_target_file auf die Datei my_source_file. Wenn der Link geĂ€ndert wird, Ă€ndert sich auch die ursprĂŒngliche Datei.
Wird die Datei my_source_file gelöscht, bleibt my_target_file . Das Flag -s Befehle ln ermöglicht das Erstellen von Links auch fĂŒr Verzeichnisse.
Nun sprechen wir ĂŒber die Umleitung von Ein- und Ausgaben und Pipelines.
âUmleitung von Ein- und Ausgaben und Pipes
my_command < my_file: ersetzt den Dateideskriptor des Standard-Eingangs (stdin) durch die Datei my_file. Dies kann nĂŒtzlich sein, wenn der Befehl erwartet, Eingabedaten von der Tastatur zu erhalten, diese Daten jedoch zuvor in einer Datei gespeichert wurden.
my_command > my_file: leitet die Ergebnisse der AusfĂŒhrung des Befehls, d.h. das, was normalerweise in stdout eingefĂŒgt und auf dem Bildschirm angezeigt wird, in die Datei my_file. Wenn die Datei my_file nicht existiert â wird sie erstellt. Existiert die Datei bereits â wird sie ĂŒberschrieben.
Zum Beispiel wird nach der AusfĂŒhrung des Befehls ls > my_folder_contents.txt eine Textdatei erstellt, die eine Liste dessen enthĂ€lt, was sich im aktuellen Arbeitsverzeichnis befindet.
Wenn Sie anstelle des Zeichens > die Konstruktion >>, unter der Bedingung, dass eine Datei existiert, in die die Ausgabe des Kommandos umgeleitet wird, wird diese Datei nicht ĂŒberschrieben. Die Daten werden am Ende dieser Datei hinzugefĂŒgt.
Schauen wir uns nun die Pipeline-Datenverarbeitung an.
![[in den Lesezeichen] Bash fĂŒr AnfĂ€nger: 21 nĂŒtzliche Befehle](/wp-content/uploads/2019/03/dcc4e500b247cb13adb4d64c36c24f88.png)
Was eine Kommandozeile ausgibt, wird als Eingabe fĂŒr ein anderes Kommando verwendet. Das ist vergleichbar mit dem Anschluss eines Rohres an ein anderes.
first_command | second_command: Das Pipeline-Zeichen, |, wird verwendet, um die Ergebnisse der Arbeit eines Kommandos an ein anderes Kommando zu senden. Was das Kommando auf der linken Seite der beschriebenen Konstruktion sendet, gelangt in stdout, gelangt zu stdin dem Kommando, das sich rechts vom Pipeline-Zeichen befindet.
In Linux kann die Pipeline-Datenverarbeitung mit nahezu jedem korrekt formulierten Kommando organisiert werden. Oft sagt man, dass alles in Linux eine Pipeline ist.
Mit dem Pipeline-Zeichen können mehrere Kommandos zu einer Kette verbunden werden. So sieht das aus:
first_command | second_command | third_command ![[in den Lesezeichen] Bash fĂŒr AnfĂ€nger: 21 nĂŒtzliche Befehle](/wp-content/uploads/2019/03/1d94b3f04846ef40c072299877c55b1f.png)
Eine Pipeline aus mehreren Kommandos lÀsst sich mit einer Rohrleitung vergleichen.
Beachten Sie, dass wenn das Kommando, das sich links vom Zeichen |, etwas in die stdoutausgibt, was es ausgegeben hat, sofort in Form von stdin fĂŒr das zweite Kommando verfĂŒgbar wird. Das heiĂt, durch die Verwendung einer Pipeline haben wir es mit der parallelen AusfĂŒhrung von Kommandos zu tun. Manchmal kann dies zu unerwarteten Ergebnissen fĂŒhren. Weitere Einzelheiten dazu können Sie .
Jetzt sprechen wir ĂŒber das Lesen von Daten aus Dateien und deren Ausgabe auf den Bildschirm.
âDateien lesen
head my_file: liest Zeilen vom Anfang der Datei und gibt sie auf dem Bildschirm aus. Man kann nicht nur den Inhalt von Dateien lesen, sondern auch das, was die Kommandos in stdin, Ausgabe verwenden, indem man dieses Kommando als Element der Pipeline nutzt.
tail my_file: liest Zeilen vom Ende der Datei. Dieses Kommando kann ebenfalls in der Pipeline verwendet werden.
![[in den Lesezeichen] Bash fĂŒr AnfĂ€nger: 21 nĂŒtzliche Befehle](/wp-content/uploads/2019/03/0dd6e0353a1b5995d4a1228ae2550ad9.png)
Head (Kopf) ist vorne und tail (Schwanz) ist hinten.
Wenn Sie mit Daten arbeiten und die Bibliothek pandas verwenden, sollten Ihnen die Kommandos head und tail vertraut sein. Wenn nicht, schauen Sie sich die obige Abbildung an, und Sie werden sie leicht merken.
Betrachten wir andere Möglichkeiten, Dateien zu lesen, insbesondere das Kommando cat.
Team cat das entweder den Inhalt einer Datei auf dem Bildschirm ausgibt oder mehrere Dateien zusammenfĂŒgt. Das hĂ€ngt davon ab, wie viele Dateien diesem Kommando bei der AusfĂŒhrung ĂŒbergeben werden.
![[in den Lesezeichen] Bash fĂŒr AnfĂ€nger: 21 nĂŒtzliche Befehle](/wp-content/uploads/2019/03/708bea2f5d31e1623e9fd80ff5b576af.png)
Das Kommando cat
cat my_one_file.txt: wenn diesem Kommando eine Datei ĂŒbergeben wird â gibt es sie aus. stdout.
Wenn Sie ihr jedoch zwei Dateien oder mehr ĂŒbergeben, verhĂ€lt sie sich anders.
cat my_file1.txt my_file2.txt: erhÀlt sie mehrere Dateien als Eingabe, konkateniert dieser Befehl deren Inhalte und gibt das Ergebnis aus stdout.
Wenn das Ergebnis der Dateikonkatentation als neue Datei gespeichert werden soll, können Sie den Operator verwenden >:
cat my_file1.txt my_file2.txt > my_new_file.txtJetzt sprechen wir darĂŒber, wie man Dateien löscht und Prozesse stoppt.
âDateien löschen, Prozesse stoppen
rm my_file: löscht die Datei my_file.
rm -r my_folder: löscht den Ordner my_folder und alle darin enthaltenen Dateien und Ordner. Der Schalter -r gibt an, dass der Befehl im rekursiven Modus arbeitet.
Um zu verhindern, dass das System bei jeder Löschoperation eine BestÀtigung anfordert, verwenden Sie den Schalter -f.
kill 012345: stoppt den angegebenen laufenden Prozess und gibt ihm Zeit fĂŒr einen ordnungsgemĂ€Ăen Abschluss.
kill -9 012345: beendet den angegebenen laufenden Prozess zwangslÀufig. Der Schalter -s SIGKILL bedeutet dasselbe wie der Schalter -9.
âSuche
FĂŒr die Datensuche können verschiedene Befehle verwendet werden. Insbesondere â grep, ag und ack. Lassen Sie uns unsere Bekanntschaft mit diesen Befehlen beginnen mit grep. Dies ist ein bewĂ€hrter, zuverlĂ€ssiger Befehl, der zwar langsamer ist als andere und nicht so benutzerfreundlich wie diese.
![[in den Lesezeichen] Bash fĂŒr AnfĂ€nger: 21 nĂŒtzliche Befehle](/wp-content/uploads/2019/03/bc02403dbbd0109f0dfd595eccf239c7.png)
Der Befehl grep
grep my_regex my_file: fĂŒhrt die Suche durch my_regex in my_file. Bei Ăbereinstimmungen wird fĂŒr jede von ihnen die gesamte Zeile zurĂŒckgegeben. StandardmĂ€Ăig my_regex wird als regulĂ€rer Ausdruck interpretiert.
grep -i my_regex my_file: die Suche erfolgt ohne BerĂŒcksichtigung der GroĂ- und Kleinschreibung.
grep -v my_regex my_file: gibt alle Zeilen zurĂŒck, in denen nicht enthalten ist my_regex. Der Schalter -v bedeutet die Invertierung, er Ă€hnelt dem Operator NOT, der in vielen Programmiersprachen vorhanden ist.
grep -c my_regex my_file: gibt Informationen ĂŒber die Anzahl der Ăbereinstimmungen mit dem gesuchten Muster zurĂŒck, die in der Datei gefunden wurden.
grep -R my_regex my_folder: fĂŒhrt eine rekursive Suche in allen Dateien durch, die sich im angegebenen Ordner und in seinen Unterordnern befinden.
Jetzt sprechen wir ĂŒber den Befehl ag. Er wurde spĂ€ter eingefĂŒhrt grep, ist schneller und lĂ€sst sich einfacher bedienen.
![[in den Lesezeichen] Bash fĂŒr AnfĂ€nger: 21 nĂŒtzliche Befehle](/wp-content/uploads/2019/03/f0eeb1d38a1e9c22a8463858753dedb5.png)
Der Befehl ag
ag my_regex my_file: gibt Informationen ĂŒber die Zeilennummern und die entsprechenden Zeilen zurĂŒck, in denen Ăbereinstimmungen mit gefunden wurden my_regex.
ag -i my_regex my_file: die Suche erfolgt ohne BerĂŒcksichtigung der GroĂ- und Kleinschreibung.
Team ag verarbeitet automatisch die Datei .gitignore und schlieĂt das aus, was in den in dieser Datei aufgelisteten Ordnern oder Dateien gefunden wurde. Das ist sehr praktisch.
ag my_regex my_file --skip-vcs-ignores: Dateiinhalte von Versionskontrollsystemen (Ă€hnlich .gitignore) werden bei der Suche nicht berĂŒcksichtigt.
AuĂerdem kann man dem Befehl ag angeben, welche Pfade zu Dateien von der Suche ausgeschlossen werden sollen, indem man eine Datei erstellt .agignore.
Zu Beginn dieses Abschnitts haben wir den Befehl ackerwÀhnt. Die Befehle ack und ag sind sehr Àhnlich, man könnte sagen, dass sie zu 99 % austauschbar sind. Allerdings arbeitet der Befehl ag schneller, daher habe ich ihn speziell beschrieben.
Jetzt sprechen wir ĂŒber die Arbeit mit Archiven.
âArchivierung
tar my_source_directory: kombiniert Dateien aus dem Ordner my_source_directory in einer Tarball-Datei. Solche Dateien sind praktisch, um groĂe DateisĂ€tze an andere weiterzugeben.
![[in den Lesezeichen] Bash fĂŒr AnfĂ€nger: 21 nĂŒtzliche Befehle](/wp-content/uploads/2019/03/4531ef1d4084af608fcbe91964a6710b.png)
Der Befehl tar
Die von diesem Befehl erstellten Tarball-Dateien sind Dateien mit der Erweiterung .tar (Tape ARchive). Das Wort âtapeâ (Band) im Namen des Befehls und in den von ihm erstellten Dateinamen zeigt, wie lange dieser Befehl schon existiert.
tar -cf my_file.tar my_source_directory: erstellt eine Tarball-Datei mit dem Namen my_file.tar mit dem Inhalt des Ordners my_source_directory. Der Schalter -c steht fĂŒr âcreateâ (erstellen) und die Flagge -f fĂŒr âfileâ (Datei).
Um Dateien, die sich in .tar-Dateien befinden, zu extrahieren, wird der Befehl tar mit den Flags -x (âextractâ, extrahieren) und -f (âfileâ, Datei) verwendet.
tar -xf my_file.tar: extrahiert Dateien aus my_file.tar in das aktuelle Arbeitsverzeichnis.
Jetzt sprechen wir darĂŒber, wie man .tar-Dateien komprimiert und entpackt.
tar -cfz my_file.tar.gz my_source_directory: hier wird mit dem Flag -z (âzipâ, Komprimierungsalgorithmus) angegeben, dass zur Komprimierung der Dateien der Algorithmus gzip (GNU zip) verwendet werden soll. Die Komprimierung von Dateien spart Speicherplatz beim Speichern solcher Dateien. Wenn die Dateien z.B. an andere Benutzer weitergegeben werden sollen, trĂ€gt dies zur schnelleren Ăbertragung solcher Dateien bei.
Eine Datei .tar.gz kann entpackt werden, indem man das Flag -z zum Befehl zum Extrahieren des Inhalts der .tar-Dateien hinzufĂŒgt, die wir zuvor besprochen haben. Das sieht so aus:
tar -xfz my_file.tar.gz
Es ist anzumerken, dass der Befehl tar noch viele nĂŒtzliche Flags hat.
Bash-Aliase
Bash-Aliase (auch Aliase oder Kurzformen genannt) dienen dazu, verkĂŒrzte Bezeichnungen fĂŒr Befehle oder deren Sequenzen zu erstellen, deren Verwendung anstelle der normalen Befehle die Arbeit beschleunigt. Wenn Sie zum Beispiel ein Alias buhaben, hinter dem sich der Befehl python setup.py sdist bdist_wheelverbirgt, reicht es aus, dieses Alias zu benutzen, um den Befehl auszufĂŒhren.
Um einen solchen Alias zu erstellen, genĂŒgt es, den folgenden Befehl in die Datei hinzuzufĂŒgen ~/.bash_profile:
alias bu="python setup.py sdist bdist_wheel" Wenn in Ihrem System keine Datei vorhanden ist ~/.bash_profile, können Sie sie selbst erstellen, indem Sie den Befehl verwenden touch. Nach der Erstellung des Alias sollten Sie das Terminal neu starten, danach können Sie diesen Alias verwenden. In diesem Fall ersetzt die Eingabe von zwei Zeichen die Eingabe von mehr als dreiĂig Zeichen des Befehls, der fĂŒr Python-Pakete gedacht ist.
Im ~/.bash_profile Aliase fĂŒr beliebige hĂ€ufig verwendete Befehle können hinzugefĂŒgt werden.
âErgebnisse
In diesem Material haben wir 21 beliebte Bash-Befehle besprochen und darĂŒber gesprochen, wie man Aliase fĂŒr Befehle erstellt. Wenn Ihnen dieses Thema interessiert, finden Sie eine Veröffentlichungsreihe, die sich mit Bash beschĂ€ftigt. Sie können eine PDF-Version dieser Veröffentlichungen finden. DarĂŒber hinaus, wenn Sie Bash erlernen möchten, denken Sie daran, dass, wie beim Lernen jedes anderen Softwaresystems, die Praxis wichtig ist.
Liebe Leser! Welche nĂŒtzlichen Befehle fĂŒr AnfĂ€nger wĂŒrden Sie zu den in diesem Artikel behandelten hinzufĂŒgen?
â
Quelle: habr.com
