Wie erstelle ich benutzerdefinierte Befehle in Unix / Linux? [geschlossen]

55

Kann mich jemand anleiten, benutzerdefinierte Befehle in Unix / Linux zu erstellen.

Qadir Hussain
quelle
2
Zum späteren Nachschlagen sollten Sie die Seite mit den Fakten lesen. Es erklärt die Dinge, die Sie in Ihre Fragen stellen sollten. (wie das Posten der Dinge, die Sie recherchiert und ausprobiert haben). Das ist wahrscheinlich der Grund, warum jemand diese Frage abgelehnt hat.
Spuder

Antworten:

68

Erstellen Sie ein Bash-Skript in Ihrem Ordner / usr / bin. Es sollte ungefähr so ​​aussehen

#!/bin/bash
Whatever combination of commands you want to run when you type this thing.

Es ist wirklich so einfach.

Nennen chmod +x filenameSie das Bash-Skript einfach so, wie Sie es in das Terminal eingeben möchten, und machen Sie es ausführbar: und los geht's!

Eric
quelle
1
Könnten Sie dies ändern, um eine schrittweise Anleitung zu erhalten, einschließlich aller erforderlichen Schritte? Ich bin immer noch unsicher, wie ich meinen eigenen benutzerdefinierten Befehl erstellen soll.
Yoda
5
@AndersMB, Sie müssen ein Buch lesen . Es gibt viele gute, sogar kostenlose. Beginnen Sie mit "The Linux Command Line" .
Wildcard
Ähm ... er scherzte. Er war ein Scherz, nicht wahr ?!
Somenath Sinha
1
Ausführen mit./filename
Squirrl
46
  1. Erstellen Sie ein Verzeichnis mit der Bezeichnung "bin" in Ihrem Home-Verzeichnis.
  2. Aktualisieren Sie Ihre Pfadvariable, um dieses bin-Verzeichnis einzuschließen. Legen Sie dies in .profileoder .bash_profleDatei, um es dauerhaft zu machen.

    export PATH=$PATH":$HOME/bin"

  3. Erstellen Sie ein Skript, sagen Sie "Hallo" und bewahren Sie es in Ihrem bin-Verzeichnis auf. Erteilen Sie die Ausführungserlaubnis für das Hallo-Skript von $ chmod +x hello.

    #!/bin/bash    
    echo My first program
  4. Nachladen .profileoder .bash_profle:

    $ . ~/.bash_profile

  5. In jedem Verzeichnis geben Sie einfach Folgendes ein:

    $ hello
    My first program
Guru
quelle
Ich weiß, dass dies sehr alt ist, aber ich habe Ihren Vorschlag, einen binOrdner zu erstellen, in vielen Antworten hier gesehen. Gibt es ein Problem, wenn es .binstattdessen ist bin? Ich bin sehr wählerisch was mein homeAussehen angeht und ich möchte keinen zusätzlichen Ordner, nur weil.
MO
Ich habe es erfolglos versucht und war eine Weile sehr frustriert, weil ich dachte, dass etwas mit meiner zshInstallation nicht in Ordnung ist, $PATHaber es stellte sich heraus, dass das chmod -x hellonicht funktionierte und auch kein Kapital -X. Stattdessen habe ich es versucht chmod 755 hello, obwohl ich mir der Sicherheitsrisiken in Bezug auf diesen Befehl nicht sicher bin, ließ er mich tatsächlich laufen hello. Hat jemand eine Erklärung dafür? Ich gehe davon aus, dass es ein Problem in Bezug auf das Alter ist?
ConstantFun
1
@ConstantFun Wird verwendet chmod +x hello, um dem Skript Ausführungsberechtigungen hinzuzufügen. chmod -x hellotut genau das Gegenteil - entfernt die "Run" -Privilegien. (Beachten Sie den Plus / Minus-Unterschied in der Antwort und in Ihrem Kommentar.)
Filip Happy
25

Einfach einen Alias ​​erstellen.

Angenommen, Sie möchten einen Befehl schreiben, um eine CD in Ihr Download-Verzeichnis zu kopieren. Und du willst es cdd nennen.

alias cdd='cd ~/Downloads' 

Sie können einen beliebigen Befehl erstellen.

Hier finden Sie weitere Informationen:
http://www.mediacollege.com/linux/command/alias.html

Spuder
quelle
6
Dies bleibt jedoch nicht über Sitzungen hinweg bestehen. Dieser Befehl funktioniert, ist aber nicht permanent. Eine dauerhaftere Möglichkeit wäre, die Datei ~ / .bash_aliases zu ändern und die dort vorgeschlagene Zeile hinzuzufügen.
Jeff Grimes
2
Funktioniert auch durch Hinzufügen zu Ihrer ~ / .bashrc-Datei
Delicia Brummitt
11

Die meisten, wenn nicht sogar alle Linux-Distributionen haben ein kleines Skript in ~ / .bashrc , das fast identisch aussieht:

if [ -e ~/.bash_aliases ]
then
. ~/.bash_aliases
fi

Dies bedeutet lediglich, dass Sie Ihre eigenen Befehle erstellen können (auch als ' aliases' bezeichnet, der normalerweise auf einen vorhandenen Befehl mit einigen Argumenten verweist, die Sie immer verwenden müssen, oder eine Liste von Befehlen, die in der angegebenen Reihenfolge ausgeführt werden müssen).

In Ihrer Linux-Distribution wird die Datei .bash_aliases höchstwahrscheinlich nicht zu Hause erstellt, es sei denn, Sie haben dies bereits manuell getan. Geben Sie zum Erstellen der Datei den folgenden Befehl ein:
touch ~/.bash_aliases

Diese Datei wird nun automatisch ausgeführt, wenn Sie ein neues Terminal starten.

Sie können jetzt eine Liste von Aliasnamen erstellen und diese zur späteren Verwendung zu dieser Datei hinzufügen. Beispielsweise rmfordert Sie der Befehl (Entfernen) standardmäßig NICHT auf, Ihre Anforderung zu bestätigen, wenn Sie anweisen, eine Datei / ein Verzeichnis zu löschen. Es gibt jedoch ein Argument, das rmSie auffordert, Ihre Anfrage zu bestätigen -i. Daraufhin rm -i filePathwird eine Meldung angezeigt, in der Sie gefragt werden, ob Sie die angegebene Datei wirklich löschen möchten. Wenn Sie jetzt versehentlich eine Datei löschen, werden Sie sehr wahrscheinlich vergessen, die -iOption einzuschließen, und das ist der Punkt, an dem eine aliassehr nützlich wird. Geben Sie den folgenden Befehl ein

echo "alias rm='\rm -i'" >> ~/.bash_aliases

wird Ihnen mitteilen, Bashdass bei jeder Anforderung zum Löschen einer Datei eine Bestätigungsmeldung angezeigt wird. Natürlich können Sie noch viel mehr tun - das sind nur die Grundlagen.

Wenn Sie wollen lernen , wie einige grundlegende Befehle zu verwenden (dh cd, touch, rm, mkdir, pushd, popd, etc.) und / oder kompliziertere, würde ich ein sehr gutes Buch empfehlen Sie auf Ihrem Bücherregal als Referenz haben genannt

ein praktischer Leitfaden zu Linux-Kommandos, Editoren und Shell-Programmierung , von Mark G. Sobell . ISBN: 978-0133085044

Fadi Hanna AL-Kass
quelle
1
Warum der Backslash?
phil294