Kann ich meine eigenen Befehle machen?

12

Ich habe mich gefragt, ob ich meine eigenen Befehle eingeben könnte, als ob ich "Musik" in der Befehlszeile eingeben würde. Mein VLC sollte sich öffnen und mit der Wiedergabe meiner Wiedergabeliste beginnen. Das VLC-Ding ist nur ein Beispiel, aber die Frage bleibt.

Kann ich meine eigenen Befehle machen? Wenn ja wie

harisibrahimkv
quelle
Sie können Skripte erstellen, wenn Sie dies wünschen?
Alvar

Antworten:

19

Ja - erstellen Sie eine Datei mit dem Namen music und fügen Sie Folgendes ein:

#!/bin/bash
echo "Hello world"

Geben Sie als Nächstes Folgendes ein chmod +x music: Dadurch wird die Datei ausführbar. Sie können jetzt eingeben ./music, um dieses Skript auszuführen.

Es ist eine gute Idee, echo $PATHdas Skript einzugeben und in eines dieser Verzeichnisse zu kopieren. Ich würde vorschlagen, $HOME/bindas zu deinem PFAD über ~/.bash_profileoder hinzuzufügen ~/.profile. Dies kann durch Hinzufügen (zu einer dieser Dateien) durchgeführt werden: export PATH="$HOME/bin:$PATH". Sie müssen dann ausführen source .bash_profile(vorausgesetzt, Sie haben das in diese Datei geschrieben), um sie neu zu laden.

Eine andere Alternative wäre, den Befehl hinzuzufügen, den Sie als Bash-Alias ​​ausführen möchten. Sie können dies tun, indem Sie einer Datei .bash_aliasesin Ihrem Ausgangsverzeichnis Folgendes hinzufügen :

alias music='vlc --some-option --foo'

Laufen source ~/.bash_aliasesoder ausloggen und einloggen und es sollte funktionieren :-)

Nick
quelle
3

Der beste Weg, dies zu tun, besteht darin, eine Datei zu ändern (oder zu erstellen), die .bash_aliasesin Ihrem privaten Ordner aufgerufen wird .

Die Syntax ist ziemlich einfach:

alias install='sudo apt-get -y install'

Wenn Sie mit diesem Befehl installein Terminal eingeben, wird es stattdessen als interpretiert

sudo apt-get -y install

Diese Befehle funktionieren jedoch nicht außerhalb eines Terminals.

Basscal
quelle
1

Jede ausführbare Datei in einem Verzeichnis in Ihrem Pfad kann ein "Befehl" sein. Es kann sich um ein Skript handeln, wie in anderen Antworten vorgeschlagen, aber es kann sich auch um ein kompiliertes Programm in jeder unterstützten Sprache handeln, die Sie kennen.

Aliase funktionieren ebenfalls, sind jedoch begrenzt, da sie "Einzeiler" sind, sodass bei komplizierten Vorgängen schnell Code generiert wird, der sehr schwer zu lesen ist. Da sie im gleichen Variablenbereich wie die Shell ausgeführt werden, in die Sie sie eingeben, können sie leicht unbeabsichtigte Nebenwirkungen haben, z. B. das Verlassen eines anderen Verzeichnisses oder das Definieren von Variablen, die nur von der Aufgabe benötigt werden, die der Alias ​​ausführt. (Natürlich möchten Sie manchmal einen Alias ​​verwenden, da dieser erwünschte Nebenwirkungen hat.)

Wenn Sie Ihre neuen Befehle in einem Verzeichnis in Ihrem Pfad ablegen, können Sie von der Shell gefunden und ausgeführt werden. Am häufigsten werden sie in $ HOME / bin abgelegt. Wenn dieses Verzeichnis existiert, wird es häufig automatisch zu Ihrem Pfad hinzugefügt.

Zwei Dinge, die Sie bei der Einrichtung beachten sollten, sind: 1) Es ist normalerweise am besten, eindeutige Namen für Ihre Befehle zu verwenden, die nicht mit denen übereinstimmen, die bereits auf Ihrem System definiert sind. Es wird viel darüber diskutiert, aber das Wichtigste ist, dass vertraute Befehle keine unerwarteten Ergebnisse haben sollten, wenn jemand anderes Ihr System verwendet. Wenn Sie sich an einen allgemeinen Befehl gewöhnen, der etwas Besonderes ausführt, können Sie Probleme bekommen, wenn Sie auf einem anderen System arbeiten wo es nicht so definiert ist.

2) Sie können $ HOME / bin an den Anfang oder das Ende Ihres Pfades setzen (oder irgendwo dazwischen, aber das wird normalerweise nicht gemacht).

Das Hinzufügen vor Ihrem Pfad ist die bequemste Wahl, da Ihre Version eines Befehls immer diejenige ist, die ausgeführt wird und die schneller gefunden wird. Es ist auch eine Sicherheitslücke, da jeder, der eine Schreibberechtigung für $ HOME / bin erhalten kann (viel einfacher als Root-Zugriff), häufig verwendete Befehle sehr leicht durch potenziell bösartigen Code ersetzen kann. Wenn Sie jemals jemanden um Hilfe bitten müssen, der Ihr System nicht kennt, wird er wahrscheinlich durch das besondere Verhalten Ihrer benutzerdefinierten Befehle gestört, es sei denn, Sie verwenden viel zusätzlichen Aufwand, um alles zusätzlich zu erklären deine Frage stellen.

Das Hinzufügen an das Ende Ihrer Pfadanweisung ist etwas sicherer, da jeder Befehl mit demselben Namen wie Ihr Befehl, der sich bereits in Ihrem Pfad befindet, zuerst gefunden und stattdessen ausgeführt wird .

Um all dies zu vermeiden (auf Kosten einer zusätzlichen Eingabe), können Sie Ihren Befehl auch in einem Verzeichnis ablegen, das sich nicht in Ihrem Pfad befindet, sodass er so gut wie nie ungewollt ausgeführt wird, da Sie den vollständigen Pfadnamen eingeben müssen starte es.

Wie die meisten Dinge in Linux gibt es viele Möglichkeiten, neue Befehle zu erstellen und zu verwenden, und sie haben jeweils ihre eigenen Vor- und Nachteile.

Joe
quelle