Программа Alias ​​to Scrot не работает в .bashr c, но работает в терминале - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь создать псевдоним для команды scrot в .bashr c следующим образом:

alias scrotn="scrot %Y-%m-%d-%s_$wx$h.jpg -e 'mv $f ~/pictures/screenshots/'"

Команда scrot работает в моем терминале, но когда я пытаюсь запустить scrotn, я получаю следующий вывод:

mv: missing destination file operand after '/home/lain/pictures/screenshots/'

Уже пробовал добавлять кавычки в% Y-% m-% d-% s_ $ wx $ h.jpg, переключая двойные и одинарные кавычки и используя / home / lain / вместо ~ /. Да, ~ / pictures / screenshots / существует. Я хочу создать псевдоним, чтобы привязать его к ключу PrtS c в моей конфигурации DWM. Извините за плохой engli sh.

1 Ответ

0 голосов
/ 07 августа 2020

Поскольку псевдоним определяется как строка в двойных кавычках (внутренние кавычки не имеют значения для оболочки), $f расширяется (предположительно до пустой строки) при создании псевдонима. Рекомендуемый способ обойти это - использовать функцию, а не псевдоним. Многие считают псевдонимы устаревшими, потому что они могут выполнять меньше функций, их трудно отлаживать, как вы обнаружили, и на самом деле они не намного проще, чем функции.

Результат:

scrotn() {
    [your scrot command line]
}
...