我想加快使用别名在C中编译文件所需的时间。
这是我的别名:
alias gccp="gcc -pendantic -Wall -ansi '$1'.c -o '$1'"
我尝试gccp p1并期望它运行命令gcc -pendantic -Wall -ansi p1.c -o p1
。
我做错了什么?
答案 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"
}