别名,变量和文件名

时间:2012-10-25 16:49:42

标签: c linux macos unix

我想加快使用别名在C中编译文件所需的时间。

这是我的别名:

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

我尝试gccp p1并期望它运行命令gcc -pendantic -Wall -ansi p1.c -o p1

我做错了什么?

3 个答案:

答案 0 :(得分:1)

别名不能有参数;在你的情况下,1美元是没有。您需要创建一个执行此操作并导出它的函数。

修改

我犯了一个错误。 bash别名中可能存在参数但是在创建别名时会分配它们,而不是在调用它时。因此,为了实现您想要的功能,请在.bashrc文件中添加此功能并重新启动bash。

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

即使是进一步的修改

这完全取决于你所说的论点。例如,如果我在.bashrc文件中添加以下内容并重新启动bash

alias blabla="echo $HOSTNAME"

我调用blabla我得到了我的主机名。但$ HOSTNAME实际上不是一个参数。这是一个变量。一个参数暗示您正在使用某种信息提供您正在调用的函数/命令。因此,根据该定义,别名接受参数。

答案 1 :(得分:1)

改为使用make

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

make将使用其内置的模式匹配规则来执行您想要的操作。

如果使用环境变量以不需要的方式与其他事物交互,请将CFLAGS值直接传递给make,或者写一个定义CFLAGS的行makefile。

答案 2 :(得分:0)

别名不能参数,请参阅Bash manual。当您使用参数调用别名时,参数只会附加到命令的末尾,因为shell实际上只是用命令名替换别名值。

改为使用shell function

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