Псевдоним для целочисленного калькулятора BASH
Мой файл.bash_aliases заполнен однобуквенными псевдонимами (например, o для octave-cli и r для sudo reboot.
Некоторое время я хотел реализовать встроенный калькулятор BASH для быстрых вычислений, в основном целочисленного умножения и возведения в степень. Иногда я бегуecho $((expression)) в терминале, однако было бы неплохо сделать сокращение для этого, чтобы я мог просто написать
c expression
в терминал. Было бы идеально объявить что-то вроде
alias c="echo $(($@))"
в файл.bash_aliases, однако это не работает (выводится 0 и неразрешенное выражение). Каким образом мне нужно изменить приведенную выше команду, чтобы сделать возможным выражение "выражение"c expression быть переданным на echo $(($@)). У меня была идея включить функцию в файл.bash_aliases, но я не знаю, как правильно направить аргумент.
1 ответ
Псевдонимы не могут принимать позиционные параметры. Для этого вам понадобится функция:
$ c(){ echo "$(($@))"; }
$ c 2+2
4
В этом нет ничего нового и не решается вопрос о псевдонимах. То же самое было описано здесь, здесь, здесь и в десятках других сообщений.
Хотя в некоторых случаях можно "смоделировать" поведение псевдонимов с помощью xargsэтот подход подвержен ошибкам, сложен в обслуживании и работает непостоянно. В общем, если вы по какой-то причине не хотите использовать функцию, но хотите иметь утилиту командной строки для выполнения вычислений, используйте предложения, приведенные в Любой калькулятор командной строки для Ubuntu?. Специальный инструмент, подобный предлагаемому, может делать больше, чем просто арифметическое расширение bash, что является еще одним преимуществом.