Unabhängig von der Linux-Distribution, die wir verwenden, besteht kein Zweifel daran, dass mein Favorit Ubuntu ist, sobald wir mit der Verwendung dieses Systems beginnen Automatisierungsbedarf. Das heißt: erstellen Sie unsere eigene Befehle die bestimmte Befehle auf personalisierte Weise ausführen. Dieser Bedarf kann auf bestimmte Ursachen zurückzuführen sein:
- Vereinfachen Sie die Syntax der Befehle, die wir normalerweise ausführen.
- Ergreifen Sie Maßnahmen, die alle abdecken Notwendigkeit, die im System nicht vorgesehen ist Betriebs.
- Sequenzaufträge das wiederholen wir gewissenhaft.
Obwohl ein Bash-Skript in / aus jedem Verzeichnis ausgeführt werden kann, ist dies normalerweise der Fall Erstellen Sie ein Verzeichnis zum Hosten dieser Skripte. In meinem Fall:
$ mkdir /home/pedro/.bin
ich glaube das Verzeichnis (ausgeblendet, indem der Punkt vor dem Namen geführt wird) um alle Skripte zu halten, die ich dort benutze. Dass der Name des Verzeichnisses ausgeblendet ist, hat keine andere Bedeutung als - sofern nicht ausdrücklich anders angegeben - wird beim Anzeigen von / home / pedro im Datei-Viewer im grafischen Modus nicht angezeigt.
Jetzt musst du Informieren Sie Linux, dass es auch dort suchen sollte (/home/pedro/.bin) die Befehle, die vom Terminal ausgeführt werden.
$ PATH=$PATH;/home/pedro/.bin
Auf diese Weise sucht das System dort nach unseren Bestellungen bis wir die Sitzung schließen. Um diesen Verein dauerhaft zu machen:
$ sudo nano /etc/environment
und wir fügen hinzu
:/home/pedro/.bin
Am Ende der PATH-Zeile ist es sehr wichtig, den Doppelpunkt vor der Adresse des Verzeichnisses, das wir einschließen, nicht zu vergessen, da Dies ist der Additionsmechanismus.
Unser erstes Schritt-für-Schritt-Skript
Wir erstellen unsere Datei wie folgt in meinem Fall:
$ touch ~/.bin/donde
Und um es zu bearbeiten, können Sie Ihren bevorzugten Editor verwenden oder dieser Angabe folgen:
$ gedit ~/.bin/donde &
Und wir fügen folgenden Inhalt hinzu:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
Skriptanalyse
Unsere erste Anrufleitung «Shebang»(#! / Usr / bin / env bash) Bitten Sie Linux, sich zu melden Wo befindet sich die Bash-Shell? und dass das Folgende gemäß den Anforderungen von bash ausgeführt wird. Diese Vorsichtsmaßnahme es ist bequem, dies sicherzustellen Unsere Skripte funktionieren bei jeder Installation. Ein anderer möglich Shebang er lachte:
#!/bin/bash
Der Unterschied zwischen ihnen kann sehr ausgeflippt sein, und ich werde es erklären. Im letzteren Ich gehe davon aus, dass in unserem System Die Bash-Shell befindet sich an der Adresse / bin / bash. Allerdings, wo ich im Skript vorschlage Ich glaube ich weiß nicht wo es ist der Bash-Dolmetscher. Ich bitte das System, diese Adresse anzugeben.
Dritte Zeile: Wie Sie sehen können, ist die zweite Zeile ein Wenn. Für die Charaktere schlagen «$#« enthalten die Anzahl der Parameter, die wir über die Befehlszeile übergeben. Daher »if [$ # -lt 1];» bedeutet wörtlich "wenn die Anzahl der Parameter kleiner als 1 ist".
Vierte Zeile: Dann (wörtlich übersetzt aus dem Englischen: dann), hier wird angezeigt, was als nächstes kommt wird bei der Zustandsbewertung ausgeführt if wahr sein: Mit anderen Worten, die Anzahl der Parameter ist kleiner als 1, dh Null.
Fünfte Zeile: Wenn wir unser Skript ohne Parameter ausführen, wird im Terminal «Sie müssen einen Parameter übergeben» angezeigt.
Sechste Zeile: Gibt an, dass das Folgende ausgeführt wird wenn die von uns deklarierte Bedingung nicht wahr ist.
Siebte Zeile: Se Führen Sie den Befehl aus «wo ist« begleitet von dem Inhalt, als den wir übergeben haben erster Parameter.
Achte Zeile: mit «fi»Zeigt an, dass der Block endet if.
Testen Sie unser Skript
Es ist wichtig, Schreibberechtigungen hinzufügen zum Skript:
$ chmod -x ~/.bin/donde
Ohne dies würde ein Fehler "Berechtigung verweigert" angezeigt.. Danach können wir unser Skript ausführen.
$ donde php
Es sollte uns den Speicherort der PHP-Binärdateien, ihre Quelldateien und Manpages anzeigen. So ähnlich:
php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php /usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache /usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz
Recapping
- Wir ermöglichen a Verzeichnis ".bin", um unsere Skripte unterzubringen.
- Wir bieten an Informationen an Linux, um dieses Verzeichnis in die Befehlssuche aufzunehmen.
- Wir erstellen unser Skript.
- Unterschied zwischen Different Shebang.
- Gebrauch von Anzahl der mit $ # übergebenen Parameter.
- Gebrauch von erster Parameter mit $1.
Ich hoffe und wünsche, dass dieses Skript für Sie nützlich ist.
Sehr gut und gut erklärt, aber worauf bezieht sich ein Parameter?
Danke Miguel!
Ich verstehe unter Parameter alle ergänzenden Informationen, die einem Programm, einer Funktion oder einem System zugeführt werden. Da dies umständlich sein kann, möchte ich Ihnen einige Beispiele geben.
Im Linux-Befehl zum Kopieren der Datei a.txt in die Datei b.txt würden wir Folgendes schreiben:
$cp a.txt b.txt
Das cp-Programm empfängt hier zwei Parameter, die die Namen von zwei Dateien sind, den ersten (muss vorhanden sein) a.txt und den zweiten b.txt.
Ein weiteres Beispiel: Wenn Sie mit dem Befehl von der Konsole aus zum Drucken senden
$ lp file.pdf
In diesem Fall ist "file.pdf" ein Parameter für das lp-Programm.
Ich hoffe, ich habe Ihre Zweifel befriedigt.
Grüße
Meine Kommentare kommen nicht heraus, es ist ein Mangel an Respekt, ich kehre nicht wieder in dieses Forum zurück.
Ich weiß nicht, was passiert ist, auf jeden Fall wurde dieser veröffentlicht.
Grüße.