GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Set-Befehl und seine Verwendung {9 Beispiele}

Einführung

Der Satz Der Befehl ist ein integrierter Linux-Shell-Befehl, der die Namen und Werte von Shell- und Linux-Umgebungsvariablen anzeigt und festlegt. Auf Unix-ähnlichen Betriebssystemen ist das set Befehlsfunktionen innerhalb der Bourne-Shell (sh ), C-Shell (csh ) und Korn-Shell (ksh ).

In diesem Tutorial erfahren Sie, was der set Befehl ist und wie man ihn benutzt.

Voraussetzungen

  • Ein System, auf dem Linux ausgeführt wird.
  • Zugriff auf ein Terminal/eine Befehlszeile.

Linux set Befehlssyntax

Die allgemeine Syntax für den set Befehl ist:

set [options] [arguments]

Optionen

Im Kontext des set Befehl, [Optionen] sind Einstellungen oder Flags, die in der Bash-Shell-Umgebung gesetzt oder nicht gesetzt sind. Verwenden Sie es, um das Verhalten definierter Shell-Skripte zu beeinflussen und die Ausführung der gewünschten Aufgaben zu unterstützen.

  • Stellen Sie eine Option mit einem Minuszeichen ein (- ) gefolgt von der entsprechenden Option.
  • Deaktivieren Sie eine Option mit einem Pluszeichen (+ ) gefolgt von der entsprechenden Option.

Argumente

[Argumente] sind Positionsparameter und werden der Reihe nach mit den folgenden Parametern zugewiesen:

  • $1
  • $2
  • ...
  • $n

Wenn Sie keine Optionen oder Argumente angeben, gibt der Befehl alle Shell-Variablen aus.

Exit-Werte

Der Satz Der Befehl hat drei Exit-Werte:

  • 0 . Markiert einen erfolgreichen Abschluss.
  • 1 . Fehler verursacht durch ein ungültiges Argument.
  • 2 . Fehler, der zu einer Verwendungsmeldung führt, normalerweise weil ein Argument fehlt.

Linux set Command Options

Der Satz Der Befehl bietet eine umfangreiche Liste von Optionen, die kombiniert werden können.

Die meisten Optionen haben ein entsprechendes -o Flag die verwendet werden kann, um die Option aufzurufen. Die folgende Tabelle listet alle Optionen und ihre jeweilige alternative Form mit dem -o Flag auf Syntax.

Optionen -o-Flags Beschreibung
-a -o allexport Markiert alle erstellten oder geänderten Variablen oder Funktionen für den Export.
-b -o benachrichtigen Warnt den Benutzer bei Beendigung des Hintergrundjobs.
-e -o errexit Weist eine Shell an, sich zu beenden, wenn ein Befehl fehlschlägt, d. h. wenn sie einen Nicht-Null-Ausgangsstatus ausgibt.
-f -o noglob Deaktiviert die Generierung von Dateinamen (Globbing).
-h -o hashall Sucht und speichert Funktionsbefehle, wenn eine Funktion definiert ist. Das -h Option ist standardmäßig aktiviert.
-k -o Schlüsselwort Platziert alle Zuweisungsargumente in der Umgebung für einen Befehl, nicht nur die vor dem Befehlsnamen.
-n -o noexec Liest Befehle, führt sie aber nicht aus.
-m -o monitor Zeigt eine Nachricht an, wenn eine Aufgabe abgeschlossen ist.
-p -o privilegiert Deaktiviert den $ENV Dateiverarbeitung und Shell-Funktionen importieren. Das -p Die Option ist standardmäßig aktiviert, wenn die tatsächlichen und effektiven Benutzer-IDs nicht übereinstimmen. Deaktivieren setzt die effektive uid und gid auf die reale uid und gid.
-t -o onecmd Liest einen Befehl und beendet sich dann.
-u -o Substantivmenge Behandelt nicht gesetzte oder nicht definierte Variablen beim Ersetzen (während der Parametererweiterung) als Fehler. Gilt nicht für spezielle Parameter wie den Platzhalter * oder @ .
-v -o ausführlich Druckt Shell-Eingabezeilen aus, während sie gelesen werden.
-x -o xtrace Gibt Befehlsargumente während der Ausführung aus.
-B -obraceexpand Führt die Erweiterung der Shell-Klammer durch.
-C -o noclobber Verhindert das Überschreiben vorhandener regulärer Dateien durch Ausgabeumleitung. Standardmäßig lässt Bash zu, dass umgeleitete Ausgaben vorhandene Dateien überschreiben.
-E -o errtrace Veranlasst Shell-Funktionen, die ERR-Falle zu erben.
-H -o histexpand Aktiviert die Ersetzung des Stilverlaufs. Die Option ist standardmäßig aktiviert, wenn die Shell interaktiv ist.
-P -o physisch Verhindert das Folgen symbolischer Links beim Ausführen von Befehlen.
-T -o Funktrace Veranlasst Shell-Funktionen, den DEBUG-Trap zu erben.
-- nicht zutreffend Weist die verbleibenden Argumente den Positionsparametern zu. Wenn keine verbleibenden Argumente vorhanden sind, werden die Positionsparameter zurückgesetzt.
- nicht zutreffend Weist den Positionsparametern alle verbleibenden Argumente zu. Deaktiviert -x und -v Optionen.
nicht zutreffend -o emacs Verwendet eine Emacs-artige Zeilenbearbeitungsschnittstelle.
nicht zutreffend -o Verlauf Aktiviert den Befehlsverlauf.
nicht zutreffend -oignoreeof Die Shell wird beim Lesen des Dateiendes nicht beendet.
nicht zutreffend -o interaktive Kommentare Erlaubt Kommentare in interaktiven Befehlen.
nicht zutreffend -o nolog Erfasst keine Funktionsdefinitionen in der Verlaufsdatei.
nicht zutreffend -o Pipefail Der Rückgabewert einer Pipeline ist der Status des letzten Befehls, der beim Beenden einen Nicht-Null-Status hatte. Wenn kein Befehl beim Beenden einen Nicht-Null-Status hatte, ist der Wert Null.
nicht zutreffend -o posix Bewirkt, dass Bash dem Standard entspricht, wenn die Standardoperation vom Posix-Standard abweicht.
nicht zutreffend -o vi Verwendet eine Zeilenbearbeitungsschnittstelle ähnlich vi .

