Linux-Shell-Befehle

Was ist Shell?


        Eine Shell ist ein Programm zur Verwaltung und Ausführung von Computerbefehlen und kann entweder als Befehlssprache oder als interpretierte Programmiersprache betrachtet werden. Die Shell ist die Brücke zwischen dem Benutzer und dem Betriebssystem und ermöglicht es dem Benutzer, den Computer mit einfachen Befehlen zu bedienen. Ein Shell-Programm besteht normalerweise aus einem Befehlsinterpreter und einem Dateimanager. Benutzer können über die Befehlszeilenschnittstelle mit dem Shell-Programm interagieren.
        Shell-Programme können in verschiedenen Programmiersprachen wie C, C++, Python usw. geschrieben werden, am häufigsten werden sie jedoch in der Sprache C geschrieben. Shell-Programme können in einem Terminalfenster oder in einer grafischen Benutzeroberfläche ausgeführt werden.
        Shell-Programme bieten viele Funktionen, z. B. das Erstellen von Dateien, das Ändern von Dateien, das Löschen von Dateien, das Umbenennen von Dateien, das Verschieben von Dateien, das Anzeigen von Dateiinhalten, das Ändern von Dateiberechtigungen, das Herstellen einer Verbindung zu anderen Computern usw. Shell-Programme unterstützen auch Umleitung und Pipe-Kombination, sodass Benutzer die Eingabe und Ausgabe von Befehlen in verschiedene Dateien umleiten oder die Ausgabe mehrerer Befehle zusammenfassen können.
        Das Shell-Programm bietet außerdem Funktionen wie Umgebungsvariablen und Alias-Befehle, sodass Benutzer Computerbefehle einfach verwalten und ausführen können. Über das Shell-Programm können Benutzer den Computer schnell bedienen und die Arbeitseffizienz verbessern.

Warum Shell verwenden?

        Weil es praktisch ist~~~

        cmd ist der Befehlszeileninterpreter für Windows-Betriebssysteme, der eine befehlsbasierte Syntax und eine Textschnittstelle zum Ausführen von Befehlen verwendet. Es wird hauptsächlich zum Ausführen von Windows-Systembefehlen und Batchdateien verwendet. Es verfügt über bestimmte Skriptfunktionen, ist jedoch nicht leistungsstark und flexibel genug.

        Die Shell ist der Befehlszeileninterpreter des Unix/Linux-Betriebssystems, der textbasierte Syntax und eine programmierbare Schnittstelle zum Ausführen von Befehlen verwendet. Die Shell verfügt über leistungsstarke Skriptfunktionen und kann über Skriptsprachen komplexe Programme und automatisierte Skripte schreiben, wodurch sie flexibler und leistungsfähiger als cmd ist.

        Fairerweise muss man sagen, dass mehr Menschen zuerst mit dem Windows-System in Berührung kommen. Windows bietet cmd und Powershell, aber warum verwenden so viele Menschen Shell? Der Hauptgrund liegt darin, dass Server meist auf Servern mit Unix/Linux-Betriebssystemen bereitgestellt werden, weshalb der Befehlszeile eine besondere Bedeutung zukommt.

Studie

Erstes Shell-Skript

Zunächst bereiten wir eine Linux-Umgebung vor, sei es ein Linux-System, eine virtuelle Maschine oder ein Docker-Container. Wie auch immer, wir erstellen zunächst ein Skript, test.sh

#!/bin/bash    # 这句话表示用linux指定去解析文本内容
#显示hello world!
echo hello world!

Geben Sie dann dem Skript ausführbare Berechtigungen:

chmod +x test.sh

Nach der Ausführung werden die Worte „Hallo Welt!“ angezeigt.

        Die erste ist die erste Zeile. Wenn das System auf eine Datei stößt, die mit #!/bin/bash beginnt, geht es davon aus, dass es sich bei der Datei um ein Skript handelt, das mit dem Bash-Interpreter ausgeführt werden muss, und folgt dann dem zu findenden Pfad den Bash-Interpreter. und verwenden Sie diesen Interpreter, um das Skript auszuführen. Unter Linux gibt es neben der Bash-Shell viele Versionen von Shells, z. B. zsh und dash.

        Dann ist das Echo in der zweiten Zeile das, was angezeigt werden soll.

