Ich habe Linux, Befehle, Shells und diese Art von Bitterkeit überwunden! !! In diesem Artikel werde ich die Websites vorstellen, auf die ich verwiesen habe, und meine Fragen und Interpretationen ergänzen. Ich hoffe, dieser Artikel hilft denen, die denken "Ich sollte es versuchen" oder "Ich habe Angst vor dem schwarzen Bildschirm".
Dies wird an verschiedenen Stellen erklärt, aber kurz gesagt, in meiner Interpretation ist es ein ** Programm, das Anweisungen für den PC zusammenstellt **.
Zum Beispiel, wenn Sie eine Datei umbenennen möchten. Wenn Sie die Schwankung des Wortlauts von "Test" und "Test" mehrerer Dateinamen vereinheitlichen möchten, geben Sie die Datei oder das Verzeichnis an und benennen Sie sie sofort um. Und.
Als weiteres Beispiel möchte ich jeden Tag eine Protokolldatei mit ausgeführten Befehlen erstellen (es scheint sich um eine Protokollierung zu handeln). Und. ... Nun, ist das nicht ein Batch-Prozess? ?? Dachte ich und untersuchte. → https://wa3.i-3-i.info/word11221.html Anscheinend haben Shell-Skripte und Batch-Dateien dieselbe Rolle, nur die Basiswelt ist anders.
Unter macOS kann es vom Terminal aus ausgeführt werden, ohne eine Umgebung zu erstellen. Unter Windows ist jedoch eine Vorbereitung erforderlich. Versuchen Sie Google mit "Windows Linux" usw .: bow_tone1:
Ich bezog mich auf die folgende Skripterstellungsmethode und Ausführungsmethode ↓ https://udemy.benesse.co.jp/development/web/shellscript.html
Der Editor verwendet ** Vi **, aber Sie sollten in der Lage sein, fast alles mit einem Texteditor zu verwenden. In letzter Zeit scheint ** Vim **, eine weiterentwickelte Version von Vi, beliebt zu sein. Wenn Sie Vi und Vim einstellen, können Sie den Code farblich kennzeichnen, diesmal werde ich ihn jedoch weglassen. VS Code färbt es automatisch farblich ein, um die Anzeige zu vereinfachen. freundlich.
Alle Dateien und Ordner haben Berechtigungen.
Es kann so eingestellt werden, dass Unfälle wie das versehentliche Ausführen der Shell oder das Bearbeiten der Produktionsquelle oder Konfigurationsdatei verhindert werden.
Sie können die Berechtigungen mit ls -l
überprüfen.
$ ls -l
total 13784
drwxr-xr-x 4 aaaaaayyymmm staff 128 3 20 15:19 memo
drwxr-xr-x 7 aaaaaayyymmm staff 224 3 29 23:52 tmp
-rw------- 1 aaaaaayyymmm staff 124987 3 30 11:51 Archiv.zip
-rw-r--r-- 1 aaaaaayyymmm staff 197519 3 31 16:00 Screenshot.png
-rw-r--r-- 1 aaaaaayyymmm staff 17 3 31 16:55 hello.sh
Die Bedeutung jedes Elements ist wie folgt.
Dateityp | Behörde | Anzahl der Hardlinks | Inhaber | Gruppe | Bytegröße | Zeitstempel | Dateiname |
---|---|---|---|---|---|---|---|
-(Erster Charakterteil) | rw-r--r-- | 1 | aaaaaayyymmm | staff | 17 | 3 31 16:55 | hello.sh |
Dieses Mal konzentrieren wir uns auf ** Dateitypen ** und ** Berechtigungen **. Es gibt drei Arten von Dateitypen:
Art | Bedeutung | Ergänzung |
---|---|---|
- | Datei | --- |
d | Verzeichnis | Das Gleiche wie der Ordner, den Sie in der GUI sehen |
l | Symbolischer Link | Dinge wie Abkürzungen. Proxy-Dateien, die echte Dateien und Verzeichnisse lesen und schreiben können |
Die Ansicht der Autorität ist von links in drei Teile unterteilt und repräsentiert die Autorität des Benutzers ** Eigentümer **, ** Gruppe **, ** anderer **. Und die Arten von Autorität sind wie folgt.
Behörde | Numerische Notation | Bedeutung |
---|---|---|
r | 4 | lesen |
w | 2 | Bearbeiten |
x | 1 | Lauf |
- | Keiner | Keine Autorität |
Es gibt zwei Hauptmethoden zum Schreiben.
Nummernbezeichnung ver.Beispiel
$ chmod 744 hello.sh
Alphabet Bezeichnung ver.Beispiel
$ chmod g+wx hello.sh
//Oder
$ chmod u=x,g=rwx,o=- hello.sh
Ich habe auf diesen Artikel verwiesen. Wenn Sie weitere Informationen wünschen, lesen Sie bitte die folgenden Informationen. https://qiita.com/shisama/items/5f4c4fa768642aad9e06
Der Standardwert ist "-rw-r - r -". Um das Skript nach seiner Erstellung auszuführen, müssen Sie das Ausführungsrecht wie folgt gewähren. (Die Standardberechtigung kann geändert werden, diesmal wird sie jedoch nicht behandelt.)
$ chmod u+x hello.sh
Ich habe folgendes gelernt ↓ http://motw.mods.jp/shellscript/tutorial.html
Ich verstehe -eq, aber ich möchte -gt und -le schnell verwenden, aber es ist schwer, sich daran zu erinnern. .. .. Englischkenntnisse erleichtern das Erinnern!
Operator | Englisch | Bedeutung |
---|---|---|
eq | equal | x = y |
ge | greater than or equal to | x >= y |
gt | greater than | x > y |
le | less than or equal to | x <= y |
lt | less than | x < y |
ne | not equal | x != y |
Ich habe auf die folgende Seite verwiesen http://motw.mods.jp/shellscript/rename.html
Ich habe selbst darüber nachgedacht und es geschaffen.
make_bk.sh
#!/bin/bash
read -p "Geben Sie den Dateinamen oder Ordnernamen ein, den Sie sichern möchten:" ary
echo $ary
#Wenn kein Eingabewert vorhanden ist, wird eine Fehlermeldung angezeigt und der Vorgang beendet.
if [ -z $ary ];
then
echo "Geben Sie den Dateinamen oder Ordnernamen ein, den Sie sichern möchten"
exit 1
fi
#Erstellen Sie einen Sicherungsordner.-Mit der Option p wird ein neuer Ordner nur erstellt, wenn der Ordner nicht vorhanden ist.
bkdir=bk_$(date +%Y%m%d)
mkdir -p $bkdir
#Lesen Sie die eingegebenen Dateien oder Ordner nacheinander
for target in ${ary[@]}
do
#Erstellen Sie eine Kopie und speichern Sie sie im Sicherungsordner
[ -d $target ] && cp -r $target $bkdir/$target || cp $target $bkdir/$target
done
Dieses Skript begrenzt nicht die Anzahl der Dateien und Ordner, daher habe ich beim Akzeptieren von Eingaben ein Array verwendet. Informationen zur Verwendung des Arrays finden Sie im Folgenden. https://www.atmarkit.co.jp/ait/articles/1905/22/news004.html
Über die folgenden Teile.
[ -d $target ] && cp -r $target $bkdir/$target || cp $target $bkdir/$target
Mit dem Befehl cp wird beim Kopieren eines Ordners (= Verzeichnis) die Option "-r" benötigt, sodass der Befehl cp ausgeführt wird, nachdem festgestellt wurde, ob $ target ein Verzeichnis ist. Ich wäre Ihnen dankbar, wenn Sie mir sagen könnten, ob es einen anderen guten Weg gibt.
Geben Sie vorher das Ausführungsrecht.
$ chmod u+x make_bk.sh
Ordnerstruktur vor der Ausführung
tmp
├── make_bk.sh
└── test.txt //Kopiere diesen Kerl
Ich werde das machen
$ make_bk.sh
Geben Sie den Dateinamen oder Ordnernamen ein, den Sie sichern möchten:test.txt
test.txt
Ordnerstruktur nach der Ausführung
tmp
├── bk_20200329 //Neu erstellter Ordner
│ └── test.txt //Kopierte Datei
├── make_bk.sh
└── test.txt
:blush:
Nächster, Kopieren und Sichern für jeden Ordner Wenn ein Ordner vorhanden ist, kopieren Sie einfach das Ziel Versicher dich.
Ordnerstruktur vor der Ausführung
tmp
├── bk_20200329
│ └── test.txt
├── make_bk.sh
├── test.txt
└── test2 //Kopiere diesen Kerl
└── test2.txt //Sollte gleichzeitig kopiert werden
Ich werde das machen
$ make_bk.sh
Geben Sie den Dateinamen oder Ordnernamen ein, den Sie sichern möchten:test2
test2
Ordnerstruktur nach der Ausführung
tmp
├── bk_20200329
│ ├── test.txt
│ └── test2 //Kopierter Ordner
│ └── test2.txt //Dateien zusammen kopiert
├── make_bk.sh
├── test.txt
└── test2
└── test2.txt
:blush::blush::blush:
Dies ist ein Memo des Befehls, den ich beim Lernen für "es ist praktisch, ich denke, ich werde ihn verwenden" hielt. ◆ Ich möchte Datum und Uhrzeit anzeigen, wenn der Befehl history ausgeführt wird Referenz: https://linuxfan.info/add-datetime-to-history ◆ Ich möchte Arbeitsprotokolle aufzeichnen Referenz: https://dev.classmethod.jp/articles/scriptcommand/
Sie sollten die Grundlagen verstanden haben! Ich werde alles versuchen. Der Zweck dieser Zeit war es, sich an das Skript zu gewöhnen, daher kann ich nicht sagen, dass die Praktikabilität des erstellten Skripts in Frage gestellt wird. Während ich von nun an arbeite, habe ich das Gefühl, dass ich es schaffen kann, wenn ich denke "Ich möchte das automatisieren" und "Ich kann diesen Befehl zusammenstellen!?", Also freue ich mich auf die kommende Zeit ... Als nächsten Schritt werden wir untersuchen, damit wir auf Ausführungsgeschwindigkeit und Wiederverwendbarkeit achten können ...!
Recommended Posts