Programmierung in Bash - Teil 1

Während wir es im Allgemeinen für administrative oder Dateiverwaltungsvorgänge verwenden, wird das Komfort de Linux erweitert seine Funktionalität weit über diesen Zweck hinaus und ermöglicht uns das Programmieren Skripte Dieses Handbuch ist nicht als vollständige Referenz zur Bash-Programmierung gedacht, sondern als Einführung in die grundlegenden Befehle und Strukturen, mit denen wir die Leistung unseres GNU / Linux-Systems erweitern können.

Was ist ein "Skript"?

Grundsätzlich sagen wir, dass es sich um eine Datei handelt, die Code enthält, der in einer bestimmten Programmiersprache geschrieben ist, die das System für eine bestimmte Aufgabe verwendet. Es muss keine externe Eingabe oder grafische Oberfläche vorhanden sein, es muss jedoch eine Ausgabe der verarbeiteten Daten verursacht werden (auch wenn der Benutzer sie nicht sieht).

Die von Bash verwendete Sprache wird von einem eigenen Interpreter definiert und kombiniert die Syntax anderer Shells, z. B. der Korn-Shell (ksh) oder der C-Shell (csh). Viele der Befehle, die normalerweise in der Konsole verwendet werden, können auch in Skripten verwendet werden, mit Ausnahme derjenigen, die sich ausschließlich auf eine bestimmte Distribution beziehen.

Struktur eines Skripts

Zu Beginn müssen wir einen Texteditor haben und programmieren wollen. Die Dateien, die wir mit der Erweiterung .sh speichern, können von der Konsole ausgeführt (oder interpretiert) werden, sofern die erste Zeile wie folgt lautet:

#! / Bin / bash

Dies weist das System an, die Konsole zum Ausführen der Datei zu verwenden. Darüber hinaus können Sie mit dem Zeichen # Kommentare schreiben. Um das einfachste Beispiel zu erstellen, fügen wir eine weitere Zeile hinzu, die im folgenden Bild dargestellt ist:

Der Befehl echo zeigt eine Meldung auf dem Bildschirm an, in diesem Fall die typische "Hallo Welt!" Wenn wir es speichern und mit der Konsole ausführen, sehen wir das Ergebnis.

Grundlegende Befehle

Die folgenden Befehle sind allgemein und für jede Art von Programm sehr nützlich. Wir stellen klar, dass es noch viel mehr gibt, aber im Moment werden wir Folgendes behandeln.

Aliase: Ermöglicht das Ersetzen einer Wortfolge durch eine kürzere, wodurch die Code-Reduzierung ermöglicht wird.

#Erstellen Sie einen Alias ​​namens per mit der Adresse des Ordners #Downloads alias per = '/ home / user / Downloads' #Jedes Mal, wenn wir ihn verwenden möchten, müssen wir nur # das neue Wort per # aufrufen. Um diesen Alias ​​zu zerstören, verwenden wir Unalias-Unalias per

break: Ermöglicht das sofortige Beenden einer for, while, till- oder select-Schleife (wir werden die Schleifen später im Detail untersuchen).

#Erstellen Sie eine Schleife, die die Zahlen von 1 bis 5 für jede "Umdrehung der Schleife" für den Zähler in 1 2 3 4 5 zuweist. #Wir drucken den aktuellen Wert der Variablen #counter, der durch das Zeichen $ echo analysiert wird. " $ counter ”#Wenn der Zählerwert gleich 3 ist, wenn [$ counter –eq 3], dann #The break verlässt die Schleife, um break fi done durchzuführen

continue - Ähnlich wie break, außer dass die aktuelle Schleife ignoriert wird und zur nächsten übergegangen wird.

#Erstellen Sie eine Schleife, die die Zahlen von 1 bis 5 für jede "Umdrehung der Schleife" für den Zähler in 1 2 3 4 5 zuweist. #Wenn der Zählerwert gleich 3 ist, wenn [$ counter –eq 3], dann #Continue verhindert, dass der Rest des # Stromzyklus analysiert wird, indem zur nächsten Runde gesprungen wird, dh der # Wert 3 wird nicht gedruckt. weiter fi echo "$ counter" fertig