Variable

        In der Shell-Programmierung sind Variablen Bezeichner, die zum Speichern von Werten verwendet werden, bei denen es sich um Zeichenfolgen, Zahlen, boolesche Werte usw. handeln kann. Hier sind einige gängige Shell-Variablentypen:

  • Umgebungsvariablen: Diese Variablen werden beim Start der Shell von den Umgebungsvariablen geerbt und können über den Exportbefehl in den untergeordneten Prozess exportiert werden. Umgebungsvariablen können zur Übergabe von Parametern, Konfigurationsdateien usw. verwendet werden.
  • Lokale Variablen: Diese Variablen werden in einem Skript oder Befehl definiert und sind nur innerhalb der aktuellen Shell-Instanz gültig. Lokale Variablen können zum Speichern temporärer Daten, Funktionsparameter usw. verwendet werden.
  • Shell-Variablen: Bei diesen Variablen handelt es sich um spezielle Variablen, die vom Shell-Programm festgelegt werden. Einige davon sind Umgebungsvariablen und andere lokale Variablen. Shell-Variablen stellen den normalen Betrieb der Shell sicher. Beispielsweise stellt die Variable $HOME das Home-Verzeichnis des aktuellen Benutzers dar.

        Fügen Sie beim Definieren einer Variablen kein Dollarzeichen zum Variablennamen hinzu, z. B. Variable. Wenn Sie eine Variable verwenden möchten, müssen Sie dem Variablennamen ein Dollarzeichen voranstellen, z. B. $variable. Die geschweiften Klammern außerhalb des Variablennamens sind optional. Sie können sie hinzufügen oder nicht. Die geschweiften Klammern werden hinzugefügt, um dem Interpreter die Identifizierung der Grenzen der Variablen zu erleichtern. Es wird empfohlen, allen Variablen geschweifte Klammern hinzuzufügen. Dies ist eine gute Programmiergewohnheit .

#!/bin/bash
echo $PATH
hello=" world"
echo $hello

echo ${hello}

Beispielsweise geben wir $PATH zurück, um die Umgebungsvariable anzuzeigen, und definieren dann die lokale Variable hello. Zu diesem Zeitpunkt wird $ nicht hinzugefügt, aber wenn wir es verwenden möchten, müssen wir $hello verwenden. Wenn Sie sich jedoch daran gewöhnen möchten, ist es besser, eine geschweifte Klammer hinzuzufügen.

Und wenn wir eine Variable definieren möchten, die das Ergebnis der vorherigen Anweisung ist, wird dies beispielsweise auch über $ oder „xxx“ erreicht

#!/bin/bash

path=$(pwd)

files=`ls -al`

echo current path: $path

echo files: $files

Wir verwenden $(pwd), um das Ergebnis der Ausführung der pwd-Anweisung darzustellen, das den aktuellen absoluten Pfad darstellt, und speichern es in der Pfadvariablen.

Wir lassen Dateien das Ergebnis der Ausführung von ls -al zuweisen, was die Anweisung zum Auflisten aller Dateien ist.

In der dritten Zeile wird einfach $path angezeigt. Hier gibt es keine Operation. Es wird lediglich die Pfadvariable übernommen und angezeigt.

Die vierte Zeile, $files, wird hier angezeigt, sodass das Anzeigeergebnis alle Dateien auflistet.

Zeichenfolge

        Beim Schreiben von Shell-Skripten verwenden wir häufig Zeichenfolgen, da viele Dinge benannt werden müssen und Zeichen erfordern. In den meisten Hochsprachen haben einfache und doppelte Anführungszeichen unterschiedliche Bedeutungen. In C# sind einfache Anführungszeichen beispielsweise Zeichen und doppelte Anführungszeichen Zeichenfolgen. In einigen höheren Sprachen sind sie identisch, z. B. einfache und doppelte Anführungszeichen Anführungszeichen in Python. Die Bedeutung ist dieselbe.

Apostroph

        Zu diesem Zeitpunkt müssen wir die Shell verwenden. Der Unterschied zwischen einfachen und doppelten Anführungszeichen ist relativ groß. In Shell-Skripten stellen einfache Anführungszeichen Zeichenfolgen dar. Alles, was in einfache Anführungszeichen geschrieben wird, wird unverändert ausgegeben und nicht erneut ausgeführt. Die Variablen sind ungültig. Und einfache Anführungszeichen können nicht in einfache Anführungszeichen geschachtelt werden. Zum Beispiel

hello="world"

greet='Hello ${hello}'

echo $greet

