[LINUX] Versuchen wir es mit einem Shell-Skript

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".

Was ist ein Shell-Skript?

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.

So erstellen Sie ein Skript und führen es aus

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.

Über Autorität

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

Wie man Autorität gewährt

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

Lernen Sie die Grundlagen des Shell-Skripts kennen

Ich habe folgendes gelernt ↓ http://motw.mods.jp/shellscript/tutorial.html

So merken Sie sich Vergleichsoperatoren

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

Lassen Sie uns ein praktisches Skript erstellen

Teil 1: Benennen Sie alle Dateinamen gleichzeitig um

Ich habe auf die folgende Seite verwiesen http://motw.mods.jp/shellscript/rename.html

Teil 2: Kopieren Sie Dateien und Ordner in den Sicherungsordner

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.

Lass uns rennen

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:

Bonus: Bequeme Linux-Befehle

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/

abschließend

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

Versuchen wir es mit einem Shell-Skript
Versuchen Sie, mit einer Shell zu programmieren!
Grundlagen des Shell-Skripts # 2
[Ubuntu] So führen Sie ein Shell-Skript aus
Verwalten Sie Protokollrotationsgenerationen mit einem Shell-Skript.
Erstellen eines Shell-Skripts zum Schreiben eines Tagebuchs
Lassen Sie uns das Bash-Skript in Java ausführen
Zeigen Sie die heutige Wettervorhersage mit Shell-Skript an
Starten Sie die Shell, während das Python-Skript ausgeführt wird
Schreiben wir ein entsprechendes Ping-Bestätigungsskript
Versuchen Sie, ein FizzBuzz-Problem mit einem Shell-Programm zu erstellen
Befehl im Shell-Skript ersetzen
Shell script @ study memo
Shell-Skript zum Einfügen von Webmin in Alpine Linux
[Piyopiyokai # 1] Spielen wir mit Lambda: Erstellen eines Python-Skripts
Lassen Sie uns gemeinsam die Standardeingabe / -ausgabe von bash verstehen und ein Shell-Skript schreiben.
Shell-Skript, das beim Erstellen von Dateien doppelte Namen nummeriert
So führen Sie ein Python-Programm in einem Shell-Skript aus
[Python, Shell-Skript, Teamentwicklung] Erstellen Sie ein geschicktes Git-Repository
[Linux] Kopieren Sie Daten mit einem Shell-Skript von Linux nach Windows
Erstellen wir ein Skript, das sich bei Ideone.com in Python registriert.
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
Versuchen Sie, eine logistische Funktion zu zeichnen
Ich werde nie vergessen, wie man ein Shell-Skript schreibt, nicht vergessen! !!
[Linux] Schreiben Sie ein Bereitstellungstool mit rsync und einem Shell-Skript
Versuchen Sie, eine Sprache auszuwählen
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Versuchen wir es mit der Analyse! Kapitel 1: Nutzung analytischer Technologien - aus geschäftlicher Sicht -
Bedingte Verzweigung aufgrund des Vorhandenseins einer Shell-Skriptdatei
Erstellen Sie ein Shell-Skript, um die Python-Datei mehrmals auszuführen
Führen Sie ein mehrzeiliges Skript in einem PDB aus
Machen wir eine Remote-Rumba [Hardware]
Grundlegende Syntaxhinweise für Shell-Skripte
Versuchen Sie, eine Bezier-Kurve zu zeichnen
Ich habe ein CUI-basiertes Übersetzungsskript erstellt (2)
Lassen Sie uns eine GUI mit Python erstellen.
Machen wir einen Spot Sale Service 2
Machen wir einen Blockbruch mit wxPython
Vielleicht funktioniert es! Lass uns versuchen zu kratzen!
Machen wir einen Spot Sale Service 1
Versuchen wir es mit Fizz Buzz mit Python
Ein kleines Skript zur Selbstverteidigung von Malware
Automatisieren Sie die Umgebungserstellung mit ShellScript
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Starten Sie das Python-Skript im Dienst
Machen wir einen Spot Sale Service 3
Shell-Skript numerische Berechnung bc Befehl
Schreiben Sie ein Batch-Skript mit Python3.5 ~
Große Pandas Lass uns viel lernen
Ein Shell-Skript, um sich wieder an die pipenv-Shell zu erinnern