deklarieren: deklariert Variablen und weist ihnen Werte zu, genau wie der Satz (sie funktionieren auf die gleiche Weise). Wir können es mit einigen Optionen kombinieren: -i deklariert ganze Zahlen; -r für schreibgeschützte Variablen, deren Wert nicht geändert werden kann; –A für Arrays oder „Arrays“; -f für Funktionen; -x für Variablen, die außerhalb der Umgebung des Skripts selbst "exportiert" werden können.

deklariere –i num = 12 deklariere –x pi = 3.14

Hilfe: Zeigt die Hilfe für einen bestimmten Befehl an.

Jobs: Zeigt die laufenden Prozesse an.

#Mit –c zeigen wir den Namen der Befehle an, wobei –p # die PID (Prozess-ID) jedes Prozesses ist. Jobs -cp

let: einen arithmetischen Ausdruck auswerten

let a = 11 let a = a + 5 # Schließlich drucken wir den Wert von a, der 16 ist. echo "11 + 5 = $ a"

local: Erstellt lokale Variablen, die vorzugsweise in Funktionen des Skripts selbst verwendet werden sollten, um Fehler zu vermeiden. Sie können dieselben Funktionen wie der Befehl declare verwenden.

local v1 = "Dies ist eine lokale Variable"

Abmelden: Ermöglicht das vollständige Abmelden von einer Shell. Nützlich für Fälle, in denen wir mit mehr als einem Shell-Fenster arbeiten, in denen mit dem Befehl exit jeweils nur ein Fenster beendet werden kann.

printf: Ermöglicht das Drucken und Formatieren von Daten. Es gibt viele Möglichkeiten, daher werden wir einige erwähnen.

#% f wird als schwebende Zahl gedruckt, n für neue # Zeile printf "% fn" 5 5.000000 # & d ermöglicht die Übergabe von Dezimalzahlen als Argumente printf "Es gibt% d Bestellungen mit einem Wert von% d Dollars.n" 20 500 Es gibt 20 Bestellungen mit einem Wert von 500 Dollar.

Lesen: Lesen Sie eine Zeile von der Standardeingabe (Modul, das zum Laden von Daten über die Tastatur verwendet wird). Wir können Optionen wie: -t übergeben, um eine Leselimitzeit anzugeben; -a, so dass jedes Wort einer Position im Aname-Array zugewiesen wird; -d, um ein Trennzeichen zu verwenden, das am Ende der Zeile geschrieben wird; unter anderen.

echo "Geben Sie Ihren Namen ein und drücken Sie die EINGABETASTE" #Lesen Sie den Variablennamen, lesen Sie den Namen echo "Ihr Name ist $ name"

Typ: beschreibt einen Befehl und sein Verhalten. Es kann nützlich sein, die Datendefinitionen für jeden Befehl herauszufinden.

Typ –a '[' #type sagt uns, dass [ein in Shell eingebauter Befehl ist [ist ein in Shell eingebauter # -a ermöglicht das Auffinden der Verzeichnisse, die # eine ausführbare Datei mit dem eingegebenen Namen enthalten. [ist / usr / bin / [

ulimit: Beschränkt den Zugriff und die Verwendung bestimmter Systemressourcen auf Prozesse, ideal für Programme, die administrative Änderungen zulassen oder sich an verschiedenen Benutzertypen orientieren. Beim Festlegen eines Grenzwerts schreiben wir eine Zahl, die die Kilobyte des Grenzwerts darstellt.

#Wir sehen unsere aktuellen Grenzwerte ulimit –a # -f ermöglicht es Benutzern, keine Dateien zu erstellen, die größer als 512000 Kb (500 #Mb) sind ulimit –f 512000 # -v begrenzt den virtuellen Speicher des Prozesses. ulimit –v 512000

