У меня есть пример команды:
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
. Как это сделать?
Для 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'