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
