2017-03-03 4 views
0

bashコマンドに0引数の代わりにデフォルト引数を渡す方法を探しています。たとえば$ lsをコマンドラインに渡すと、実際には$ ls --colorがコマンドラインに渡されます。bashコマンドのデフォルト引数/パラメータを設定する

+0

あなたが呼ばれる関数を書くことができます'ls'は'/bin/ls'を実行します。引数が与えられていればそれを渡します。それ以外の場合はデフォルトの引数で実行します。 – Barmar

+0

一部のコマンドは、環境変数でデフォルト設定を調べます。これに関心のあるコマンドのドキュメントをチェックしてください。 – Barmar

+0

例は 'less'で、' LESS'環境変数を使ってデフォルトオプションを取得します。 – Barmar

答えて

1

機能やエイリアスを使用できます。

あなたは追加のオプションを使用して、すべてのls呼び出しを接頭辞にしたい場合は、次のようにエイリアスを定義することができます。

alias ls="ls --color" 

これは、暗黙的にオプションにあなたがlsを使用するたびに使用するようなものです。呼び出されると、エイリアスは割り当てられた値に置き換えられます。コマンドの先頭でエイリアスを使用する必要があり、拡張エイリアスは、解釈される最終ステートメントの一部になります。つまり、エイリアスは自動テキスト置換の一種であり、できることではかなり制限されています。

Barmarによって示唆されるように、あなたはまた、すべての引数は次のない場合にのみ、あなたのデフォルト引数を使用できるようになります機能、(またはそれらの一部)を使用することができます。

ls() 
{ 
    if 
    (($#)) # True if at least one argument present 
    then 
    command ls "[email protected]" 
    else 
    command ls --color 
    fi 
} 

一つの別名を許可その関数は呼び出しコンテキストと同じコンテキストで実行することはできません(関数呼び出しではなく、テキスト置換の形式)ので、それらは位置パラメータと対話できます。唯一、独自の引数をシフトし、通話を残して、関数呼び出しに反して、実際にエイリアスが使用されているような能動位置パラメーターをシフトする

alias shift_and_echo="shift ; echo" 

:例として、次のような別名を持つことができますコンテキスト位置パラメータは影響を受けない。 echoには、エイリアスの呼び出しに続くものはすべて引数として指定されます(これはまったくないかもしれません)。私に

、それ以外の機能は、一般的に優れているとして、これは、いくつかの特定の目的のためのスクリプトでエイリアスを使用する主な理由で、引数を受け取ることができるという、ローカル変数を含む...

+0

ls関数は、それ自身を繰り返し呼び出してクラッシュします。 – warrens

+0

厄介で明白なバグ!更新版では、再帰呼び出しを避ける必要があります。 – Fred

関連する問題