Lernen Sie einfach Linux-Pipe-Symbole, Umleitungen und Umgebungsvariablen

Die Eingabeumleitung bezieht sich auf das Importieren von Dateien in Befehle, während sich die Ausgabeumleitung auf das Schreiben von Dateninformationen, die ursprünglich auf dem Bildschirm ausgegeben werden, in eine bestimmte Datei bezieht. Im täglichen Studium und bei der Arbeit verwenden wir die Ausgabeumleitung häufiger als die Eingabeumleitung. Daher ist die Ausgabeumleitung in zwei verschiedene Technologien unterteilt: Standardausgabeumleitung und Fehlerausgabeumleitung sowie zwei Modi für das Schreiben und Anhängen des Schreibens

➢ Standard-Eingabeumleitung 0: Standardmäßig Eingabe über die Tastatur oder Eingabe aus anderen Dateien oder Befehlen.
➢ Standard-Ausgabeumleitung 1: Standardmäßig Ausgabe auf dem Bildschirm.
➢ Fehlerausgabe-Umleitung 2: Standardmäßig Ausgabe auf dem Bildschirm

touch linuxprobe
ls -l linuxprobe
ls -l xxxx

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Schreiben Sie die ursprünglich vom man bash-Befehl auf dem Bildschirm ausgegebenen Informationen über die Standardausgabeumleitung in die Datei readme.txt und zeigen Sie dann den Inhalt der Datei readme.txt an. Die spezifischen Befehle lauten wie folgt:

man bash > readme.txt
cat readme.txt

Schreiben Sie zunächst mehrere Datenzeilen in die Datei readme.txt (die Datei enthält bereits die Man-Befehlsinformationen aus dem vorherigen Experiment), indem Sie den Schreibmodus überschreiben. Es ist zu beachten, dass beim Schreiben von Daten in eine Datei im Überschreibmodus der zuletzt geschriebene Inhalt jedes Mal überschrieben wird, sodass nur das letzte Schreibergebnis in der endgültigen Datei enthalten ist:

echo "welcome to LinuxProbe1.Com" > readme.txt
echo "welcome to LinuxProbe2.Com" > readme.txt
echo "welcome to LinuxProbe3.Com" > readme.txt
echo "welcome to LinuxProbe4.Com" > readme.txt
cat readme.txt

Schreiben Sie dann einmal Daten über den Append-Schreibmodus in die Datei readme.txt. Nach der Ausführung des Befehls cat können Sie den Inhalt der Datei wie unten gezeigt sehen:

echo "Quality linux learning materials" >> readme.txt
cat readme.txt

Obwohl es sich bei beiden um Ausgabeumleitungstechnologien handelt, gibt es dennoch Unterschiede zwischen der Standardausgabe und der Fehlerausgabe des Befehls. Um beispielsweise die Informationen einer Datei im aktuellen Verzeichnis zu überprüfen, nehmen wir hier die Linuxprobe-Datei als Beispiel. Da diese Datei tatsächlich existiert, können die Informationen, die ursprünglich auf dem Bildschirm ausgegeben werden sollten, mit der Standardausgabe in die Datei geschrieben werden, die falsche Ausgabeumleitung gibt die Informationen jedoch trotzdem auf dem Bildschirm aus.

ls -l linuxprobe > /root/stderr.txt
ls -l linuxprobe 2> /root/stderr.txt

Was soll ich tun, wenn ich die Fehlermeldung des Befehls in eine Datei schreiben möchte? Dieser Vorgang ist besonders nützlich und praktisch, wenn der Benutzer ein automatisiertes Shell-Skript ausführt, da er die Fehlerinformationen während des gesamten Skriptausführungsprozesses in einer Datei aufzeichnen kann, was für die Fehlerbehebung nach der Installation praktisch ist. Führen Sie als Nächstes eine experimentelle Demonstration mit einer Datei durch, die nicht existiert:

ls -l xxxxx > /root/stderr.txt
ls -l xxxx 2> /root/stdeerr.txt
cat /root/stderr.txt

