我有如下的示例命令:
g++ main.cpp -o main -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -I/usr/local/include/opencv4
运行上述整个命令将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'
现在运行上述命令如下:
ocv main.cpp
它将创建一个名为 的文件。但我希望它通过删除扩展名built_main.cpp
来生成文件。怎么做?main
.cpp
答案1
对于 zsh 你应该使用修饰符:r
,$@
参见例如这。
所以
alias ocv='f(){ g++ "$@" -o built_$@:r -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -I/usr/local/include/opencv4; unset -f f; }; f'