ショートカットにbashスクリプトまたはエイリアスを使用しますか?[閉まっている]


8

1つまたは2つの小さな行スクリプトをたくさん保存する~/binディレクトリ(にありますPATH)があります。それらのいくつかはちょうどcdディレクトリに移動し、ファイルのようなコマンドを実行しますvim。しかし.bash_aliases、同じ目的で使用する多くのエイリアスがファイルにあります。

小さなbashスクリプトを作成するか、エイリアスを作成するかをどのように決定しますか?どちらに行っても問題ありませんか?


回答:


5

それらを十分に頻繁に使用して、すべてのシェルでそれらをロードするオーバーヘッドを保証する場合。関数として書いていきます。

それらがプロジェクト固有のものである場合、私はそれらを一連のエイリアスと関数として記述し、そのプロジェクトで作業しているときにシェルに取り込むことができます。

スタンドアロンで動作する場合にのみ、〜/ binでスクリプトに変換されます。基本的にエイリアスである1つのライナーがありますが、これらはシェル以外の場所から実行するためのものです(他のプログラムでプロンプトを実行するなど)。ほとんどの場合、かなり充実したスクリプトでなければなりません。


1

一般に、シェルスクリプト関数はエイリアスよりも柔軟性があり、優先する必要があります。たとえば、エイリアスでは、指定された引数の数またはそれらの型が予期されたものであるかどうかをテストできません。たとえば、エイリアスが単純なワンライナーによく合うとカレブに同意します。alias cp='cp -i'


1

単一のコマンドの文字列置換より複雑なものについては、おそらくスクリプトがより適切です。また、他のスクリプトで使用される、または他の人が使用する可能性のあるものは、おそらくスクリプトとして使用したほうがよいでしょう。他の誰かのbinディレクトリからプログラムを実行することは良い考えではありませんが、誰かの個別のエイリアスファイルを調達するよりはましです。

エイリアスは、インタラクティブな環境をパーソナライズするのに最適です。たとえばe='emacs -nw'、などです。


0

私は可能な限り単純なアプローチを使用しています。

主に、コマンドにパラメーターがない場合、通常はエイリアスを使用します。

コマンドにパラメーターがある場合は、関数を使用します。

たとえば、ディレクトリを作成してcdします。

md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }

コマンド自体がパラメーターを持つインストール済み関数を使用する場合も、関数を使用します

たとえば、-vをgitに追加します。

git () { [ $1 = commit ] && command git commit -v "${@:2}" || command git "$@"; }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.