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或者编写一个定义CFLAGS.

于 2012-10-26T10:25:47.350 回答
0

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

改用shell 函数

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