質問

この質問にはすでに答えがあります:

次のことを行うことは可能ですか:

以下を実行したい:

mongodb bin/mongod

私のbash_profileに私は持っています

alias = "./path/to/mongodb/$1"
役に立ちましたか?

解決

エイリアスは、それが表す文字列に拡張されます。エイリアスの後に拡張後に登場した後、明示的な引数として渡されることも、渡されることもなく渡されます(例: $1).

$ alias foo='/path/to/bar'
$ foo some args

に拡張されます

$ /path/to/bar some args

明示的な引数を使用する場合は、関数を使用する必要があります

$ foo () { /path/to/bar "$@" fixed args; }
$ foo abc 123

あなたがやったかのように実行されます

$ /path/to/bar abc 123 fixed args

エイリアスを定義するには:

unalias foo

機能を定義するには:

unset -f foo

タイプと定義を表示するには(定義されたエイリアス、キーワード、関数、ビルドインまたは実行可能ファイルごとに)を確認するには)。

type -a foo

またはタイプのみ(最高の優先順位が発生するため):

type -t foo

他のヒント

通常、Bashのエイリアスに引数を渡したい場合は、エイリアスとこのような関数の組み合わせを使用します。

function __t2d {                                                                
         if [ "$1x" != 'x' ]; then                                              
            date -d "@$1"                                                       
         fi                                                                     
} 

alias t2d='__t2d'                                                               

エイリアスでパラメーターを使用するには、この方法を使用します。

alias myalias='function __myalias() { echo "Hello $*"; unset -f __myalias; }; __myalias'

エイリアスに包まれた自己破壊的な関数なので、それはほとんど両方の世界で最高であり、あなたの定義で余分な行を取り上げることはありません...私はそれが嫌いです。値は、Unsetを呼び出す前に保存する必要があります。その後、その自己破壊機能の「返品」キーワードを使用して値を返します。

alias myalias='function __myalias() { echo "Hello $*"; myresult=$?; unset -f __myalias; return $myresult; }; __myalias'

それで..

あなたがそこにその変数を持っている必要があるならば、あなたはできます

alias mongodb='function __mongodb() { ./path/to/mongodb/$1; unset -f __mongodb; }; __mongodb'

もちろん...

alias mongodb='./path/to/mongodb/'

実際にはパラメーターを必要とせずに同じことをしますが、私が言ったように、何らかの理由で望んでいる、または必要な場合(たとえば、1ドルではなく2ドルが必要です)、そのようなラッパーを使用する必要があります。 1行よりも大きい場合は、関数が大きくなるにつれて目障りになるため、機能を完全に書くだけであることを検討するかもしれません。関数が与えるすべての特典を取得するため、機能は素晴らしいです(バッシュマンページで、機能が提供できるグッズについては、完成、トラップ、バインドなどを参照)。

私はそれがあなたを助けることを願っています:)

これは、機能の使用を避けることができるソリューションです。

alias addone='{ num=$(cat -); echo "input: $num"; echo "result:$(($num+1))"; }<<<'

テスト結果

addone 200
input: 200
result:201

CSH (とは対照的に バッシュ)あなたはあなたが望むことを正確に行うことができます。

alias print 'lpr \!^ -Pps5'
print memo.txt

表記 \!^ この時点で、引数がコマンドに挿入されます。

! 文字はaによって先入観があります \ それが歴史コマンドとして解釈されるのを防ぐため。

複数の引数を渡すこともできます。

alias print 'lpr \!* -Pps5'
print part1.ps glossary.ps figure.ps

(例から取られた例 http://unixhelp.ed.ac.uk/shell/alias_csh2.1.html .)

LEED25Dの回答を簡素化するには、エイリアスと関数の組み合わせを使用します。例えば:

function __GetIt {
    cp ./path/to/stuff/$* .
}

alias GetIt='__GetIt'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top