web-dev-qa-db-ja.com

コマンドライン引数をシェルエイリアスに渡す方法は?

コマンドライン引数をエイリアスに渡すにはどうすればよいですか?サンプルを次に示します。

 alias mkcd = 'mkdir $ 1; cd $ 1; '

ただし、この場合、$ xxは実行時ではなくエイリアス作成時に変換されます。ただし、次のように(少しグーグルした後)シェル関数を使用して回避策を作成しました。

 function mkcd(){
 mkdir $ 1 
 cd $ 1 
} 

CLパラメーターを受け入れるエイリアスを作成する方法があるかどうかを知りたいだけです。
ところで-デフォルトのシェルとして「bash」を使用しています。

254
Vini

方法を見つけました:エイリアスの代わりに関数を作成します。 Cシェルにはエイリアスの引数を実行するメカニズムがありますが、bashとKornシェルにはありません。関数のメカニズムはより柔軟性があり、同じ機能を提供するためです。

155
Charlie Martin

Bashで、他のシェルに投稿されたものを繰り返すために、次のように動作します:

alias blah='function _blah(){ echo "First: $1"; echo "Second: $2"; };_blah'

以下を実行します。

blah one two

以下の出力を提供します。

First: one
Second: two
247
Thomas Bratt

Kshではできませんが、cshではできます。

alias mkcd 'mkdir \!^; cd \!^1'

Kshでは、関数が道です。しかし、本当にエイリアスを使用したい場合:

alias mkcd='_(){ mkdir $1; cd $1; }; _'
52
Sanjaya R

Bashのmanページを引用するには:

置換テキストで引数を使用するメカニズムはありません。引数が必要な場合は、シェル関数を使用する必要があります(以下の関数を参照)。

あなたはあなた自身の質問に答えたようです-エイリアスの代わりに関数を使用してください

15
Chris Dodd

次のコマンドも便利です。

mkdir dirname && cd $_

dirnameは、作成するディレクトリの名前です

11
tdecs

最も簡単な方法は、エイリアスではなく関数を使用することです。 CLIからいつでも関数を呼び出すことができます。 bashでは、エイリアスと同じようにロードする関数name(){command}を追加するだけです。

function mkcd() { mkdir $1; cd $1 ;}

他のシェルについてはわからない

3
Luke Attard

エイリアスは静的であるため、実際にはBashエイリアスで必要なことを行うことはできません。代わりに、作成した関数を使用してください。

詳細については、こちらをご覧ください: http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/ 。 (はい、mactips.orgであることは知っていますが、それはBashについてですので、心配しないでください。)

2
samoz

〜/ .cshrcファイルに関数を記述できないことがわかりました。ここでは、引数を取るエイリアスで

たとえば、 'find'コマンドに渡される引数

alias fl "find . -name '\!:1'"     
Ex: >fl abc

ここで、abcは!:1として渡される引数です

2

これはkshで機能します。

$ alias -x mkcd="mkdir \$dirname; cd \$dirname;"
$ alias mkcd
mkcd='mkdir $dirname; cd $dirname;'
$ dirname=aaa 
$ pwd
/tmp   
$ mkcd
$ pwd
/tmp/aaa

「-x」オプションはエイリアスを「エクスポート」します-エイリアスはサブシェルに表示されます。

また、スクリプトで定義されたエイリアスは、そのスクリプトでは表示されないことに注意してください(エイリアスは、行が解釈されるときではなく、スクリプトがロードされるときに展開されるため)。これは、同じシェルで別のスクリプトファイルを実行することで解決できます(ドットを使用)。

1
user142925

Pythonを使用した簡単な関数の例を次に示します。 〜/ .bashrcに固執することができます
最初の左中括弧の後にスペースが必要です
変数置換を取得するには、pythonコマンドを二重引用符で囲む必要があります
最後のセミコロンを忘れないでください

function count(){python -c "for num for xrange($ 1):print num";}

$ count 6
0
1
2
3
4
5
$
0
AAAfarmclub

Bashを使用している場合は、シェル関数でそれを行うことができると思います: http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/

0
Kevin Hwang