Wie wird Ihrer Meinung nach das Ergebnis aussehen? Die Ausgabe ist Hallo ${hello}

Anführungszeichen

        Doppelte Anführungszeichen sind unterschiedlich. Bei doppelten Anführungszeichen wird dem Variablennamen ein $ vorangestellt, das Backquote-Zeichen und das Escape-Zeichen werden ausgeführt, andere Sonderzeichen werden jedoch deaktiviert.

hello="world"

greet2="Hello ${hello}"

greet3="'Hello ${hello}'"

echo $greet2


第一次输出都是 Hello World

第二次输出是 'Hello World',这时候单引号的功能关闭了

Teilzeichenfolgen, Länge und Suche

root@93da3b39d1f0:/# string="abcdefg"

#获取字符串的子串
root@93da3b39d1f0:/# echo ${string:1:4}
bcde

#获取字符串的长度
root@93da3b39d1f0:/# echo ${#string}
7

#查找字符串中d的位置
root@93da3b39d1f0:/# echo `expr index "$string" d`
4

#查找字符串那种e的位置
root@93da3b39d1f0:/# echo `expr index "$string" e`
5

#我们如果查找一个不存在的,这时候只匹配第一个
root@93da3b39d1f0:/#echo `expr index "$string" eag`
5


Parameter

        Im Allgemeinen sind Parameter für ein Programm erforderlich. Ich habe beispielsweise eine Datei namens test.sh. Wenn ich die Parameter direkt übergebe und gemäß meinen Parametern arbeite, muss ich die Anforderungen des Skripts nicht verstehen alle. Ich brauche nur die Parameter. .

参数长度为:$#
第一个参数为:$1  
第二个参数为:$2  
第三个参数为:$3  

Zusätzlich zur Parameterverarbeitung im obigen Beispiel werden mehrere Sonderzeichen zur Parameterverarbeitung verwendet:

  • #Anzahl der an das Skript übergebenen Parameter
  • $* zeigt alle an das Skript übergebenen Parameter als einzelne Zeichenfolge an. Wenn „“ in „“ eingeschlossen ist, werden alle Parameter in der Form „12n“ ausgegeben.
  • $? Aktuelle Prozess-ID-Nummer, in der das Skript ausgeführt wird
  • $! ID-Nummer des letzten im Hintergrund laufenden Prozesses
  •  Identisch mit $?, wird jedoch in Anführungszeichen verwendet und gibt jeden Parameter in Anführungszeichen zurück. Wenn „@“ in „“ eingeschlossen ist, werden alle Parameter in der Form „1“ „2“ „n“ ausgegeben.
  • – Zeigt die aktuell von der Shell verwendeten Optionen an, die dieselbe Funktion wie der Set-Befehl haben.
  • ? Zeigt den Exit-Status des letzten Befehls an. 0 bedeutet keine Fehler, jeder andere Wert weist auf einen Fehler hin.

        Zusammenfassend lässt sich sagen, dass Shell-Parameter Eingaben für das Skript bereitstellen können, sodass das Skript entsprechende Vorgänge basierend auf diesen Parametern ausführen kann. Indem wir die Verwendung von Shell-Parametern beherrschen, können wir Shell-Skripte flexibler schreiben und ausführen.

Prozesssteuerung

Die if else-Anweisung verwendet if und fi als Anfang und Ende und dann und else als bedingten Übergang in der Mitte.

if [ -f "file.txt" ]; then  
 echo "文件存在"  
else  
 echo "文件不存在"  
fi  

Schleifenanweisung

Sie können die Schlüsselwörter for, while und Until verwenden, um Schleifen in Shell-Skripten zu implementieren. Unter diesen wird die for-Schleife verwendet, um die Elemente in der Liste zu durchlaufen, die while-Schleife wird verwendet, um den Code wiederholt auszuführen, wenn die Bedingung wahr ist, und die Until-Schleife wird verwendet, um den Code wiederholt auszuführen, wenn die Bedingung nicht wahr ist.

for i in {1..10}; do  
 echo $i  
done  

count=1  
while [ $count -le 10 ]; do  
 echo "计数:$count"  
 count=$((count+1))  
done  

Jump-Anweisung

Sie können die Schlüsselwörter „break“, „continue“ und „shift“ in Shell-Skripten verwenden, um Sprünge zu implementieren. Unter diesen wird das Schlüsselwort „break“ verwendet, um aus der aktuellen Schleife zu springen, das Schlüsselwort „continue“ wird verwendet, um den verbleibenden Teil der aktuellen Schleife zu überspringen, und das Schlüsselwort „shift“ wird verwendet, um den Schleifenzähler um 1 zu verringern.

