Das Material, dessen Übersetzung wir heute veröffentlichen, ist für diejenigen gedacht, die die Linux-Befehlszeile beherrschen möchten. Die Fähigkeit, dieses Tool effektiv einzusetzen, spart viel Zeit. Insbesondere geht es um die Bash-Shell und 21 nützliche Befehle. Wir werden auch darüber sprechen, wie Befehlsflags und Bash-Aliase verwendet werden, um die Eingabe langer Anweisungen zu beschleunigen.

→
Lesen Sie in unserem Blog auch eine Reihe von Veröffentlichungen zu Bash-SkriptenBedingungen
Wenn Sie lernen, wie Sie die Linux-Befehlszeile verwenden, stoßen Sie möglicherweise auf viele Konzepte, die für die Navigation hilfreich sind. Einige von ihnen, wie "Linux" und "Unix" oder "Command Shell" und "Terminal", sind manchmal verwirrt. Lassen Sie uns über diese und andere wichtige Begriffe sprechen.
Unix ist ein beliebtes Betriebssystem, das in den 1970er Jahren von Bell Labs entwickelt wurde. Ihr Code war privat.
Linux ist das beliebteste Unix-ähnliche Betriebssystem. Es wird heute auf einer Vielzahl von Geräten verwendet, einschließlich Computern.
Ein Terminal oder Terminalemulator ist ein Programm, das den Zugriff auf das Betriebssystem ermöglicht. Sie können mehrere Terminalfenster gleichzeitig öffnen.
Eine Shell ist ein Programm, mit dem Sie Befehle in einer speziellen Sprache an das Betriebssystem senden können.
Bash steht für Bourne Again Shell. Dies ist die am häufigsten verwendete Shell-Sprache für die Interaktion mit dem Betriebssystem. Darüber hinaus wird die Standard-Bash-Shell von macOS verwendet.
Die Befehlszeilenschnittstelle (Command Line Interface, CLI) ist eine Art der Interaktion zwischen einer Person und einem Computer, bei der der Benutzer Befehle über die Tastatur eingibt und der Computer beim Ausführen dieser Befehle Nachrichten in Textform für den Benutzer anzeigt. Grundsätzlich wird die CLI verwendet, um aktuelle Informationen zu bestimmten Entitäten, z. B. Dateien, abzurufen und mit Dateien zu arbeiten. Die Befehlszeilenschnittstelle sollte von der grafischen Benutzeroberfläche (GUI) unterschieden werden, die hauptsächlich von der Maus verwendet wird. Die Befehlszeilenschnittstelle wird häufig einfach als Befehlszeile bezeichnet.
Ein Skript ist ein kleines Programm, das eine Folge von Shell-Befehlen enthält. Skripte werden in Dateien geschrieben, Sie können sie wiederholt verwenden. Beim Schreiben von Skripten können Sie Variablen, bedingte Konstrukte, Schleifen, Funktionen und andere Features verwenden.
Nachdem wir wichtige Begriffe betrachtet haben, möchte ich darauf hinweisen, dass ich hier die Begriffe "Bash", "Shell" und "Befehlszeile" als austauschbar sowie die Konzepte "Verzeichnis" und "Ordner" verwenden werde.
Die Standard-
Streams , die wir hier verwenden, sind Standardeingabe (Standardeingabe, Standard), Standardausgabe (Standardausgabe, Standardausgabe) und Standardfehlerausgabe (Standardfehler, Standardausgabe).
Wenn Sie in den Beispielen der folgenden Befehle auf so etwas wie
my_whatever
bedeutet dies, dass dieses Fragment durch etwas von Ihnen ersetzt werden muss. Zum Beispiel der Dateiname.
Bevor wir mit der Analyse der Teams fortfahren, denen dieses Material gewidmet ist, werfen wir einen Blick auf ihre Liste und ihre kurzen Beschreibungen.
21 Bash Team
▍Informationen abrufen
man
: Zeigt das Benutzerhandbuch (Hilfe) für den Befehl an.pwd
: Zeigt Informationen zum Arbeitsverzeichnis an.ls
: Zeigt den Inhalt des Verzeichnisses an.ps
: Ermöglicht das Anzeigen von Informationen zum Ausführen von Prozessen.
▍ Manipulation des Dateisystems
cd
: ändere das Arbeitsverzeichnis.touch
: Erstellen Sie eine Datei.mkdir
: Erstelle ein Verzeichnis.cp
: Datei kopieren.mv
: eine Datei verschieben oder löschen.ln
: Linkerstellung.
▍ E / A-Umleitung und Pipelines
<
: stdin
.>
: stdout
.|
: Umleiten der Ausgabe eines Befehls zur Eingabe eines anderen Befehls mithilfe der Pipeline.
▍Lesen von Dateien
head
: Lies den Anfang der Datei.tail
: Ende der Datei lesen.cat
: Lesen einer Datei und Anzeigen ihres Inhalts auf dem Bildschirm oder Verketten von Dateien.
▍ Dateien löschen, Prozesse stoppen
rm
: lösche die Datei.kill
: Stoppen Sie den Prozess.
▍Suchen
grep
: Suche nach Informationen.ag
: erweitertes Suchteam.
▍Archivieren
tar
: Archive erstellen und damit arbeiten.
Lassen Sie uns diese Befehle genauer besprechen.
Teamdetails
Lassen Sie uns zunächst mit Teams umgehen, deren Ergebnisse in Form von
stdout
angezeigt werden. In der Regel werden diese Ergebnisse in einem Terminalfenster angezeigt.
▍Informationen abrufen
man command_name
: die ausgabe des
man command_name
referenzinformationen.
pwd
: Zeigt den Pfad zum aktuellen Arbeitsverzeichnis an. Bei der Arbeit mit der Befehlszeile muss der Benutzer häufig genau herausfinden, wo er sich im System befindet.
ls
: Verzeichnisinhalt anzeigen. Dieser Befehl wird auch ziemlich oft verwendet.
ls -a
: Versteckte Dateien ausgeben. Hier wird das Flag
-a
des
ls
angewendet. Die Verwendung von Flags hilft dabei, das Teamverhalten anzupassen.
ls -l
: Zeigt detaillierte Dateiinformationen an.
Bitte beachten Sie, dass Flags kombiniert werden können. Zum Beispiel wie
ls -al
:
ls -al
.
ps
: laufende Prozesse anzeigen.
ps -e
: Zeigt Informationen zu allen laufenden Prozessen an, nicht nur zu denen, die sich auf die aktuelle Benutzer-Shell beziehen. Dieser Befehl wird häufig in dieser Form verwendet.
▍ Manipulation des Dateisystems
cd my_directory
: Ändern Sie das Arbeitsverzeichnis in
my_directory
. Verwenden Sie den relativen Pfad
../
als
my_directory
, um im Verzeichnisbaum eine Ebene höher zu gehen.
CD-Befehltouch my_file
: Erstellen Sie
my_file
unter dem angegebenen Pfad.
mkdir my_directory
: Erstellen Sie den Ordner
my_directory
unter dem angegebenen Pfad.
mv my_file target_directory
: Verschieben Sie die
my_file
Datei in den Ordner
my_file
. Wenn Sie das Zielverzeichnis angeben, müssen Sie den absoluten Pfad dazu verwenden (und kein Konstrukt wie
../
).
Der Befehl
mv
kann auch zum Umbenennen von Dateien oder Ordnern verwendet werden. Zum Beispiel könnte es so aussehen:
mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: Erstellen Sie eine Kopie von
my_source_file
und legen Sie sie im Ordner
target_directory
.
ln -s my_source_file my_target_file
: Erstellen Sie eine symbolische Verknüpfung
my_target_file
mit
my_source_file
. Wenn Sie den Link ändern, ändert sich auch die Originaldatei.
Wenn die Datei
my_source_file
gelöscht wird, bleibt
my_target_file
erhalten. Mit dem Flag
-s
des Befehls
ln
können Sie Links für Verzeichnisse erstellen.
Lassen Sie uns nun über E / A-Umleitung und Pipelines sprechen.
▍ E / A-Umleitung und Pipelines
my_command < my_file
:
my_command < my_file
den Deskriptor der Standardeingabedatei (
stdin
) durch die Datei
my_file
. Dies kann nützlich sein, wenn der Befehl erwartet, einige Daten über die Tastatur einzugeben, und diese Daten vorab in einer Datei gespeichert werden.
my_command > my_file
:
my_command > my_file
die Ergebnisse des Befehls,
my_command > my_file
das, was normalerweise in
stdout
my_file
und auf dem Bildschirm angezeigt wird, in die Datei
my_file
um. Wenn die Datei
my_file
nicht vorhanden ist, wird sie erstellt. Wenn die Datei vorhanden ist, wird sie überschrieben.
Nach dem Ausführen des
ls > my_folder_contents.txt
wird beispielsweise eine Textdatei erstellt, die eine Liste der
ls > my_folder_contents.txt
im aktuellen Arbeitsverzeichnis enthält.
Wenn anstelle des Symbols
>
die Konstruktion
>>
wird, wird diese Datei nicht überschrieben, sofern eine Datei vorhanden ist, in die die Ausgabe des Befehls umgeleitet wird. Daten werden am Ende dieser Datei hinzugefügt.
Schauen Sie sich nun die Pipelining-Daten an.
Was ein Befehl ausgibt, wird dem Eingang eines anderen Befehls zugeführt. Es ist so, als würde man ein Rohr mit einem anderen verbindenfirst_command | second_command
first_command | second_command
: Pipe-Symbol,
|
wird verwendet, um die Ergebnisse eines Teams an ein anderes Team zu senden. Die Tatsache, dass der Befehl auf der linken Seite der beschriebenen Konstruktion an
stdout
fällt in den
stdin
Befehls, der sich rechts vom Pipeline-Symbol befindet.
Unter Linux können Pipelining-Daten mit fast jedem korrekt zusammengesetzten Befehl organisiert werden. Es wird oft gesagt, dass alles in Linux eine Pipeline ist.
Mit dem Förderersymbol können Sie mehrere Befehle miteinander verketten. Es sieht so aus:
first_command | second_command | third_command
Ein Förderer aus mehreren Teams kann mit einer Pipeline verglichen werdenBeachten Sie, dass sich ein Befehl links von
|
druckt etwas in
stdout
, was es druckt, wird sofort als
stdin
zweiten Befehl verfügbar. Das heißt, es stellt sich heraus, dass es sich bei der Verwendung der Pipeline um die parallele Ausführung von Befehlen handelt. Manchmal kann dies zu unerwarteten Ergebnissen führen. Details dazu finden Sie
hier .
Lassen Sie uns nun über das Lesen von Daten aus Dateien und deren Anzeige auf dem Bildschirm sprechen.
▍Lesen von Dateien
head my_file
: Liest Zeilen vom Anfang der Datei und zeigt sie an. Sie können nicht nur den Inhalt der Dateien lesen, sondern auch, was die Befehle an
stdin
ausgeben, indem Sie diesen Befehl als Element der Pipeline verwenden.
tail my_file
: Liest Zeilen vom Ende der Datei. Dieser Befehl kann auch in der Pipeline verwendet werden.
Der Kopf ist vorne und der Schwanz hintenWenn Sie mit Daten in der Pandas-Bibliothek arbeiten, sollten Ihnen die Befehle
head
und
tail
sein. Wenn dies nicht der Fall ist, schauen Sie sich die obige Abbildung an und Sie werden sich leicht daran erinnern.
Schauen wir uns andere Möglichkeiten zum Lesen von Dateien an und sprechen über den
cat
.
Der
cat
zeigt entweder den Inhalt der Datei auf dem Bildschirm an oder verkettet mehrere Dateien. Dies hängt davon ab, wie viele Dateien beim Aufruf an diesen Befehl übergeben werden.
Katzenteamcat my_one_file.txt
: Wenn ein Befehl an diesen Befehl übertragen wird, wird er in
stdout
angezeigt.
Wenn Sie ihr zwei oder mehr Dateien geben, verhält sie sich anders.
cat my_file1.txt my_file2.txt
: Nachdem mehrere
cat my_file1.txt my_file2.txt
als Eingabe empfangen wurden, verkettet dieser Befehl deren Inhalt und zeigt an, was in
stdout
passiert ist.
Wenn das Ergebnis der Verkettung von Dateien als neue Datei gespeichert werden muss, können Sie den Operator
>
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Lassen Sie uns nun darüber sprechen, wie Sie Dateien löschen und Prozesse stoppen.
▍ Dateien löschen, Prozesse stoppen
rm my_file
:
my_file
die
my_file
Datei.
rm -r my_folder
:
my_folder
Ordner
my_folder
und alle darin enthaltenen Dateien und Ordner. Das Flag
-r
zeigt an, dass der Befehl im rekursiven Modus ausgeführt wird.
Verwenden Sie das Flag
-f
, um zu verhindern, dass das System bei jedem Vorgang eine Bestätigung zum Löschen einer Datei oder eines Ordners
-f
.
kill 012345
:
kill 012345
den angegebenen laufenden Prozess und gibt ihm Zeit, um ihn ordnungsgemäß herunterzufahren.
kill -9 012345
:
kill -9 012345
den angegebenen laufenden Prozess zwangsweise. Ein Flag der Form
-s SIGKILL
bedeutet dasselbe wie ein Flag
-9
.
▍Suchen
Sie können verschiedene Befehle verwenden, um nach Daten zu suchen. Insbesondere
grep
,
ag
und
ack
. Wir beginnen unsere Einführung in diese Befehle mit
grep
. Dies ist ein bewährtes, zuverlässiges Team, das jedoch langsamer als andere ist und diese nicht mag und bequem zu bedienen ist.
Grep-Befehlgrep my_regex my_file
: Durchsucht
my_regex
in
my_file
. Wenn Übereinstimmungen gefunden werden, wird für jede die gesamte Zeichenfolge zurückgegeben. Standardmäßig wird
my_regex
als regulärer Ausdruck behandelt.
grep -i my_regex my_file
: Bei der Suche wird die Groß- und Kleinschreibung
grep -i my_regex my_file
.
grep -v my_regex my_file
:
grep -v my_regex my_file
alle Zeilen zurück, die
my_regex
nicht enthalten. Das Flag
-v
bedeutet Inversion und ähnelt dem Operator
NOT
, der in vielen Programmiersprachen verfügbar ist.
grep -c my_regex my_file
:
grep -c my_regex my_file
Informationen über die Anzahl der Übereinstimmungen mit dem in der Datei gefundenen Suchmuster zurück.
grep -R my_regex my_folder
:
grep -R my_regex my_folder
eine rekursive Suche in allen Dateien in einem bestimmten Ordner und in den darin enthaltenen Ordnern durch.
Sprechen wir jetzt über das
ag
Team. Sie erschien später
grep
, sie ist schneller, es ist bequemer mit ihr zu arbeiten.
Ag Teamag my_regex my_file
:
ag my_regex my_file
Informationen zu den Zeilennummern und den Zeilen selbst zurück, in denen Übereinstimmungen mit
my_regex
.
ag -i my_regex my_file
: Bei der Suche wird die Groß- und Kleinschreibung
ag -i my_regex my_file
.
Der Befehl
ag
verarbeitet die
.gitignore
Datei automatisch und schließt von der Ausgabe aus, was sich in den in dieser Datei aufgelisteten Ordnern oder Dateien befindet. Es ist sehr bequem.
ag my_regex my_file -- skip-vcs-ignores
: Der Inhalt von Dateien automatischer Versionskontrollsysteme (wie
.gitignore
) wird bei der Suche nicht berücksichtigt.
Um dem Befehl
ag
mitzuteilen, welche Dateipfade von der Suche ausgeschlossen werden sollen, können Sie außerdem eine
.agignore
Datei erstellen.
Zu Beginn dieses Abschnitts haben wir den Befehl
ack
erwähnt. Die Befehle
ack
und
ag
sind sehr ähnlich, wir können sagen, dass sie zu 99% austauschbar sind. Der Befehl
ag
ist jedoch schneller, daher habe ich ihn speziell beschrieben.
Lassen Sie uns nun über die Arbeit mit Archiven sprechen.
▍Archivieren
tar my_source_directory
:
tar my_source_directory
die Dateien aus dem Ordner
my_source_directory
in einer einzigen tarball-Datei. Solche Dateien sind bequem zu verwenden, um große Mengen von Dateien an jemanden zu übertragen.
Tar-BefehlDie mit diesem Befehl erstellten Tarball-Dateien sind Dateien mit der Erweiterung
.tar
(Tape ARchive). Die Tatsache, dass das Wort "Band" im Namen des Befehls und in der Erweiterung der Namen der von ihm erstellten Dateien verborgen ist, gibt an, wie lange dieser Befehl existiert.
tar -cf my_file.tar my_source_directory
:
tar -cf my_file.tar my_source_directory
eine Tarball-Datei mit dem Namen
my_file.tar
mit dem Inhalt des Ordners
my_source_directory
. Das Flag
-c
steht für "create" und das Flag
-f
für "file".
Verwenden Sie zum Extrahieren der Dateien in der
.tar
Datei den Befehl
tar
mit den Flags
-x
("extrahieren", extrahieren) und
-f
("Datei", Datei).
tar -xf my_file.tar
:
tar -xf my_file.tar
Dateien aus
my_file.tar
in das aktuelle Arbeitsverzeichnis.
Lassen Sie uns nun darüber sprechen, wie
.tar
Dateien komprimiert und dekomprimiert werden.
tar -cfz my_file.tar.gz my_source_directory
: Hier gibt die Verwendung des Flags
-z
(Komprimierungsalgorithmus "zip") an, dass
gzip
(GNU zip) zum Komprimieren von Dateien verwendet werden soll. Die Dateikomprimierung spart Speicherplatz beim Speichern solcher Dateien. Wenn die Dateien beispielsweise für die Übertragung an andere Benutzer geplant sind, trägt dies zu einem schnelleren Herunterladen solcher Dateien bei.
Sie können die
.tar.gz
Datei entpacken, indem Sie dem Befehl das Flag
-z
hinzufügen, um den Inhalt der oben untersuchten
.tar
Dateien zu extrahieren. Es sieht so aus:
tar -xfz my_file.tar.gz
Es ist zu beachten, dass der Befehl
tar
viel mehr nützliche Flags enthält.
Bash Aliase
Bash-Aliase (auch Aliase oder Abkürzungen genannt) dienen dazu, abgekürzte Namen von Befehlen oder deren Sequenzen zu erstellen, deren Verwendung anstelle gewöhnlicher Befehle die Arbeit beschleunigt. Wenn Sie beispielsweise einen Alias
bu
, hinter dem der
python setup.py sdist bdist_wheel
ist, verwenden Sie einfach diesen Alias, um diesen Befehl aufzurufen.
Um einen solchen Alias zu erstellen, fügen Sie einfach den folgenden Befehl zur Datei
~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Wenn Ihr System keine
~/.bash_profile
Datei hat, können Sie diese mit dem Befehl
touch
selbst erstellen. Starten Sie nach dem Erstellen eines Alias das Terminal neu. Anschließend können Sie diesen Alias verwenden. In diesem Fall ersetzt die Eingabe von zwei Zeichen die Eingabe von mehr als drei Dutzend Zeichen des Befehls, mit dem Python-Pakete erstellt werden sollen.
In
~/.bash_profile
können Sie Aliase für häufig verwendete Befehle hinzufügen.
▍ Ergebnisse
In diesem Artikel haben wir uns 21 beliebte Bash-Teams angesehen und über das Erstellen von Aliasnamen für Teams gesprochen. Wenn Sie sich für dieses Thema interessieren, finden Sie
hier die Bash-Publikationsreihe.
Hier finden Sie die PDF-Version dieser Publikationen. Wenn Sie Bash lernen möchten, denken Sie außerdem daran, dass hier wie beim Studium eines anderen Softwaresystems Übung wichtig ist.
Liebe Leser! Welche Befehle, die für Anfänger nützlich sind, würden Sie zu den in diesem Artikel beschriebenen hinzufügen?
→
Lesen Sie in unserem Blog auch eine Reihe von Veröffentlichungen zu Bash-Skripten