Beispiele für Linux-Set-Befehle

Dieser Abschnitt listet Beispiele für die häufigsten Verwendungen von set auf Befehl.

Verwendung des set-Befehls ohne Optionen

Das Ausführen des Befehls ohne Optionen oder Argumente gibt eine Liste aller Einstellungen aus – die Namen und Werte aller Shell-Variablen und -Funktionen. Da die Liste sehr lang ist, können Sie sie mit Bild nach oben durchblättern und Bild nach unten Tasten.

Es folgt ein Beispiel für einen teilweisen Codesatz Befehlsausgabe:

Skript-Debugging

Der Satz Der Befehl ist besonders praktisch, wenn Sie versuchen, Ihre Skripts zu debuggen. Verwenden Sie das -x Option mit set Befehl, um zu sehen, welcher Befehl in Ihrem Skript nach dem Ergebnis ausgeführt wird, sodass Sie das Ergebnis jedes Befehls bestimmen können.

Das folgende Beispiel zeigt, wie Sie Skripts mit set -x debuggen . Führen Sie die folgenden Schritte aus:

1. Führen Sie set -x aus :

set -x

2. Verwenden Sie Ihren bevorzugten Texteditor (wir verwenden den vi-Editor), um ein Skript zu erstellen. Wir haben eine einfache Schleife erstellt, die es uns ermöglicht, -x zu sehen Optionseffekte:

x=10
while [ $x -gt 0 ]; do
         x=$[ $x-1 ]
         echo $x
         sleep 2
done

3. Stellen Sie sicher, dass Sie das Skript chmod machen, um es ausführbar zu machen. Dieser Schritt ist immer obligatorisch, bevor ein Skript ausgeführt wird . Die Syntax lautet:

chmod +x [script-name.sh]

4. Führen Sie das Skript aus. Die Syntax lautet:

./[script-name.sh]

Die Ausgabe druckt jeweils eine Zeile, führt sie aus, zeigt das Ergebnis an, falls vorhanden, und fährt mit der nächsten Zeile fort.

Eine andere Möglichkeit, das Debugging zu aktivieren, besteht darin, -x einzufügen Flag in der Shebang-Zeile des Skripts:

#!/bin/bash -x

Skript-Export

Exportieren Sie automatisch alle Variablen oder Funktionen, die mit -a erstellt wurden Möglichkeit. Das Exportieren von Variablen oder Funktionen ermöglicht es anderen Subshells und Skripten, sie zu verwenden.

Aktivieren Sie den Skriptexport, indem Sie den folgenden Befehl ausführen:

set -a

Das folgende Beispiel zeigt, wie der Skriptexport funktioniert. Führen Sie die folgenden Schritte aus:

1. Erstellen Sie mit dem Editor Ihrer Wahl ein neues Skript. Zum Beispiel:

one=1
two=2
three=3
four=4
/bin/bash

Die Datei /bin/bash Argument markiert den Beginn einer neuen Shell.

2. Prüfen Sie, ob das Skript in einer neuen Shell funktioniert:

echo $one $two $three $four

