- GNU bc — калькулятор командной строки для Linux
- Возможности GNU bc
- Использование GNU bc
- Типы выражений
- Переключение между системами счисления ввода/вывода
- Точность
- Использование встроенных функций
- Другие возможности языка
- Неинтерактивное использование GNU bc
- bc — The Linux Command-line Calculator
- How To Use Calculator In Linux Command Line?
- gcalccmd
- GNU bc
- Занимательная математика командной строки
- bash калькулятор целочисленный
- bc мэдскиллз
- Замер производительности процессора с bc
- Скрипты bc
- awk: арифмометр и гадалка
- В заключение
GNU bc — калькулятор командной строки для Linux
Оригинал: What is a good command-line calculator on Linux
Автор: Dan Nanni
Дата публикации: 21 октября 2014 года
Перевод: А. Кривошей
Дата перевода: октябрь 2015 г.
Любой современный дистрибутив Linux включает графический калькулятор. С другой стороны, если вашим обычным рабочим окружением является терминал, то вы скорее будете искать себе калькулятор, который бы работал в командной строке. В этой категории программ, по моему мнению, единоличным лидером является GNU bc (сокращение от «basic calculator»). Это очень мощная и полезная утилита.
Еще до наступления эры GNU, bc исторически был известным языком для вычислений, первая реализация которого относится к старым добрым временам Unix 70-х годов. Изначально bc был больше известен в качестве языка программирования с синтаксисом, похожим на C. Со временем оригинальный bc эволюционировал в POSIX bc, а затем и в GNU bc.
Возможности GNU bc
Сегодняшний GNU bc является результатом многочисленных усовершенствований предыдущих реализаций, и сегодня он представляет собой стандарт для всех главных дистрибутивов GNU/Linux. bc поддерживает стандартные арифметические операции с числами произвольной точности и различных систем счисления (двоичные, десятеричные, шестнадцатеричные).
Если вы знакомы с языком C, вы увидите, что в bc используются те же или похожие математические операторы. Среди поддерживаемых операций арифметические (+,-,*,/,%,++,—), сравнения ( ,==,!=, =), логические (!,&&,||), побитовые (&,|,^,
, >), составного присваивания (+=,-=,*=,/=,%=,&=,|=,^=,&&=,||=, >=). bc имеет много полезных встроенных функций, таких как извлечение квадратного корня, тригонометрические и обратные тригонометрические функции, логарифмы, экспонента и так далее.
Использование GNU bc
Возможности GNU bc как калькулятора командной строки практически неограничены. В этом руководстве я собираюсь описать самые популярные функции bc. Получить полную информацию о возможностях программы можно из официальной документации.
За исключением случая запуска ранее написанного скрипта, обычно bc используется в интерактивном режиме, где каждая строка, содержащая выражение или оператор, интерпретируется и выполняется на лету. Чтобы перейти в интерактивную сессию bc, введите приведенную ниже команду. Для выхода из сессии введите «quit» и нажмите Enter.
Во всех приведенных в данном руководстве примерах подразумевается, что они вводятся внутри сессии bc.
Типы выражений
Для расчета арифметического выражения просто введите выражение и нажмите Enter. Если хотите, можете сохранить промежуточный вариант в переменной, чтобы затем использовать его в других выражениях.
В пределах одной сессии bc сохраняет всю историю введенных строк. Для возврата к предыдущим выражениям используется курсорная клавиша со стрелкой вверх. Если вы хотите ограничить число строк, сохраняемых в истории, присвойте нужное вам число переменной по имени history. По умолчанию ее значение -1, что соответствует «unlimited».
Переключение между системами счисления ввода/вывода
Часто может потребоваться вводить числа и выводить на экран результаты в двоичном или шестнадцатеричном формате. Для этого bc позволяет определить систему счисления для ввода и вывода. Они хранятся в переменных ibase и obase соответственно. По умолчанию значение этих специальных переменных равно 10, а диапазон допустимых значений от 2 до 16 (или значения переменной окружения BC_BASE_MAX в случае obase). Все, что вам нужно для смены системы счисления — изменить значения ibase и obase. Например, ниже пример суммирования двух шестнадцатеричных/двоичных чисел:
Обратите внимание, что я задал сначала obase=16, затем ibase=16, а не наоборот. Если бы задал сначала ibase=16, то выражение obase=16 интерпретировалось бы уже в шестнадцатеричном формате (то есть мы присваивали бы obase значение 22 в десятеричной форме).
Точность
В bc точность чисел хранится в специальной переменной под названием scale (количество десятичных цифр после точки). По умолчанию ее значение равно 0, что соответствует хранению всех цифр результата. Вы можете изменить точность, присвоив перменной scale соответствующее значение.
Использование встроенных функций
Помимо простых арифметических операций GNU bc предлагает большой набор продвинутых математических функций, как встроенных, так и находящихся во внешней математической библиотеке. Для использования этих функций запустите bc с опцией «-l».
Ниже проиллюстрированы некоторые из этих встроенных функций.
Квадратный корень из N:
Синус от X (X в радианах):
Косинус от X (X в радианах):
Арктангенс от X (возвращаемое значение в радианах):
Натуральный логарифм от X:
Экспонента от X:
Другие возможности языка
GNU bc поддерживает простые операторы (например присваивание значения переменной, break, return), составные операторы (if, while, for loop), и функции, определенные пользователем. Я не буду детально описывать эти возможности, но вы легко можете научиться пользоваться ними из официального руководства. Ниже пример определения очень простой функции:
Неинтерактивное использование GNU bc
До сих пор мы использовали bc в интерактивном режиме. Однако достаточно часто он используется неинтерактивно, в скриптах оболочки. В этом случае вы можете направить ввод на bc с помощью команды echo, например:
В завершение можно сказать, что GNU bc — это очень мощный гибкий калькулятор командной строки, который соответствует самым высоким требованиям. Предустановленный во всех современных дистрибутивах Linux, bc может значительно упростить ваши задачи, не выходя из терминала.
Источник
bc — The Linux Command-line Calculator
bc — The Linux Command-line Calculator
Probably every distro of desktop Linux comes with its own built-in, graphical calculator. And, if you don’t like it, you can always install another one from the distro’s repository. So, why would you want to learn about a calculator that has no graphical interface, and that you work simply by entering formulas on the command-line?
Well, you might be working with a computer that isn’t running a graphical interface. Or, you might just want something that works a bit faster than what a graphical-type calculator would. Most importantly, you might want something that’s more flexible, and more powerful than any run-of-the-mill graphical-type calculator.
And if you really do want speed, flexibility, and power, have we got a deal for you!
The «bc» calculator comes as a part of your Linux distro, so there’s no need for you to install anything extra. In addition to performing simple math functions, it can also perform conversions between different number systems, perform a number of scientific math functions, and can even run programs that you write and save in a text file. Here’s how it works.
At the command-prompt, enter:
(You’ll need the «-l» switch to perform anything other than the simplest of functions. It’s what pulls in the «standard math libraries».)
Your screen should now look something like:
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
Now, just type in your formula at the blinking cursor, and hit «Enter». You can type in something simple, or you can type in complex statements with grouped operators.
((83.12 + 32.13) * 37.3)
In addition to the normal math functions—addition, subtraction, multiplication, division, modulus, and exponents—bc also has functions to calculate sines, cosines, arctangents, and logarithms. So, for example, if you need to find the natural logarithm of 4,332, it’s as simple as:
The «ibase» function allows you to set what numbering system that you want to use for input. «obase» allows you to set what numbering system to use for output. You can mix-n’-match, here, so that you can have a handy way of converting numbers from one system to another.
Let’s say that you want to convert numbers from decimal to hexadecimal. First, set your «obase».
Now, multiply the number that you want to convert by 1:
Oh, but wait, you really wanted that answer in binary. No problem, just change the obase.
To return to normal, set the obase back to 10.
To convert from another number system back to decimal, set the «ibase».
You can perform calculations in other number systems by setting both the ibase and the obase.
Now, here’s the real beauty of bc. You can write programs for it, save them to text files, and then run the programs by using the name of the program text file as an argument. (The programming syntax is somewhat similar to that of bash scripting.) Let’s start by looking at a program that demonstrates the use of the «if» construct. We’ll save the program to a file that we’ll name «simple_if».
print «Input x\n»; x = read()
print «Input y\n»; y = read()
Now, let’s run it, and see what happens.
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
The «read()» functions in the first two lines allowed us to interactively assign values to the «x» and «y» variables, and the «if» constructs chose the appropriate output.
For something more practical, let’s look at the «checkbook» example program from the bc man page.
print «\nCheck Book Program!\n»
print «Remember, deposits are negative transactions.\n»
print «Exit by a 0 transaction.\n\n»
print «Initial balance?»; bal = read()
«current balance =»; bal
«transaction?»; trans = read()
if (trans == 0) break;
The «scale» function on the first line limits input and output to two decimal places. When you run it, it’ll first ask you to enter an initial account balance. The «while» construct will allow you to enter transactions until you’re done, at which time you’ll enter a transaction of «0».
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
Check Book Program!
Remember, deposits are negative transactions.
Exit by a 0 transaction.
current balance =5578.80
current balance =6808.80
current balance =6763.80
current balance =6728.91
current balance =1639.01
current balance =1694.16
current balance =85.19
We’ve just scratched the surface of what you can do with bc. Give it a try, and see what it can do for you.
For more information, enter «man bc» at the command-line.
Источник
How To Use Calculator In Linux Command Line?
Short Bytes: You can use the Linux terminal to do mathematical calculations using command line calculator utilities. This includes the inbuilt gcalccmd and GNU bc. Qalculator, a third party utility is also a good command line calculator.
T he calculator is a hell lot of a handy app because it’s hard for us to get our brains at work. Some calculator apps are intelligent, and some of them are dumb af. However, that’s a different topic of discussion we can have some other day. This article describes some tools which allow you to use the calculator from the command line in Linux distros.
gcalccmd
It is the console version of Gnome Calculator utility present in Linux distributions like Ubuntu. To use the gcalccmd calculator tool, type the following command in the terminal:
Do the calculations
Performing calculations is simple. Just enter the numbers and desired operators in the terminal and press Enter. You can also use brackets in your calculations.
You can find the square root, natural log, etc:
You can also find sine, cosine, tangent values for given angles:
Press CTRL+D to exit from the gcalccmd tool and still remain on the command line. You can access the help section by using the help command inside gcalccmd.
Qalc is the terminal version of the calculator app, Qalculate. It doesn’t come pre-installed like gcalccmd. The command line calculator also allows you to do currency conversions besides regular calculation work.
You can install Qalc using the following command in the terminal:
After installation, if it fails to update currency exchange rates, then you can do so by following the steps below:
In the terminal, type qalc and press enter. To update the currency exchange rates, type exrates and press enter.
You can use the qalc command to start Qalculate on the command line. You can do the currency conversion as follows:
You can do unit conversion along with regular calculation stuff. Also, it remembers the answer from your last calculation. So, you can go like this:
Press CTRL+D to exit qalc command line calculator utility. You can access the help section by using the help command inside the qalc utility.
GNU bc
GNU bc is a command line calculator utility that is used for regular as well as scientific calculations in the command line.
How to install GNU bc?
Just like gcalccmd, bc is also present in your Linux distro.
Using bc
You can do calculations similar to the other command line calculators mentioned above.
These were some of the command line calculator utilities you can use on the Linux terminal. To know more about these utilities, you can visit their man pages.
If you have something to add, tell us in the comments below.
Источник
Занимательная математика командной строки
Если вы пользователь Linux, Free/Open BSD или другой свободной ОС, есть вероятность, что интерфейс командной строки вам не чужд. В таком случае можно использовать командную оболочку для простых арифметических действий. Для этого не нужно устанавливать дополнительных программ, все уже есть в базовом наборе операционной системы. Они позволяют качественно заменить привычный калькулятор на столике счетовода.
bash калькулятор целочисленный
Арифметические операции с целочисленными в bash будут выглядеть так:
На man странице bash , в разделе ARITHMETIC EVALUATION вы можете ознакомиться с приоритетом исполнения действий операторов. И, кстати, можно получить тот же результат, используя команду expr целочисленное выражение , вместо подстановки с двойными скобками в командах вывода.
bc мэдскиллз
Целочисленные выражения это конечно хорошо, но как-то маловато даже для калькулятора. Благо в наборе есть еще bc — Си-подобный интерактивный интерпретатор. Не будем тратить время на сложение и вычитание, перейдем сразу к более интересным занятиям.
Это уже получше калькулятора, так как позволяет получить любое количество чисел в дробной части с помощью переменной scale . Остерегайтесь поддельных проприетарных версий bc , так как они поддерживают всего-лишь 99 знаков после запятой!
Еще 2 важные переменные: ibase и obase указывают на основание входящих и исходящих чисел.
Тут, кстати, есть засада. Посмотрите на эти два примера. Вроде бы пытаешься сделать то же самое, но результат разный. Вся суть в том, что в первом примере ibase=2 , но сама obase=10 принимает значение 2 в силу того, что ibase определяет по базе obase и 10 становится равной 2. Чтобы разорвать этот круг, надо использовать hex.
При множественном возведении числа в степень важно расставить нужным образом скобки, ибо bc правоассоциативна и результат может быть не тот, на который вы рассчитывали.
Помимо этих художеств, bc имеет еще интерактивный режим в котором пищит и все портит делает все то же самое, но уже напрямую, без конвейера. Ключ -q нужен, чтобы подавить гнушное приветствие.
Замер производительности процессора с bc
Много лун назад на одном популярном англоязычном форуме, ныне покойном, предложили гениально простой способ нагреть проц и посчитать его скорость в попугаях.
Мы подгружаем в bc математическую библиотеку опцией -l и просим выдать число π с точностью 5000 знаков после запятой. Мой результат вычисления на Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz :
Скрипты bc
В bc можно, если очень нужно, определять функции и запускать скрипты. Определение функции имеет следующий синтаксис:
Определены условные операторы if и else , причем последний не обязательно использовать, а также заголовки цикла for и while . На Википедии можно просмотреть список математических операторов и сравнить с таковым в Си. А вот так выглядит расчет чисел Фибоначчи в bc .
Как ЯП bc не взлетел, однако, в качестве настольного калькулятора он более чем хорош.
awk: арифмометр и гадалка
Мне не часто доводилось пользоваться awk , поэтому каждый раз я с удивлением обнаруживаю новые возможности этой программы. Если нужно посчитать логарифмы или синусы, не спешите паниковать, man awk вам поможет. Вот так мы получили квадратный корень.
А вот мы уже логарифмируем число π, 5000 знаков которого мы уже вычисляли с помощью bc .
Оглашаю полный список возможностей
Иногда, хочется довериться судьбе и послать все на три буквы — awk. Вообще-то, это пример из книги издательства O’Reilly, имитирует бросание монетки, выдавая 2 разных события пить или не пить с одинаковой вероятностью.
В заключение
В нашей математической мастерской.еще очень много разных программ и если тема взлетит, попробуем перейти в первую и высшую лигу математического ПО с открытыми исходниками.
I. Замена калькулятора
- Встроенные средства командной оболочки: арифметические подстановки bash .
- Программа GNU bc .
- Неформат — awk .
- OpenOffice / LibreOffice Calc .
- KDE KSpread .
- GNOME Gnumeric .
- Одиночные, например: GNU Oleo и другие.
III. Специализированные математические программы, уровень студент+
IV. Языки программирования, математические библиотеки и среды
- Ansi C , библиотеки math.h, complex.h, GSL и другие товарищи.
- Java Scientific Library
- Python , библиотеки SciPy, NumPy, Sympy и другие товарищи.
- COBOL .
- Fortran .
- Intel Math Kernel Library (Intel MKL)
- AMD Accelerated Parallel Processing Math (APPLM)
- AMD Core Math Library (ACML)
Список, естественно не полный, поэтому заранее прошу прощение, если не указал чей-то излюбленный математический пакет или ЯП. Последняя группа — поистине разливанное море разнообразного и годного софта.
А вот и обещанный мэдскиллз вместе с ответом на вопрос из картинки. Источник.
Источник