Выражение выражения командной строки?

Я ищу Linux-совместимый калькулятор на основе TTY. Например:

user@host:~$ calculate > 2 2 user@host:~$ calculate > 8*6-4 44 user@host:~$ calculate > 8*(6-4) 16 

Есть ли что-то вроде этого, которое поддерживает основные операции, некоторые встроенные функции, такие как atan() и, возможно, пользовательские функции с помощью скриптов?

7 Solutions collect form web for “Выражение выражения командной строки?”

bc & dc

bc и dc – 2 калькулятора, которые я часто использую, когда вам нужен доступ с терминала.

Примеры

 $ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 

Затем вы можете ввести свои вопросы:

 2 2 5+5 10 

Когда вы закончите, вы можете выйти с помощью Ctrl + C.

Тест-драйв

Эти калькуляторы довольно многофункциональны.

пересчет

 scale=5 193 * 1/3 64.33333 

уравнения

 principal=100 ir = 0.05 years = 5 futurevalue = principal * (1 + ir)^years futurevalue 127.62800 

ваши примеры

 8*6-4 44 8*(6-4) 16 

известково

Если вы хотите что-то немного более интерактивное, вы можете calc .

пример

 $ calc C-style arbitrary precision calculator (version 2.12.4.4) Calc is open software. For license details type: help copyright [Type "exit" to exit, or "help" for help.] ; 10+10 20 ; 8*6-4 44 ; 8*(6-4) 16 ; 

Вы можете использовать стрелки вверх / вниз для прохождения прошлых команд, а также интерактивная справка.

 ; help 

Дает вам следующее:

 For more information while running calc, type help followed by one of the following topics: topic description ----- ----------- intro introduction to calc overview overview of calc help this file assoc using associations builtin builtin functions command top level commands config configuration parameters custom information about the custom builtin interface define how to define functions environment how environment variables effect calc errorcodes calc generated error codes expression expression sequences file using files history command history interrupt how interrupts are handled list using lists mat using matrices ... 

См. Справочную страницу для получения дополнительной информации.

На ваш вопрос много ответов …

Простые, которые вы могли бы сделать в оболочке.

 $ echo $((8*(6-4))) 16 

В качестве выделенной программы есть bc .

 $ echo "8*(6-4)" | bc 16 

Пользовательские функции с помощью скриптов? Ну, сценарии оболочки и bc оба имеют их, в некотором роде. Зависит от того, как далеко вы хотите его принять.

Почему бы не Python? Это легко узнать.

 $ python >>> from math import atan >>> 8*(6-4)+atan(0) 16.0 

В zsh :

 $ autoload zcalc # best in ~/.zshrc $ zcalc 1> 8*(6-4) 16 2> $1*2 32 

Maxima CAS :

  • можно запустить с консоли (также есть версии окон, такие как wxMaxima
  • поддерживает скрипты ( пакетный текстовый файл с расширением Mac )
  • имеет много встроенных функций
    L (т): = ехр (% I * T * 2 * пи%);  / * единичный круг, параметризованный с углом по очереди * /
    plot2d (
    [Atan2 (imagpart (Л (х)), realpart (Л (х)))],
    [Х, 0,1],
    [У, -2 *% р, 2 *% р],
    [plot_format, gnuplot],
    [Gnuplot_term, "PNG"],
    [gnuplot_out_file, "atan2.png"],
    [legend, "atan2"],
    [xlabel, «угол в радианах»], 
    [ylabel, «угол в радианах»],
    [Gnuplot_preamble»
    установить левый верхний ключ;
    set xtics ('pi / 2' 0.25, 'pi' 0.5, '3pi / 2' 0.75, '2pi' 1.0);
    set ytics ('-2pi' -6.283, '-pi' -3.1415, '-pi / 2' -1.5708, '0' 0, 'pi / 2' 1.5708, 'pi' 3.1415, '2pi' 6.283);
    set grid xtics ytics "]
   );

НТН

Вот немного взлома bash, который позволит вам выполнить простую арифметику непосредственно на командной строке.

 alias calc='set -o noglob; docalc' function docalc { perl -e "print STDOUT $*, \"\\n\""; set +o noglob; } 

Тогда вы можете сделать, например,

 calc 3 * 15 + 5 

К сожалению, это не очень хорошо сочетается с круглыми скобками. (Если я правильно помню, вы можете получить tcsh, чтобы принять их тоже, но я не мог убедить bash.)

PS. Вы можете положиться на bash для арифметики, заменив вызов perl на echo $(( $* )) ; но это даст вам целочисленное деление на 5/6 и т. д. Арифметика Perl более полезна.

Альтернатива: Если ваша единственная говядина с python – это то, что вам нужно import math , следующим является ваш друг:

 % alias calc='python -i -c "from math import *"' % calc >>> 5 * atan(0.25) 

у насекомых есть как веб-версии, так и терминальные версии:

использование примера насекомых

Другой способ – использовать интерпретатор, такой как Python 3:

 $ python3 > from math import * > 213/53*exp(0.8)/asin(3) 9.645423462356044 

Преимущество состоит в том, что вы можете создавать скрипты, есть много функций (вы также можете импортировать cmath если вам нужны сложные номера), вам не нужно устанавливать какую-либо точность для большинства случаев, а python уже установлен на большинстве установок Linux ,

Python 3.x лучше для общего калькулятора, чем Python 2.x, потому что Python 3.x выполняет разделение точек с плавающей точкой, если результат не является int.

 $ python3 > 3/2 1.5 $ python2 > 3/2 1 

Главным недостатком, по крайней мере для меня, является то, что плавающие объекты не печатаются в научной нотации, если они не очень большие или маленькие, без строки формата:

 > exp(35) 1586013452313430.8 > "{:e}".format(exp(35)) '1.586013e+15' 
  • Каковы мои варианты, когда я хочу конвертировать DVD-формат в AVI под Linux?
  • Читатели PDF не основаны на poppler?
  • Помощь в поиске небольшого графического файлового менеджера
  • Tiling window manager, который сохраняет заголовок?
  • FTP-клиент с хорошим графическим интерфейсом?
  • удаленная оболочка - есть ли альтернативы, отличные от ssh?
  • EPUB для * BSD / Linux
  • получить бесплатную строку жанра id3-tag, а не только номер жанра в сценарии bash
  • Простой иерархический список задач (который позволяет вам перечеркнуть задачи) для linux в репозиториях Ubuntu?
  • Базы данных для встроенной Linux?
  • Видео водяные знаки
  • Рекомендации по хорошим решениям MTA / groupware?
  • Linux и Unix - лучшая ОС в мире.