0

エイリアスを使用してCでファイルをコンパイルするのにかかる時間を短縮したいと思います。

これが私のエイリアスです:

alias gccp="gcc -pendantic -Wall -ansi '$1'.c -o '$1'"   

gccp p1を試して、コマンドが実行されることを期待していますgcc -pendantic -Wall -ansi p1.c -o p1

私は何が間違っているのですか?

4

3 に答える 3

1

エイリアスに引数を設定することはできません。あなたの場合、$1は何もありません。これを行う関数を作成してエクスポートする必要があります。

編集

私が間違えました。引数はbashエイリアスで可能ですが、エイリアス呼び出されたときではなく、作成されたときに割り当てられます。したがって、必要な機能を実現するには、この関数を.bashrcファイルに追加し、bashを再起動します。

function gccp()
{
        gcc -pendantic -Wall -ansi $1.c -o $1
}

さらに編集

それはすべてあなたが議論と呼ぶものに依存します。たとえば、.bashrcファイルに以下を追加してbashを再起動した場合

alias blabla="echo $HOSTNAME"

blablaそして、ホスト名を取得して呼び出します。しかし、$HOSTNAMEは実際には引数ではありません。それは変数です。引数は、呼び出している関数/コマンドに何らかの情報を提供していることを意味します。したがって、その定義によれば、エイリアスは引数を取り ません。

于 2012-10-25T16:55:43.910 に答える
1

make代わりに使用してください。

$ export CFLAGS=-pendantic -Wall -ansi
$ make p1

make組み込みのパターン マッチング ルールを使用して、必要なことを行います。

環境変数の使用が他のものと望ましくない方法で相互作用している場合は、代わりにCFLAGS値を直接渡すmakeか、 を定義する 1 行の makefile を記述しますCFLAGS

于 2012-10-26T10:25:47.350 に答える
0

エイリアスは引数を取ることができません。Bash のマニュアルを参照してください。引数を指定してエイリアスを呼び出すと、コマンドの末尾に引数が追加されるだけです。これは、シェルが実際にはエイリアス値をコマンド名に置き換えているだけだからです。

代わりにシェル関数を使用してください。

gccp ()
{
    gcc -pendantic -Wall -ansi "$1".c -o "$1"
}
于 2012-10-25T17:03:22.300 に答える