Eine weitere häufige Situation besteht darin, dass wir nicht zwischen Standardausgabe und Fehlerausgabe unterscheiden möchten. Solange der Befehl über Ausgabeinformationen verfügt, werden diese alle an die Datei angehängt. Hier kommt der &>>-Operator zum Einsatz:

ls -l linuxprobe &>> readme.txt
ls -l xxxxx &>> readme.txt

Die Eingabeumleitung ist relativ unbeliebt und die Wahrscheinlichkeit, bei der Arbeit darauf zu stoßen, ist geringer. Die Aufgabe der Eingabeumleitung besteht darin, die Datei direkt in den Befehl zu importieren. Als nächstes verwenden Sie die Eingabeumleitung, um die Datei readme.txt in den Befehl wc -l zu importieren und zählen die Anzahl der Inhaltszeilen in der Datei:

wc -l < readme.txt
wc -l /etc/passwd

Es gibt keinen Dateinamen, da das zuvor verwendete „wc -l /etc/passwd“ ein sehr standardmäßiges Ausführungsformat „Befehl + Parameter + Objekt“ ist und dieses Mal „wc -l < ​​​​readme.txt“ lautet Der Inhalt der Datei readme.txt wird über den Operator in den Befehl importiert und nicht als Befehlsobjekt ausgeführt. Daher kann der Befehl wc nur die Informationsflussdaten lesen, ohne die Informationen des Dateinamens.

Pipeline-Befehl

➢ Der Befehl zum Ermitteln der eingeschränkten Anmeldebenutzer lautet grep /sbin/nologin /etc/passwd;
➢ Der Befehl zum Zählen der Anzahl der Textzeilen lautet wc–l.
Was Sie jetzt tun müssen, ist, den Ausgabewert des grep-Suchbefehls an den wc-Statistikbefehl zu übergeben, dh die Benutzerinformationsliste, die ursprünglich auf dem Bildschirm ausgegeben wurde, zur weiteren Verarbeitung an den wc-Befehl zu übergeben, sodass Sie dies nur noch tun müssen Fügen Sie das Pipe-Symbol wie folgt in die beiden Befehle dazwischen ein:

grep /sbin/nologin/etc/passwd | wc -l

Zeigen Sie beispielsweise die Dateiliste und die Attributinformationen im Verzeichnis / etc an, indem Sie die Seiten umblättern (diese Inhalte werden standardmäßig auf dem Bildschirm angezeigt, was überhaupt nicht klar ist):

ls -l /etc/ | more

Wenn Sie das Passwort eines Benutzers ändern, ist es normalerweise erforderlich, das Passwort zur Bestätigung zweimal einzugeben, was beim Schreiben von Automatisierungsskripten zu einem sehr schwerwiegenden Fehler wird. Durch die Kombination des Pipe-Zeichens mit dem Parameter –stdin des Befehls passwd können Sie den Vorgang zum Zurücksetzen des Passworts mit einem einzigen Befehl abschließen:

echo "linuxprobe" | passwd --stdin root

Wenn Sie das Passwort eines Benutzers ändern, ist es normalerweise erforderlich, das Passwort zur Bestätigung zweimal einzugeben, was beim Schreiben von Automatisierungsskripten zu einem sehr schwerwiegenden Fehler wird. Durch die Kombination des Pipe-Zeichens mit dem Parameter –stdin des Befehls passwd können Sie den Vorgang zum Zurücksetzen des Passworts mit einem einzigen Befehl abschließen:

ps aux | grep bash

Wenn Sie das verarbeitete Ergebnis des Pipe-Zeichens auf dem Bildschirm ausgeben und gleichzeitig in eine Datei schreiben müssen, können Sie es in Verbindung mit dem Befehl tee verwenden.

ps aux | grep bash | tee result.txt

Platzhalter in der Befehlszeile

Eine Möglichkeit, die relevanten Berechtigungsattribute aller Festplattendateien stapelweise anzuzeigen, ist wie folgt:

ls -l /dev/sda
ls -l /dev/sdal
ls -l /dev/sad2
ls -l /dev/sda3

