Псевдоним для целочисленного калькулятора 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, что является еще одним преимуществом.

Другие вопросы по тегам