313

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

エイリアス mkcd='mkdir $1; CD $1;'

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

関数 mkcd(){
  mkdir $1
  CD $1
}

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

4

11 に答える 11

320

他のシェルについて投稿された内容を繰り返しますが、Bashでは次のように動作します。

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

以下を実行します。

blah one two

以下の出力が得られます。

First: one
Second: two
于 2014-03-27T10:23:09.807 に答える
183

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

于 2009-06-02T19:10:29.433 に答える
59

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

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

kshでは、機能が道です。ただし、エイリアスを本当に使用したい場合は、次のようにします。

alias mkcd='_(){ mkdir $1; cd $1; }; _'
于 2009-06-02T19:15:32.420 に答える
17

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

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

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

于 2009-06-02T19:15:52.717 に答える
13

次のコマンドも役立つ場合があります。

mkdir dirname && cd $_

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

于 2014-03-14T19:58:23.530 に答える
7

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

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

他のシェルについては不明

于 2017-08-20T14:58:47.913 に答える
5

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

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

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

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

于 2013-06-18T19:45:59.337 に答える
2

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

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

于 2009-06-02T19:14:14.717 に答える
1

これはkshで機能します:

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

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

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

于 2009-07-22T15:08:57.133 に答える
-2

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

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

$ count 6
0
1
2
3
4
5
$
于 2013-07-15T23:51:50.783 に答える