我已经阅读了如何创建自定义终端命令(运行脚本)? . 但这总是执行相同的命令。
例如,我想要的是,而不必键入
gcc -m32 -g -zexecstack -fno-stack-protector -mpreferred-stack-boundary=2 -no-pie -fno-pic -o program program.c
Run Code Online (Sandbox Code Playgroud)
我只需要输入一个自定义命令,比如
custom-gcc program
Run Code Online (Sandbox Code Playgroud)
或者至少
custom-gcc -o program program.c
Run Code Online (Sandbox Code Playgroud)
如果我可以将选项添加到也将添加到gcc.
我怎样才能做到这一点?谢谢
ste*_*ver 10
对于这个特定的任务,我会使用 make
Makefile在源目录中创建一个,内容如下:
$ cat Makefile
CC := gcc
CFLAGS := \
-m32 -g \
-zexecstack -fno-stack-protector -mpreferred-stack-boundary=2 \
-fno-pic
LDFLAGS := -no-pie
Run Code Online (Sandbox Code Playgroud)
然后您可以简单地运行make program以编译和链接您的代码与给定的选项 ex。给予
==> hello.c <==
#include <stdio.h>
int main(void) { printf("Hello, world!\n") ; return 0; }
==> goodbye.c <==
#include <stdio.h>
int main(void) { printf("Goodbye, world!\n") ; return 0; }
Run Code Online (Sandbox Code Playgroud)
然后
$ make hello
gcc -m32 -g -zexecstack -fno-stack-protector -mpreferred-stack-boundary=2 -fno-pic -no-pie hello.c -o hello
Run Code Online (Sandbox Code Playgroud)
和
$ make goodbye
gcc -m32 -g -zexecstack -fno-stack-protector -mpreferred-stack-boundary=2 -fno-pic -no-pie goodbye.c -o goodbye
Run Code Online (Sandbox Code Playgroud)
作为参考,请参阅GNU make:隐式规则使用的变量
一般答案:
在www.tldp.org上打开您的网络浏览器并查找“Bash 指南”
简单回答:
打开终端(Shell)并输入 (在此过程中您将看到此处未显示的文本)
光盘
目录
echo >>.bash_aliases 'PATH=$PATH:$HOME/bin'
cat <<EOF >bin/custom-gcc
#!/bin/bash
gcc -m32 -g -zexecstack -fno-stack-protector \
-mpreferred-stack-boundary=2 -no-pie -fno-pic \
-o "$1" "$1.c"
EOF
chmod 755 bin/custom-gcc
出口
现在
custom-gcc program...这应该从现在开始执行custom-gcc你想要的效果。
注意:上面链接后面的 bash 指南将提供改进由上述说明创建的简单脚本所需的所有信息。
说明:
cd确保您在 $HOME/
接下来的两行在bin/您的主目录中创建一个子文件夹,并使其成为查看和查找“命令”的地方。
来自catto的行EOF是创建文本文件的简单方法,这里的文本文件内容将是执行您请求的 bash 脚本(提示:阅读 Bash 指南以了解内容)。
该chmod套“模式的标志”上刚刚创建的文件,这样它会被认为“可执行”。
最后一行退出 shell。
从现在开始,当您打开一个新的 shell(终端)时,$PATH 变量将拥有您个人的“$HOME/bin/”文件夹,导致其中的任何文件都被视为可能要执行的命令 - 当您键入其中一个的名称时它们在 shell 提示符下。