Die Ausgabe beweist, dass die von uns erstellte Funktion exportiert wurde und auch beim Starten einer neuen Shell funktioniert.

Beenden, wenn ein Befehl fehlschlägt

Verwenden Sie das -e Option, um ein Skript zum Beenden anzuweisen, wenn während der Ausführung ein Fehler auftritt. Das Anhalten eines teilweise funktionsfähigen Skripts hilft, Probleme oder falsche Ergebnisse zu vermeiden.

Erstellen Sie ein Skript mit folgendem Inhalt, um diese Option zu testen:

#!/bin/bash
set -e
cat nonexistingfile
echo "The end"

Im obigen Beispiel trifft das Skript auf einen Fehler, wenn es versucht, den Inhalt von nonexistingfile anzuzeigen weil diese Datei nicht existiert, was dazu führt, dass sie an diesem Punkt beendet wird. Also das letzte echo Befehl wird nicht ausgeführt.

Datenverlust verhindern

Die Standardeinstellung von Bash besteht darin, vorhandene Dateien zu überschreiben. Verwenden Sie jedoch -C Die Option konfiguriert Bash so, dass eine vorhandene Datei bei der Ausgabeumleitung mit > nicht überschrieben wird , >& , oder <> wird zu dieser Datei umgeleitet.

Zum Beispiel:

Bash erlaubt uns zunächst, die listing.txt zu überschreiben Datei. Nach dem Ausführen von set -C Befehl gibt Bash eine Meldung aus, die besagt, dass eine vorhandene Datei nicht überschrieben werden kann.

Nicht vorhandene Variablen melden

Die Standardeinstellung in Bash ist, nicht vorhandene Variablen zu ignorieren und mit vorhandenen zu arbeiten. Mit -u verhindert, dass Bash Variablen ignoriert, die nicht existieren, und veranlasst es, das Problem zu melden.

Das folgende Skript enthält beispielsweise nicht das set -u Befehl und Bash ignoriert diesen $var2 ist nicht definiert.

#!/bin/bash
var1="123"
echo $var1 $var2

Die Ausgabe enthält nur $var1 .

Ändern Sie jedoch das Skript und fügen Sie set -u hinzu verhindert, dass Bash das Problem ignoriert und meldet es:

#!/bin/bash
set -u
var1="123"
echo $var1 $var2

Positionsparameter festlegen

Der Satz Der Befehl kann Positionsparametern auch Werte zuweisen. Ein Positionsparameter ist eine Shell-Variable, auf deren Wert mit der folgenden Syntax verwiesen wird:

$[N]

Das [N] value ist eine Ziffer, die die Position des Parameters angibt. Beispiel:$1 ist der erste Positionsparameter, $2 ist der zweite Parameter usw.

Zum Beispiel:

set first second third

Wenn Sie den obigen Befehl ausführen, wird first festgelegt um dem $1 zu entsprechen Positionsparameter, Sekunde zu $2 , und dritte auf $3 . Überprüfen Sie dies mit dem echo-Befehl:

echo $2

Setzen Sie Positionsparameter zurück, indem Sie Folgendes ausführen:

set --

Split Strings

Verwenden Sie das set Befehl zum Aufteilen von Zeichenfolgen basierend auf Leerzeichen in separate Variablen. Teilen Sie beispielsweise die Zeichenfolgen in einer Variablen namens myvar auf , das "Dies ist ein Test" sagt .

myvar="This is a test"

set -- $myvar
echo $1
echo $2
echo $3
echo $4

Verwenden Sie diese Option, um Informationen aus der Ausgabe eines Befehls zu extrahieren und herauszufiltern, ähnlich wie der Befehl awk.

Alle Export- und Benachrichtigungs-Flags setzen

Der -o allexport Das Flag ermöglicht den automatischen Export aller nachfolgend definierten Variablen, während das -o Notify Flag weist die Shell an, Auftragsabschlussmeldungen sofort auszugeben.

Führen Sie zum Setzen der Flags Folgendes aus:

set -o allexport -o notify

Im folgenden Beispiel sehen wir, dass die Shell Sie nach Abschluss des Hintergrundjobs benachrichtigt, seit das Skript exportiert wurde:


Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie den Verlaufsbefehl unter Linux

  3. So verwenden Sie den Su-Befehl unter Linux

  4. So verwenden Sie den Linux-Bildschirmbefehl

  5. So verwenden Sie den Befehl ldconfig unter Linux

So verwenden Sie den Befehl sysctl unter Linux

So verwenden Sie den Befehl zum Herunterfahren von Linux

So verwenden Sie grep unter Linux

So verwenden Sie den Mkdir-Befehl unter Linux

So verwenden Sie den Jobs-Befehl unter Linux

So verwenden Sie den Bildschirmbefehl unter Linux