设置 Ubuntu 别名的参数

Cla*_*ong 4 command-line zsh alias g++ bashrc

我有一个示例命令,如下所示:

g++ main.cpp -o main -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -I/usr/local/include/opencv4
Run Code Online (Sandbox Code Playgroud)

运行上述整个命令将main根据参数main后的第二个参数创建文件-o。我已在文件.zshrc中将其重置如下:

alias ocv='f(){ g++ "$@" -o built_$@ -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -I/usr/local/include/opencv4; unset -f f; }; f'
Run Code Online (Sandbox Code Playgroud)

现在运行上面的命令如下:

ocv main.cpp
Run Code Online (Sandbox Code Playgroud)

它将创建一个名为built_main.cpp. 但我希望它main通过删除扩展名来生成文件.cpp。怎么做?

san*_*lio 5

对于 zsh,您应该使用修饰符:ron $@,例如参见this

所以它会

alias ocv='f(){ g++ "$@" -o built_$@:r -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -I/usr/local/include/opencv4; unset -f f; }; f'
Run Code Online (Sandbox Code Playgroud)