Я ищу калькулятор, который может выполнять вычисления в самом терминале без каких-либо дополнительных префиксов и суффиксов.
Например: если я набрал что-то вроде 10000-9000 в терминале, ответ должен выйдет как 1000.
Еще раз говорю: мне просто нужен быстрый калькулятор в терминале, без добавления каких-либо символов. Я знаю, если я переключусь на Python, он может это сделать, но я не хочу этого таким образом.
Вы можете сделать простую целочисленную арифметику изначально в bash с использованием синтаксиса ((...)), например
$ echo $((10000-9000))
1000
Также есть калькулятор bc, который может принимать арифметические выражения на стандартном входе [!d1 ]
$ echo "10000-9000" | bc
1000
Программа bc также может выполнять арифметику с плавающей запятой
$ echo "scale = 3; 0.1-0.09" | bc
.01
Вы можете использовать calc. Не установлен по умолчанию, но вы можете установить его быстро, используя следующую команду:
sudo apt-get install apcalc
После того, как вы установили, вы можете выполнить любой расчет:
$ calc 5+2
7
$ calc 5-2
3
$ calc 5*2
10
$ calc 5/2
2.5
$ calc 5^2
25
$ calc 'sqrt(2)'
1.4142135623730950488
$ calc 'sin(2)'
0.9092974268256816954
$ calc 'cos(2)'
-0.416146836547142387
$ calc 'log(2)'
~0.30102999566398119521
$ calc 'sqrt(sin(cos(log(2))))^2'
~0.81633199125847958126
$ # and so on...
[d3 ] Для получения дополнительной информации просмотрите ее calc К сожалению, нет «более простого» способа сделать это. Интерактивный интерфейс python в командной строке лучше всего подходит для вас, потому что в отличие от apcalc \, python включен в Ubuntu. Я не уверен, что bc включен еще, однако, python является фаворитом для этого материала.
Вы можете просто запустить интерактивный интерфейс python в командной строке, а затем сделать математика таким образом. Вы можете использовать это как свой калькулятор.
Для этого вы открываете терминал, набираете python, затем нажимаете кнопку Enter.
Затем в приглашении python, которая показывает вы можете ввести свою математику. Например, 10000 - 9000. Следующий результат - результат.
Если вы имеете в виду, что-то, где вы просто загружаете терминал и можете это сделать ...
$ 10000 - 9000 1000 $... тогда нет никакого способа сделать это в включенном терминале без чего-либо еще, потому что Bash не обрабатывает такие числовые аргументы.
Я бы посоветовал вам создать простую функцию для базовых вычислений Python. Что-то вроде этого в вашем .bashrc:
calc() {
python3 -c 'import sys; print(eval(" ".join(sys.argv[1:])))' "$@"
}
calc 5 + 5
# Returns 10
result="$(calc 5+5)"
# Stores the result into a variable
Если вы хотите сделать более сложную математику, вы можете использовать следующую команду, которая импортирует все функции модуля math. (см. здесь для получения дополнительной информации)
calc() {
python3 -c 'from math import *; import sys; print(eval(" ".join(sys.argv[1:])))' "$@"
}
calc 'sqrt(2)' # Needs quotes because (...) is special in Bash
# Returns 1.4142135623730951
result="$(calc 'sqrt(2)')"
# Stores the result into a variable
(Примечание: поскольку Python является языком программирования, некоторые вещи могут показаться странными, например ** для полномочий и % для модуля) [!d3 ]
В качестве альтернативы вы можете создать скрипт Python calc,
#!/usr/bin/python3
from math import *
import sys
print(eval(' '.join(sys.argv[1:])))
поместить его в каталог, включенный в переменную PATH, и установить его флаг исполняемого файла, чтобы получить ту же calc команду как и выше (нет необходимости создавать функцию Bash для запуска скрипта Python).
Если вы хотите использовать метод в чистом Bash, используйте ответ steeldriver. Этот ответ очень полезен, если вам нужны более продвинутые функции (например, из math), поскольку Python относительно медленный по сравнению с Bash.
Я не уверен, это нарушает ваш «переход на python, он может это сделать, и я не хочу этого таким образом». обратите внимание, но вам не нужно вводить интерактивную подсказку, и результат доступен в Bash, поэтому этот ответ кажется действительным (по крайней мере, для меня).
Используйте gcalccmd из пакета gnome-calculator (> = 13.04) или gcalctool (& lt; 13.04). Я думаю, что пакет установлен по умолчанию
% gcalccmd
> 2+3
5
> 3/2
1.5
> 3*2
6
> 2-3
−1
>
Вот сценарий быстрого сценария для этого:
#!/bin/bash
echo "$@" | bc
Сохраните это как «c», затем поместите его куда-нибудь на свой путь (например, / bin), затем отметьте его исполняемым. [!d1 ]
# nano /bin/c
# chmod +x /bin/c
С этого момента вы можете выполнять вычисления в терминале следующим образом:
$ c 10000-9000
1000
Ниже приведена модификация соответствующей части /etc/bash.bashrc (на Ubuntu 10.04), которая будет модифицировать обработчик command_not_found для запуска анализатора выражения оболочки, если первым символом неизвестной команды является число или - или [ f6].
Вы сможете сделать любую арифметику shell таким образом; см. http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic для списка арифметических операторов.
Обратите внимание, что если выражение, которое вы хотите оценить, содержит [ f7], вам придется процитировать * с помощью \ или кавычек, так как оболочка будет расширять имя файла, прежде чем решать, какую команду запускать.
Поместите это в свой ~/.bashrc, затем введите . ~/.bashrc и попробуйте.
# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found ]; then
function command_not_found_handle {
if [[ $1 == [0-9+-]* ]]; then
echo $(( $@ ))
elif [ -x /usr/lib/command-not-found ]; then
/usr/bin/python /usr/lib/command-not-found -- $1
return $?
elif [ -x /usr/share/command-not-found ]; then
/usr/bin/python /usr/share/command-not-found -- $1
return $?
else
return 127
fi
}
fi
Пример вывода: (I набрав cta, опечатку, просто чтобы проверить, что наш новый обработчик command_not_found все равно попытается найти неизвестные команды).
mp@ubuntu:~$ cta
No command 'cta' found, did you mean:
Command 'cda' from package 'xmcd' (universe)
Command 'cat' from package 'coreutils' (main)
cta: command not found
mp@ubuntu:~$ 9000-1000
8000
Другим решением, о котором я не упоминал здесь, является Qalculate (qalc).
sudo apt-get install qalc
для версии CLI,
sudo apt-get install qalculate-gtk
для GUI. [!d4 ]
У него есть множество функций, таких как:
поддержка единиц: например 20 m / s * 12 h = 864 kilom встроенные константы, такие как pi, e, c, avogadro многие встроенные функции: например. sin(pi) = 0, gamma(4) = 6, 5! = 120, log(1024, 2) = 10, например: > 120 in 120 * inch = 120 in > convert cm 120 in = 304.8 centim поддержка для единиц: например 20 m / s * 12 h = 864 kilom , т.е. integrate 3*x^2 = x^3, diff sin(x), pi встроенные константы, такие как pi, e, c, avogadro вкладка завершения команд много встроенных функций: например. sin(pi) = 0, gamma(4) = 6, 5! = 120, log(1024, 2) = 10 и более ...Вы говорите, что хотите использовать его без префиксов, ну ... вы можете использовать его с префикс:
$ qalc 5 ft + 3 cm
(5 * foot) + (3 * centim) = 1.554 m
, а также запустить его как repl.
Очень простые команды следующие (у manpage есть весь синтаксис, который я не включал.
Вам нужны пробелы между числами. Они игнорируются во всех других случаях.
Ввод числа подталкивает его к вершине стека.
+ Adds top 2 items in stack, then pushes result to stack (`2 4 +p` outputs 6)
- Subtracts top 2 items in stack, then pushes result to stack (`4 2 -p` outputs 2)
* Multiplies top 2 items in stack, then pushes result to stack (`6 5 *p` outputs 30)
/ Divides top 2 items in stack, then pushes result to stack (`54 7 /p` outputs 8)
p Print top item in stack, without destroying it
c Clear stack
r Swap top 2 items on stack
d Duplicate top item on stack
k Pops top item off stack, using it to determine precision (so 10 k would print 10 numbers after the decimal point). Default is 0, so it won't do floating point math by default.
n Pops top value off stack, then sends to stdout without a trailing newline
f Dump stack. Useful for finding what something does
Я использую Octave для такого рода вещей: http://www.gnu.org/software/octave/
Это в значительной степени клоун matlab (извинения, если это более упрощение), что может можно использовать в терминале, набрав октаву. Установить sudo apt-get install octave
Не совсем то, что вы хотите, но я думал, что добавлю его в качестве альтернативы python.
Пример использования:
Мне нравится wcalc много. Это научный калькулятор командной строки. Легко найти в Ubuntu Software Center или просто использовать apt-get.
sudo apt-get install wcalc
Он принимает аргументы командной строки, а также имеет режим «shell»:
# simple operation
$ wcalc 2+2
= 4
# Quoting is necessary to prevent shell from evaluating parenthesis
$ wcalc "(2+2)*10"
= 40
$ wcalc "sqrt(25)"
~= 5
# in shell mode you can evaluate multiple commands repeatedly
$ wcalc
Enter an expression to evaluate, q to quit, or ? for help:
-> 12*20+1
= 241
-> sin(90)
= 1
-> sin(pi/2)
= 0.0274121
И если кто-то в технике, как и я, вы можете использовать GNU Octave. Он может делать всевозможные вещи, графически, решать одновременное уравнение. Плюс это бесплатная альтернатива Matlab
простой способ - вызвать python.
Пример:
> python -c 'print 10000-9000'
То, что я нашел, я не могу доверять expr, bc или встроенным параметрам Shell. Поэтому я использовал Perl, который обычно устанавливался в * linux distro
perl -le 'printf "%.0f", eval"@ARGV"' "($VAL2-$VAL1)"
. Вышеуказанный расчет вычитает $ VAL1 из $ VAL2 и печатает без десятичных знаков (0f)
Benefit с использованием Perl (подробности о плюсах и минусах, перечисленных здесь)
Улучшенный захват ошибок (деление на 0 не остановит вычисления) Может предоставлять формулы в файле конфигурации. Не нужно бежать с помощью сложного регулярного выраженияВы можете добавить следующую функцию в ваш .bashrc-файл:
function = {
echo "$@" | bc -l
}
Обратите внимание, что флаг -l очень важен. Без него использование bc дает 5 / 2 = 2.
Как было сказано выше, вычисления могут быть выполнены с использованием знака = перед формулой.
Вы также можете использовать awk для выполнения некоторых арифметических вычислений на терминале,
echo 10000 9000 | awk '{print $1-$2}'
1000
echo 10000 9000 | awk '{print $1+$2}'
19000
echo 10000 9000 | awk '{print $1/$2}'
1.11111
echo 10000 9000 | awk '{print $1*$2}'
90000000
используйте команду «bc», а затем вы можете выполнить вычисление
example
[root@vaibhav ~]# bc
----------these lines will genrate automaicaly---------------
right 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
---------------enter your calculation here---------------------------------------
10+2
12
Использовать bc без гарантийного примечания записать в терминал bc -q [!d2 ]
пример
[root@vaibhav ~]# bc -q
10+2
12
Вы можете использовать bind и bash C-a и C-e для управления выходом. Например, выполните это в своей оболочке:
bind '"\C-j": "\C-aecho $(( \C-e )) \C-m"'
Теперь введите любую арифметическую операцию, например 10 + 15, и нажмите Ca + J:
$ echo $(( 10 + 15 ))
25
[d6 ] Вы получите это. Теперь, как это делается? bind эта команда изменяет привязку вашего bash, например, сочетания клавиш. \C-j это эквивалент bash, эквивалентный Ctrl + J, это ключевая комбинация, которую мы хотели бы добавить к нашей команде. \C-a это приведет нас к началу строки. echo $(( это записывает echo $(( в начале. \C-e возвращает нас к концу строки )), закрывает нашу предыдущую круглую скобку \C-m, это эквивалентно возврату ключа. Вы можете записать это в свой файл ~/.inputrc:
"\C-j": "\C-aecho $(( \C-e )) \C-m"
Конечно, другие ответы действительно!
bind эта команда изменяет привязку вашего bash, например, сочетания клавиш. apcalc: "\C-j": "\C-acacl \C-m" \C-j это bash эквивалентно Ctrl + J, это ключевая комбинация, которую мы хотели бы добавить к нашей команде. любые другие?Вы можете изменить Ctrl + J на все, что захотите, но помните, не пытайтесь изменить его для того, что уже имеет привязку;).
Ресурс:
apcalc: "\C-j": "\C-acacl \C-m"Раньше я использовал wcalc и небольшую программу под названием e, для которой Google go очень трудно. Теперь я использую скрипт python для этого, который использует некоторые функции e, такие как квадратные скобки. wcalc все еще хорошо, потому что он может делать произвольную точность и преобразование единиц измерения, но я почти никогда не использую эти функции.
#!/usr/bin/env python3
"""
This is a very simple command line calculator. It reads in all
arguments as a single string and runs eval() on them. The math module
is imported so you have access to all of that. If run with no
arguments, it allows you to input a single line expression. In the
case of command line args, square brackets are replaced with round
parentheses, because many shells interpret round parentheses if they
are not quoted.
"""
import sys, numbers
import cmath, math
args = sys.argv[1:]
if len(args) < 1:
expr = input()
else:
expr = " ".join(args[:])
expr = expr.replace("[", "(").replace("]", ")")
def log2(x):
"""Return the base-2 logarithm of x."""
return cmath.log(x, 2)
# the smallest number such that 1+eps != 1
# (this is approximate)
epsilon = sys.float_info.epsilon
env = math.__dict__
env.update(cmath.__dict__)
env = {k:v for k,v in env.items() if not k.startswith("__")}
env["eps"] = epsilon
env["log2"] = log2
env["inf"] = float("inf")
env["nan"] = float("nan")
res = eval(expr, env)
# throw away small imaginary parts, they're probably just due to imprecision
if (isinstance(res, numbers.Number)
and res != 0
and abs(res.imag)/abs(res) < 10*epsilon):
res = res.real
print(str(res).replace("(", "[").replace(")", "]"))
Вот как его использовать (при условии, что сценарий был сохранен как и поместите где-то в $PATH):
$ e e**[pi*1i]
-1.0
$ e hex[10**3]
0x3e8
$ e "[0o400+3]&0xff" # need quotes because of '&'
3
Существует одноэтапный способ выполнить именно то, что вы хотите. Все, что вам нужно сделать, это установить shell для вашей учетной записи на /bin/bc.
Вы также можете использовать встроенную оболочку printf для выполнения арифметических вычислений на терминале.
printf `expr $num1 + $num2` # num1,num2 are variables which stores numbers as values.
Пример:
$ printf "$(expr 10000 + 9000)\n"
19000
$ printf "$(expr 10000 - 9000)\n"
1000
Вы можете использовать интерпретатор python для расчета. Вот как это сделать.
Python 2 и python 3 по умолчанию установлены в Ubuntu.
$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 2+2
4
>>> 3*5
15
Создать калькулятор терминалов
Поместите следующее в ваш .bashrc файл
function calc
{
echo "${1}"|bc -l;
}
Или запустите его в командной строке. Теперь «calc» из оболочки будет работать следующим образом:
$ calc 3+45
48
Все функции с «(» или «)» должны быть заключены в кавычки.