Blog — by Andrii Dykhlin

Підрахунки в консолі

Інколи так буває, що треба щось швидко порахувати. Папірця під рукою нема, калькулятори ви забули у 20 сторіччі, а телефон далеко. Тому на допомоги може прийти консоль (не всі операційні системи мають графічне середовище, тому актуальним буде питання простих та не дуже розрахунків через командний рядок.

Звичайно, можна запустити будь-яку мову з інтерпретатором (Python, Perl тощо), яка зможе допомогти не тільки підрахувати, а й, наприклад, написати невеличкий скрипт "підкидання монетки" для прийняття важливих рішень. Проте це потребує додавання додаткових модулів (import math, наприклад), тому ми не будемо зараз зачіпати цю тему, а поговоримо саме про те, як дістати відповідь максимально швидко.

Код:

$ bc -l

Перший спосіб я вже колись називав, проте тепер вже слід модернізувати вивід. Ця команда запустить інтерфейс калькулятора від Free Software Foundation. Ключ -l дозволить оперувати й з float числами. Але цій команді чогось не вистачає. Треба її трошки змінити:

Код:

$ bc -l <<< "%expression%"

Якщо дописати <<< та вираз, який нам треба обрахувати, то система автоматично видасть відповідь. Лапки потрібні у тому випадку, якщо ми пишемо вираз з дробами чи, наприклад, з sqrt() - функцією, яка вираховує квадратний корінь.

Я ж собі, враховуючи лінь, додав до ~/.bash_aliases аліас з попереднього посту:

Код:

alias clic="bc -l <<<"

clic - це як Command Line Calculator.

Слід пам’ятати й про:

Код:

$ source ~/.bashrc

Після цього я просто пишу clic, а після пробілу - вираз. Наприклад:

Код:

$ clic "scale=2;4^3+4*sqrt(2.3)"

scale служить для того, щоб визначити кількість символів в дробовій частині числа, його можна не вказувати. Знак "^" показує ступінь піднесення числа, sqrt - корінь, як було зазначено вище.

Інший спосіб - echo. Запис трохи важчий, проте працює так само надійно:

Код:

$ echo "$((%expression%))"

Тут діятимуть базові операції, тому це також слід пам’ятати. Приклад вживання:

Код:

$ echo "$((4+30))"

Більш складний спосіб. Й з float-числами доведеться погратися, й довше записувати, як на мене.

Далі мова піде про використання тих самих мов, про які йшлося спочатку. Їх також можна використовувати за призначенням з обмеженнями. Тому просто приведу список за базовим принципом: %мова% -%аргумент% "%слово для виведення на екран + вираз%":

  • perl, E, say
  • python, c, print
  • python3, c, print()
  • php, r, echo
  • lua, e, print()
  • ruby, e, p

Пам’ятайте, що може знадобитися встановлення інтерпретаторів для цього. З цієї "схеми" можна побачити, що якщо ми обрали perl, то структура виглядатиме ось так:

Код:

$ perl -E "say 42+6.6"

Для Python3 - так:

Код:

$ python3 -c "print(2*5+4/3)"

Рухаємось далі. Для цілочислових розрахунків можна використовувати expr:

Код:

$ expr 2 + 2 "*" 2

Для множення потрібні лапки, так. І обов’язково мають бути пробіли між символами та числами.

Останнім наших гостем буде calc. Його необхідно встановити:

Код:

$ sudo apt-get install apcalc

Або sagi, якщо ви вчинили так само, як і я в попередній публікації. Також підійде apt або yum, якщо ви використовуєте RHEL/CentOS. І саме calc - це єдина достойна, на мій погляд, альтернатива bc. Навіть інтерфейс трошки кращий. Вміє, в принципі, те саме:

Код:

$ calc "sqrt(5)*7/3"

Але я вважаю, що питання вибору засобів завжди залишається за людиною. Тому обирайте той варіант, який до снаги саме вам




Прокоментуйте!