So führen Sie eine .sh-Datei unter Linux aus
So führen Sie eine .sh-Datei unter Linux aus
1. Die .sh-Datei ist eine Textdatei. Wenn Sie sie ausführen möchten, müssen Sie chmod a+x xxx.sh verwenden, um ausführbare Berechtigungen zu erteilen.
Handelt es sich um ein Bash-Skript
Sie können touch test.sh # verwenden, um die test.sh-Datei zu erstellen
vi test.sh # Bearbeiten Sie die Datei test.sh
Inhalt hinzufügen
#! /bin/bash
mkdir test
Speichern und beenden.
chmod a+x test.sh #Ausführbare Berechtigungen für test.sh erteilen
Beispielsweise befindet sich die Datei test,sh unter der Datei /home/work
Ausführen
Methode 1: Führen Sie
in einem eigenen Verzeichnis aus. Geben Sie die Datei cd /home/workwen
ein und führen Sie ./test.sh
ausDer Befehl befindet sich im aktuellen Verzeichnis. Erstellen Sie ein „Test“-Verzeichnis unter dem Verzeichnis.
Methode 2: Mit absoluter Kraft laufen
/home/work/test.sh ausführen
Methode 3: Im Eigenen laufen Verzeichnis
sh test.sh
Letzter Vorschlag: Verwenden Sie
C-Code
1.man sh
man sh Werfen wir einen Blick auf die Einführung von sh~
Empfohlen: „Linux-Tutorial“
Linux .sh-Syntax
Einführung:
1 Anfang
Das Programm muss mit der folgenden Zeile beginnen (muss in der ersten Zeile der Datei platziert werden). ):
# !/bin/sh
Das Symbol #! wird verwendet, um dem System mitzuteilen, dass die Parameter dahinter die Programme sind, die zum Ausführen der Datei verwendet werden. In diesem Beispiel verwenden wir /bin/sh, um das Programm auszuführen.
Wenn das Schreiben des Skripts abgeschlossen ist und Sie das Skript ausführen möchten, müssen Sie es auch ausführbar machen.
Um das Skript ausführbar zu machen:
Kompilieren Sie chmod +x Dateiname, sodass Sie ./Dateiname zum Ausführen verwenden können.
2 Hinweise
Shell-Programmierung durchführen Wenn ein mit # beginnender Satz einen Kommentar bis zum Ende der Zeile darstellt. Wir empfehlen dringend, Kommentare in Ihren Programmen zu verwenden.
Wenn Sie Kommentare verwenden, können Sie die Funktion und das Arbeitsprinzip des Skripts in kurzer Zeit verstehen, auch wenn Sie das Skript längere Zeit nicht verwendet haben.
3 Variablen
In anderen Programmiersprachen muss man Variablen verwenden. Bei der Shell-Programmierung bestehen alle Variablen aus Zeichenfolgen und Sie müssen keine Variablen deklarieren. Um einer Variablen einen Wert zuzuweisen, können Sie schreiben:
#!/bin/sh
#Einen Wert einer Variablen zuweisen:
a="hello world"
# Geben Sie nun den Inhalt der Variablen a aus:
echo „A ist:“
echo $a
Manchmal werden Variablennamen leicht mit anderen verwechselt Text, wie zum Beispiel:
num=2
echo „this is the $numnd“
Dies gibt nicht „this is the 2nd“ aus, sondern nur „ Dies ist „ , da die Shell nach dem Wert der Variablen numnd sucht, diese Variable jedoch keinen Wert hat. Sie können geschweifte Klammern verwenden, um der Shell mitzuteilen, dass wir die Num-Variable drucken möchten:
num=2
echo „this is the ${num}nd“
Dies wird gedruckt: Dies ist die 2.
4 Umgebungsvariable
Die vom Schlüsselwort export verarbeiteten Variablen werden Umgebungsvariablen genannt. Wir werden nicht auf Umgebungsvariablen eingehen, da diese normalerweise nur in Anmeldeskripts verwendet werden.
5 Shell-Befehle und Prozesssteuerung
Drei Arten von Befehlen können in Shell-Skripten verwendet werden:
1) Unix-Befehle:
Obwohl in Shell-Skripten Sie können jeden Unix-Befehl verwenden, es gibt jedoch einige relativ häufig verwendete Befehle. Diese Befehle werden normalerweise für Datei- und Textoperationen verwendet.
Allgemeine Befehlssyntax und Funktionen
echo „some text“: Textinhalt auf dem Bildschirm ausgeben
ls: Dateiliste
wc –l file wc -w file wc -c file: Zählt die Anzahl der Zeilen in der Datei; zählt die Anzahl der Zeichen in der Datei
cp sourcefile destfile: Kopiert die Datei
mv alter Name neuer Name: wiederholen Sie die Datei 'searchstring' file.txt
cut -b colnum file: Geben Sie den Bereich der anzuzeigenden Dateiinhalte an und geben Sie diese auf dem Standardausgabegerät aus. Beispiel: Geben Sie das 5. bis 9. Zeichen jeder Zeile aus. b5-9 file.txt. Verwechseln Sie es nicht mit dem Befehl cat
Dies sind zwei völlig unterschiedliche Befehle
cat file.txt: Geben Sie den Dateiinhalt auf dem Standardausgabegerät (Bildschirm) aus )
file somefile: Den Dateityp abrufen
read var: Den Benutzer zur Eingabe auffordern und die Eingabe der Variablen zuweisen
sort file.txt: Die Zeilen sortieren die Datei „file.txt“
uniq: die Textdatei löschen. Doppelte Zeilen, die angezeigt werden, wie zum Beispiel: „sort file.txt |“. 2 „+“ 3
finden: Suche nach Dateien wie: basierend auf Dateiname Suche find -name Dateiname -print
tee: Daten auf das Standardausgabegerät (Bildschirm) und die Datei ausgeben. Beispiel: somecommand |. tee outfile
Basisname Datei: Gibt den Dateinamen ohne Pfad zurück gibt tux
dirname file: Gibt den Pfad der Datei zurück. Beispiel: dirname /bin/tux gibt /bin zurück
head file: Gibt die ersten paar Zeilen der Textdatei aus
tail file: Druckt die Textdatei. Die letzten paar Zeilen
sed: Sed ist ein einfaches Such- und Ersetzungsprogramm. Sie können Text aus der Standardeingabe (z. B. einer Befehlspipe) lesen und
Ergebnisse in der Standardausgabe (Bildschirm) ausgeben. Dieser Befehl verwendet für die Suche reguläre Ausdrücke (siehe Referenz). Nicht zu verwechseln mit Wildcards in der Shell. Beispiel: Ersetzen Sie linuxfocus durch LinuxFocus: cat text.file |. sed ’s/linuxfocus/LinuxFocus/’ >newtext.file
awk: awk wird zum Extrahieren von Feldern aus Textdateien verwendet. Standardmäßig ist das Feldtrennzeichen ein Leerzeichen. Sie können -F verwenden, um andere Trennzeichen anzugeben.
cat file.txt |. awk -F, „{print $1“, „$3}“ Hier verwenden wir als Feldtrennzeichen, um das erste und dritte Feld gleichzeitig zu drucken. Wenn der Dateiinhalt wie folgt lautet: Adam Bor, 34, IndiaKerryMiller, 22, USA, lautet die Befehlsausgabe: Adam Bor, IndiaKerry Miller, USA
2) Konzept: Pipeline, Umleitung und Backtick
Dies sind keine Systembefehle, aber sie sind wirklich wichtig.
Pipe (|) übernimmt die Ausgabe eines Befehls als Eingabe eines anderen Befehls.
grep "hello" file.txt |. wc -l
Suchen Sie nach Zeilen, die „hello“ in file.txt enthalten, und zählen Sie die Anzahl der Zeilen.
Hier wird die Ausgabe des grep-Befehls als Eingabe des wc-Befehls verwendet. Natürlich können Sie mehrere Befehle verwenden.
Umleitung: Geben Sie die Ergebnisse des Befehls in eine Datei statt in die Standardausgabe (Bildschirm) aus.
> In die Datei schreiben und die alte Datei überschreiben
>>
Backslash
Verwenden Sie den Backslash, um die Ausgabe eines Befehls als Befehlszeilenparameter eines anderen Befehls zu verwenden.
Befehl:
find . -mtime -1 -type f -print
wird verwendet, um Änderungen in den letzten 24 Stunden zu finden (-mtime -2 bedeutet die letzten 48). Stunden) vergangene Dateien. Wenn Sie alle gefundenen Dateien in ein Paket packen möchten, können Sie das folgende Linux-Skript verwenden:
#!/bin/sh
# Die Häkchen sind Backticks (`), keine normalen Anführungszeichen ( '):
tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
3) Prozesssteuerung
1.if
„if“-Ausdruck führt den Teil danach aus, wenn die Bedingung wahr ist:
if ….; then
….
elif ….; then
….
else
….
fi
In den meisten Fällen können Sie Testbefehle verwenden, um die Bedingungen zu testen prüfen. Sie können beispielsweise Zeichenfolgen vergleichen, feststellen, ob eine Datei vorhanden und lesbar ist usw.
Normalerweise wird „[ ]“ verwendet, um bedingte Tests darzustellen. Beachten Sie, dass die Leerzeichen hier wichtig sind. Stellen Sie sicher, dass zwischen den eckigen Klammern Leerzeichen stehen.
[ -f "somefile" ] : Bestimmen Sie, ob es sich um eine Datei handelt
[ -x "/bin/ls" ] : Bestimmen Sie, ob /bin/ls vorhanden ist und über ausführbare Berechtigungen verfügt
[ -n "$var" ]: Bestimmen Sie, ob die Variable $var einen Wert hat
[ "$a" = "$b" ]: Bestimmen Sie, ob $a und $b gleich sind
Führen Sie den Man-Test aus, um alle Typen anzuzeigen, die anhand von Testausdrücken verglichen und beurteilt werden können.
Führen Sie direkt das folgende Skript aus:
#!/bin/sh
if [ "$SHELL" = "/bin/bash" ]; then
echo „Ihre Login-Shell ist die Bash (Bourne Again Shell)“
else
echo „Ihre Login-Shell ist nicht Bash, sondern $SHELL“
fi
Die Variable $SHELL enthält den Namen der Login-Shell, den wir mit /bin/bash verglichen haben.
Verknüpfungsoperatoren
Freunden, die mit der Sprache C vertraut sind, könnte der folgende Ausdruck gefallen:
[ -f "/etc/shadow" ] && echo „Dieser Computer verwendet Shadow Passwörter“
Hier ist && ein Abkürzungsoperator. Wenn der Ausdruck auf der linken Seite wahr ist, wird die Anweisung auf der rechten Seite ausgeführt.
Sie können es sich auch als UND-Verknüpfung in logischen Operationen vorstellen. Das obige Beispiel zeigt, dass, wenn die Datei /etc/shadow vorhanden ist, „Dieser Computer verwendet Shadow-Passwörter“ gedruckt wird. Die gleiche ODER-Operation (||) ist auch in der Shell-Programmierung verfügbar. Hier ist ein Beispiel:
#!/bin/sh
mailfolder=/var/spool/mail/james
[ -r "$mailfolder" ]' '{ echo „$mailfolder kann nicht gelesen werden“ ; Exit 1; echo „$mailfolder has mail from:“
grep „^From“ $mailfolder
Das Skript zuerst Stellen Sie fest, ob der Mailordner lesbar ist. Wenn lesbar, drucken Sie die Zeile „Von“ in der Datei aus. Wenn es nicht lesbar ist, wird die ODER-Verknüpfung wirksam und das Skript wird beendet, nachdem eine Fehlermeldung ausgegeben wurde. Hier liegt ein Problem vor, das heißt, wir müssen zwei Befehle haben:
◆Fehlermeldung drucken
◆Programm beenden
Wir verwenden geschweifte Klammern, um zwei Befehle zu einem Befehl in Form einer anonymen Funktion zusammenzufassen. Allgemeine Funktionen werden unten aufgeführt.
Ohne die AND- und or-Operatoren können wir auch if-Ausdrücke verwenden, um alles zu tun, aber es ist viel bequemer, die AND- oder or-Operatoren zu verwenden.
Das obige ist der detaillierte Inhalt vonSo führen Sie Dateien unter Linux aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!