for i in {1..10}; do  
 if [ $i -eq 10 ]; then  
   break  
 fi  
 echo $i  
done  

Rechenzeichen

        Shell unterstützt eine Vielzahl arithmetischer Operatoren, die hauptsächlich zum Berechnen und Bearbeiten von Zahlen verwendet werden. Im Folgenden sind einige häufig verwendete Shell-Rechenoperatoren aufgeführt:

  1. +: Additionsoperator. Beispiel: a=3; b=5; echo $a+$b, das Ausgabeergebnis ist 8.
  2. -: Subtraktionsoperator. Beispiel: a=3; b=5; echo $a-$b, das Ausgabeergebnis ist -2.
  3. *: Multiplikationsoperator. Beispiel: a=3; b=5; echo $a*$b, das Ausgabeergebnis ist 15.
  4. /: Divisionsoperator. Beispiel: a=6; b=3; echo $a/$b, das Ausgabeergebnis ist 2. Beachten Sie, dass das Ergebnis einer Divisionsoperation immer eine Ganzzahl ist, auch wenn der Dezimalteil der Eingabe abgeschnitten wird.
  5. %: Modulo-Operator (Rest). Beispiel: a=6; b=3; echo $a%$b, das Ausgabeergebnis ist 0.
  6. <<: Linksverschiebungsoperator. Beispiel: a=5; echo $a<<2, das Ausgabeergebnis ist 13. Die Linksverschiebung verschiebt die Binärzahl um die angegebene Anzahl von Stellen nach links und füllt die frei gewordenen Bits auf der rechten Seite mit Nullen.
  7. >>: Rechter Shift-Operator. Beispiel: a=5; echo $a>>2, das Ausgabeergebnis ist 1. Die Rechtsverschiebungsoperation verschiebt die Binärzahl um die angegebene Anzahl von Stellen nach rechts und füllt die frei gewordenen Bits auf der linken Seite mit Nullen.
  8. ^: Exklusiver ODER-Operator (XOR). Beispiel: a=5; b=3; echo $a^$b, das Ausgabeergebnis ist 6. Das Ergebnis der XOR-Operation ist die Summe der verschiedenen Bits der entsprechenden Bits der beiden Binärzahlen. Wenn sie gleich sind, ist es 0, und wenn sie unterschiedlich sind, ist es 1.
  9. &&: Logischer UND-Operator. Beispiel: a=0; b=1; echo $a&&$b, das Ausgabeergebnis ist 0. Wenn das Ergebnis der logischen UND-Verknüpfung wahr ist, wird 1 zurückgegeben, andernfalls wird 0 zurückgegeben.
  10. ||: logischer ODER-Operator. Beispiel: a=0; b=1; echo $a||$b, das Ausgabeergebnis ist 1. Wenn das Ergebnis der logischen ODER-Verknüpfung wahr ist, wird 1 zurückgegeben, andernfalls wird 0 zurückgegeben.

        Diese arithmetischen Operatoren werden häufig in Shell-Skripten verwendet, um einfache numerische Berechnungen und logische Operationen zu implementieren. Es ist zu beachten, dass Shell über schwache Rechenfähigkeiten verfügt und es empfohlen wird, professionelle Mathematiksoftware oder Programmiersprachen zu verwenden, um komplexe mathematische Operationen durchzuführen.