Warten: Warten Sie, bis ein bestimmter Prozess oder Auftrag ausgeführt wurde, um fortzufahren.

#Das Skript wartet auf die Ausführung von PID # 2585

warte 2585

Andere nützliche Befehle, die wir zu Skripten hinzufügen können, werden durch Symbole dargestellt.

!!: Führen Sie den letzten Befehl erneut aus

! wer: führt den letzten Befehl aus, der mit dem Ausdruck "wer" begonnen hat.

'==', '! =', '>', '<', '> =' und '<=': Vergleichsoperatoren.

|: Der OR-Operator wird normalerweise verwendet, um zwei reguläre Ausdrücke zu verbinden.

: Escape-Befehl, mit dem Sie Ausdrücke formatieren können. Zum Beispiel: a für einen akustischen Alarm, n für Zeilenumbruch, b für Rücktaste usw.

Vielen Dank, Juan Carlos Ortiz!

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Mittelschwer sagte

    Großartig! Wie auch immer, 2 Kommentare: Das Ubuntu-Tag ist halb zu viele, da es etwas verallgemeinert, das generisch ist. Und wenn diese Tutorials weiter voranschreiten, wäre es gut, wenn sie miteinander verknüpft wären…
    Davon abgesehen ist dieser Schritt interessant!

  2.   Verwenden wir Linux sagte

    Guter Beitrag! Großartig!

  3.   Giovanni escobar sosa sagte

    Nur fehlende Referenzen für diejenigen, die mehr in die Sache einsteigen wollen. Einige gute, obwohl in unseren Ländern nicht so leicht zu finden sind
    - Ein praktischer Leitfaden für Linux-Befehle, Editoren und Shell-Programmierung, Mark Sobell (Kapitel 8)
    - Pro Bash Programming, Chris FA Johnson (obwohl dies für diejenigen ist, die andere Referenzen oder etwas mehr Wissen haben).

    Guter Artikel.

  4.   Verwenden wir Linux sagte

    Gutes Date! Vielen Dank!

  5.   Patricio Dorantes Jamarne sagte

    : @ Die Funktion "Anmelden als" hat meinen vorherigen Kommentar gelöscht, daher werde ich ihn weiter zusammenfassen:
    Jobs -cp
    bash: jobs: -c: ungültige Option
    Jobs: Verwendung: Jobs [-lnprs] [Jobspezifikation…] oder Jobs -x Befehl [Argumente]

    -eq -gt -lt akzeptiert keine Dezimalpunktvariablen, zwischen Forum und Forum habe ich festgestellt, dass bc ein guter Verbündeter ist:
    if [`echo 9.999> 10 | bc` -eq 1]; dann
    echo "9.999 ist größer als 10, stellen Sie sicher, dass Ihr Prozessor noch funktioniert"
    sonst
    echo «9.999 ist nicht größer als 10, alles funktioniert normal
    fi

  6.   Nicht aus Brooklyn sagte

    Dieser Beitrag fasst alle allgemeinen Aspekte von Bash-Skripten sehr gut zusammen:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Auf dieser Seite finden Sie viele Fragen und Antworten zu Bash-Besonderheiten:
    http://unix.stackexchange.com/questions/tagged/bash

    Hier sind einige wirklich coole Skripte, und hey, Sie können sie lernen, indem Sie die Skripte anderer Leute lesen:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Nicht aus Brooklyn sagte

    Sie haben Recht mit dem, was Sie sagen, außer mit Bash. Jedes System, das ich gesehen habe, hat Bash in / bin / bash.

    Aber für Python, Perl, Ruby usw. ist es in Ordnung, das zu verwenden. ich mache

  8.   Guille sagte

    Zufälligerweise verwenden wir im College Bash-Scripting, also sind die Daten 10, sehr gut!

  9.   Alex habe ich gesehen sagte

    Eine PDF-Version zum Herunterladen wäre gut !! 😀

  10.   Marco Antonio de Fuentes sagte

    Sehr gute Seite. Ich habe endlich etwas Nützliches gefunden. Vielen Dank.