自分でコマンドを作成できますか?


12

コマンドラインで「音楽」と入力すると、vlcが開き、プレイリストの再生が開始されるように、独自のコマンドを作成できるかどうか疑問に思いました。vlcのことは単なる例ですが、問題は残ります。

自分でコマンドを作成できますか?はいの場合、どのように?


スクリプトが必要な場合は作成できますか?
アルヴァー

回答:


19

はい-という名前のファイルを作成、音楽をし、その中に以下のものを置きます:

#!/bin/bash
echo "Hello world"

次に、タイプchmod +x music-ファイルを実行可能にします。./musicこれで、このスクリプトを実行するために入力できます。

echo $PATHこれらのディレクトリのいずれかにスクリプトを入力してコピーすることをお勧めします。またはを介し$HOME/binPATHに作成して追加することをお勧めします。これは(これらのファイルの1つに)以下を追加することで実行できます。その後、それをリロードするために実行する必要があります(そのファイルにそれを置いたと仮定します)。~/.bash_profile~/.profileexport PATH="$HOME/bin:$PATH"source .bash_profile

もう1つの方法は、実行するコマンドをbashエイリアスとして追加することです。これを行うに.bash_aliasesは、ホームディレクトリで指定されたファイルに次を追加します。

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

実行source ~/.bash_aliasesまたはログアウトしてログインすると、動作するはずです:-)


3

これを行う最適な方法.bash_aliasesは、ホームフォルダーで呼び出されるファイルを変更(または作成)することです。

構文は非常に簡単です。

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

このコマンドを使用するとinstall、端末で入力すると、代わりに次のように解釈されます。

sudo apt-get -y install

ただし、これらのコマンドは端末の外部では機能しません。


1

パス内のディレクトリ内の実行可能ファイルはすべて「コマンド」にできます。他の回答で示唆されているようにスクリプトでもかまいませんが、サポートされている言語でコンパイルされたプログラムでもかまいません。

エイリアスも機能しますが、「ワンライナー」であるため制限があり、複雑な操作を行うとすぐに読みにくいコードが生成されます。また、入力したシェルと同じ変数スコープで実行されるため、別のディレクトリに残したり、エイリアスが実行するタスクにのみ必要な変数を定義したままにするなど、意図しない副作用が簡単に発生する可能性があります。(もちろん、望ましい副作用があるため、エイリアスを正確に使用したい場合があります。)

パス内のディレクトリに新しいコマンドを配置すると、シェルがそれらを見つけて実行できます。それらを配置する最も一般的な場所は、$ HOME / binです。このディレクトリが存在する場合、多くの場合、パスに自動的に追加されます。

これを設定する際に留意すべき2つのことは次のとおりです。1)通常、システムで既に定義されているものと一致しない一意の名前をコマンドに使用するのが最善です。これについては多くの議論がありますが、主なポイントは、誰かがあなたのシステムを使用している場合、馴染みのあるコマンドが予期しない結果にならないことと、別のシステムで作業するときに特別なことをする一般的なコマンドに慣れるとトラブルになる可能性があることですそのように定義されていない場合。

2)$ HOME / binをパスの先頭または末尾に追加できます(またはその間の任意の場所に追加できますが、通常は行われません)。

コマンドのバージョンが常に実行され、より速く検出されるため、パスの先頭に追加するのが最も便利な選択です。また、$ HOME / binへの書き込み許可を取得できる人(rootアクセスを取得するよりもはるかに簡単)が、一般的なコマンドを潜在的に悪意のあるコードに非常に簡単に置き換えることができるため、セキュリティの脆弱性でもあります。また、システムを知らない人に助けを求める必要がある場合、すべてを説明するために多くの余分な努力を費やさない限り、カスタムコマンドの特別な動作につまずく可能性がありますあなたの質問をする。

既にパスにあるコマンドと同じ名前のコマンドが最初に検出され、代わりに実行されるため、パスステートメントの最後に追加する方が少し安全です。 。

これをすべて回避するには(少し余分に入力する必要があります)、コマンドをパスにないディレクトリに配置して、完全なパス名を入力する必要があるため、意図せずに実行されることはほとんどありませんそれを実行します。

Linuxのほとんどのものと同様に、新しいコマンドを作成して使用するには多くの方法があり、それぞれに利点と制限があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.