Wie der Name schon sagt, sind Platzhalter gängige Symbole zum Abgleichen von Informationen. Beispielsweise bedeutet ein Sternchen (*) die Übereinstimmung von null oder mehr Zeichen, ein Fragezeichen (?) bedeutet die Übereinstimmung eines einzelnen Zeichens und das Hinzufügen von Zahlen [0-9] in eckigen Klammern bedeutet Übereinstimmung zwischen 0 und 9, und der Buchstabe [abc] in den eckigen Klammern bedeutet Übereinstimmung mit einem der drei Zeichen a, b und c. Die Platzhalter und ihre Bedeutung im Linux-System werden in der Tabelle angezeigt (ähnlich wie reguläre Ausdrücke in Python).
Fügen Sie hier eine Bildbeschreibung ein

um alle Dateien im Verzeichnis /dev abzugleichen, die mit sda beginnen:


ls -l /dev/sda*

Wenn Sie nur Informationen zu Dateien anzeigen möchten, deren Dateiname mit sda beginnt, aber von einem anderen Zeichen gefolgt wird, müssen Sie Fragezeichen als Platzhalter verwenden:

ls -l /dev/sda?

Zusätzlich zur Verwendung von [0-9], um eine einzelne Zahl zwischen 0 und 9 zu finden, können Sie auch [135] verwenden, um nur eine der drei angegebenen Zahlen zuzuordnen. Wenn keine Zahl 1, 2 oder 3 zutrifft, dann hat gewonnen. Ich werde nicht angezeigt:

ls -l /dev/sda[0-9]
ls -l /dev/sda[135]

Suchen Sie im Verzeichnis /etc/ nach allen Konfigurationsdateien mit der Endung .conf:

ls -l /etc/*.conf

Platzhalter können nicht nur zum Suchen nach Dateien oder zum Ersetzen von Platzhalterzeichen verwendet werden, sondern können auch mit Befehlen zum Erstellen von Dateien kombiniert werden, um mehrere Dateien auf einmal zu erstellen. Beim Erstellen mehrerer Dateien sind jedoch geschweifte Klammern erforderlich und die Felder werden durch Kommas getrennt:

touch {
    
    AA, BB, CC}.conf
ls -l *.conf

Einige spezifizierte Informationen können auch mit Wildcards ausgegeben werden:

echo file{
    
    1,2 3,4,5}

Gängige Escape-Zeichen

Die 4 am häufigsten verwendeten Escape-Zeichen sind unten aufgeführt.
➢ Backslash (\): Wandelt eine Variable nach dem Backslash in ein einfaches Zeichen um.
➢ Einfaches Anführungszeichen (''): Escapen Sie alle darin enthaltenen Variablen in eine einfache Zeichenfolge.
➢ Doppelte Anführungszeichen („ “): Behalten Sie die Variablenattribute im Inneren bei, ohne Escapezeichen.
➢ Backtick (` `): Führen Sie den Befehl aus und geben Sie das Ergebnis zurück.

Definieren Sie zunächst eine Variable mit dem Namen PRICE und weisen Sie ihr den Wert 5 zu. Geben Sie dann die Zeichenfolge und die Variableninformationen in doppelten Anführungszeichen aus:

PRICE=5
echo "Price is $PRICE"

echo "Price is $$PRICE"

echo "Price is \$$PRICE"

Und wenn Sie nur den Ausgabewert eines bestimmten Befehls benötigen, können Sie den Befehl in Backticks wie „Befehl“ einschließen, um den gewünschten Effekt zu erzielen. Kombinieren Sie beispielsweise Backticks mit dem Befehl uname -a und verwenden Sie dann den Befehl echo, um die lokale Linux-Version und Kernel-Informationen anzuzeigen:

echo `uname -a`

Die Funktionen von Backslashes und Backticks sind eindeutiger, und Schüler machen im Allgemeinen keine Fehler. Es kann jedoch leicht zu Verwirrung kommen, wenn doppelte Anführungszeichen verwendet werden, da es in den meisten Fällen so aussieht, als hätte das Hinzufügen oder Nichthinzufügen von doppelten Anführungszeichen den gleichen Effekt:

echo AA B CC
echo "AA BB CC"

Der Unterschied zwischen beiden besteht darin, dass der Benutzer nicht wissen kann, wie viele Parameter im ersten Ausführungsmodus vorhanden sind. Ja, ich bin mir nicht sicher! Denn es ist möglich, „AA BB CC“ direkt als gesamten Parameter auf dem Bildschirm auszugeben, und es ist auch möglich, AA, BB und CC separat auf dem Bildschirm auszugeben. Darüber hinaus besteht diese Situation auch bei Verwendung anderer Befehle, selbst wenn Sie den Mechanismus der Echo-Befehlsverarbeitungsparameter herausgefunden haben.

Hier ist ein einfacher Trick für alle. Obwohl er vielleicht nicht streng genug ist, ist er absolut einfach: Wenn der Parameter ein Leerzeichen enthält, fügen Sie doppelte Anführungszeichen hinzu. Wenn der Parameter kein Leerzeichen enthält, fügen Sie keine doppelten Anführungszeichen hinzu Markierungen.

wichtige Umgebungsvariablen

Im Linux-System werden Variablennamen im Allgemeinen in Großbuchstaben und Befehle in Kleinbuchstaben geschrieben, was eine Konvention darstellt.

ls
rm anaconda-ks.cfg

Mit dem Befehl alias können Sie Ihren eigenen Befehlsalias erstellen. Das Syntaxformat lautet „alias alias=command“. Um einen Befehlsalias abzubrechen, verwenden Sie den Befehl unalias. Das Syntaxformat lautet „unalias alias“.

Brechen Sie den durch den aktuellen rm-Befehl festgelegten Alias ​​ab und versuchen Sie dann, die Datei zu löschen:

unalias rm
rm initial -setup-ks.cfg

Mit „Befehlsnamen eingeben“ können Sie feststellen, ob es sich bei dem vom Benutzer eingegebenen Befehl um einen internen oder einen externen Befehl handelt:

type echo
type uptime

PATH ist eine Variable, die aus mehreren Pfadwerten besteht, und jeder Pfadwert wird durch einen Doppelpunkt getrennt. Das Hinzufügen und Löschen dieser Pfade wirkt sich auf die Suche des Bash-Interpreters nach Linux-Befehlen aus.

echo $PATH
PATH = $PATH:/root/bin
echo $PATH

Fügen Sie hier eine Bildbeschreibung ein
Daher kann dieselbe Variable je nach Identität des Benutzers unterschiedliche Werte haben. Verwenden Sie beispielsweise den folgenden Befehl, um zu sehen, welche Werte die HOME-Variable unter verschiedenen Benutzeridentitäten hat

echo $HOME
su - linuxprobe

Tatsächlich bestehen Variablen aus festen Variablennamen und vom Benutzer oder System festgelegten Variablenwerten. Wir können selbst Variablen erstellen, um den Arbeitsanforderungen gerecht zu werden. Wenn Sie beispielsweise eine Variable mit dem Namen WORKDIR festlegen, können Benutzer einfacher auf ein tieferes Verzeichnis zugreifen:

mkdir /home/workdir
WORKDIR=/home/workdir
cd $WORKDIR
pwd

Allerdings sind solche Variablen nicht global, haben einen begrenzten Gültigkeitsbereich und können standardmäßig nicht von anderen Benutzern verwendet werden:

su linuxprobe

Wenn Ihr Job dies erfordert, können Sie es mit dem Exportbefehl in eine globale Variable hochstufen, damit andere Benutzer es verwenden können:

export WORKDIR
su linuxprobe

Wenn Sie diese Variable in Zukunft nicht mehr verwenden, können Sie den unset-Befehl ausführen, um sie abzubrechen:

unset WORKDIR

Welcher Befehl kann verwendet werden, um eine allgemeine Variable namens LINUX in eine globale Variable umzuwandeln?

Antwort: LINUX exportieren.

Acho que você gosta

Origin blog.csdn.net/AdamCY888/article/details/131291314
Recomendado
Clasificación