Vergleichsoperatoren

        Shell unterstützt eine Vielzahl relationaler Operatoren, die hauptsächlich zum Vergleich der Größe zweier Zahlen verwendet werden. Im Folgenden sind einige häufig verwendete Shell-Relationsoperatoren aufgeführt:

  1. -eq: Gleichheitsoperator. Zum Beispiel: a=3; b=5; if [ $a -eq $b ]; then echo „a is equal to b“; else echo „a is not equal to b“; fi, das Ausgabeergebnis ist „a ist ungleich b".
  2. -ne: ungleich dem Operator. Zum Beispiel: a=3; b=5; if [ $a -ne $b ]; then echo „a is not equal to b“; else echo „a is equal to b“; fi, das Ausgabeergebnis ist „a ist ungleich b".
  3. -lt: kleiner als Operator. Zum Beispiel: a=3; b=5; if [ $a -lt $b ]; then echo „a ist kleiner als b“; sonst echo „a ist größer oder gleich b“; fi, das Ausgabeergebnis ist „a ist kleiner als b“.
  4. -le: kleiner oder gleich dem Operator. Zum Beispiel: a=3; b=5; if [ $a -le $b ]; then echo „a ist kleiner oder gleich b“; sonst echo „a ist größer als b“; fi, das Ausgabeergebnis ist „a ist kleiner oder gleich b“.
  5. -gt: größer als der Operator. Zum Beispiel: a=3; b=5; if [ $a -gt $b ]; then echo „a ist größer als b“; sonst echo „a ist kleiner oder gleich b“; fi, das Ausgabeergebnis ist „a ist größer als b“.
  6. -ge: Größer oder gleich dem Operator. Zum Beispiel: a=3; b=5; if [ $a -ge $b ]; then echo „a ist größer oder gleich b“; sonst echo „a ist kleiner als b“; fi, das Ausgabeergebnis ist „a ist größer oder gleich b“.

        Diese relationalen Operatoren werden häufig in Shell-Skripten verwendet, um einfache Größenvergleichsoperationen durchzuführen. Es ist jedoch zu beachten, dass die Vergleichsoperatoren von Shell nur Zahlen und keine Zeichenfolgen vergleichen können. Wenn Sie Zeichenfolgen vergleichen müssen, können Sie Zeichenfolgenoperatoren wie ==, !=, >, < usw. verwenden.

Logische Operatoren


        Shell unterstützt eine Vielzahl logischer Operatoren, die hauptsächlich zum Kombinieren und Steuern der Ausführung bedingter Anweisungen verwendet werden. Im Folgenden sind einige häufig verwendete logische Shell-Operatoren aufgeführt:

  1. &&: Logischer UND-Operator. Gibt an, dass die Bedingung nur dann wahr ist, wenn beide Befehle davor und danach erfolgreich ausgeführt wurden. Beispiel: Befehl1 && Befehl2 bedeutet, dass Befehl2 erst ausgeführt wird, nachdem Befehl1 erfolgreich ausgeführt wurde.
  2. ||: Logischer ODER-Operator. Zeigt an, dass die Bedingung wahr ist, wenn einer der beiden Befehle davor und danach erfolgreich ausgeführt wurde. Beispiel: Befehl1 || Befehl2, was bedeutet, dass die Bedingung wahr ist, solange entweder Befehl1 oder Befehl2 erfolgreich ausgeführt wird.
  3. !: Logischer NOT-Operator. Drückt die Negation einer bestimmten Bedingung aus. Beispiel: !command_success, was angibt, dass die command_success-Bedingung falsch ist.
  4. &&&: Logischer UND-Operator. Gibt an, dass die Bedingung nur dann wahr ist, wenn sowohl der vorherige als auch der folgende Befehl erfolgreich ausgeführt wurden. Im Gegensatz zu && verhindert &&& jedoch, dass der nachfolgende Befehl ausgeführt wird, wenn der vorherige Befehl fehlschlägt. Beispiel: Befehl1 &&& Befehl2 bedeutet, dass Befehl2 erst ausgeführt wird, nachdem Befehl1 erfolgreich ausgeführt wurde. Wenn Befehl1 jedoch fehlschlägt, wird Befehl2 nicht ausgeführt.
  5. ||&: Logischer ODER &-Operator. Dies bedeutet, dass die Bedingung wahr ist, wenn einer der beiden Befehle davor und danach erfolgreich ausgeführt wird. Im Gegensatz zu || verhindert ||& jedoch die Ausführung des nachfolgenden Befehls, wenn der vorherige Befehl erfolgreich ist. Beispiel: Befehl1 ||& Befehl2 bedeutet, dass Befehl2 nicht ausgeführt wird, solange Befehl1 erfolgreich ausgeführt wird.

        Diese logischen Operatoren können Ihnen dabei helfen, komplexere bedingte Anweisungen zu erstellen, um unterschiedliche Anforderungen zu erfüllen. Sie können beispielsweise && und || verwenden, um mehrere Befehle zu kombinieren, um eine sequentielle Ausführung, Verzweigungsausführung usw. zu erreichen. Es ist zu beachten, dass die Rangfolge der logischen Operatoren von links nach rechts in der Reihenfolge der Befehle berechnet wird.

Supongo que te gusta

Origin blog.csdn.net/u013379032/article/details/131949066
Recomendado
Clasificación