Ubuntu用のコマンドライン電卓はありますか?


119

他の余分な接頭辞や接尾辞なしで端末自体で計算を実行できる計算機を探しています。

たとえば、端末で10000-9000のように入力すると、答えは1000になります。

繰り返しますが、キャラクターを追加せずに、ターミナルに簡単な電卓が必要なだけです。私がPythonに切り替えれば、それができることは知っていますが、そのようにしたくありません。



2
可能性がある前フックの種類とそのような何かをハックすることが可能になります。しかし、それ自体は本当にreallyくてハック的な方法でしかできません。いいえ、私はそれは良い考えではないと思います。Bashは全体として単純なIOスクリプト言語として意図されており、それ以外のことは多かれ少なかれアドホックであり、実際にはうまく機能しません。一方、Python(またはHaskellなど)は、優れた構文を備えた最新の汎用プログラミング言語です。したがって、それを使用しないのはばかげているでしょう。
左辺り

3
同じように、command_not_foundフックを使って何かをすることもできます。コマンドがbc/ calc/ whateverに渡されると、あいまいに見える場合は数学のように見えます。それでも、まだ少し汚い感じがします。
慢性炎

1
待って、正確に「切り替え」のpythonの意味ですか?と「余分なプレフィックスなし」?コマンドを実行せずにプロンプ​​トで物事を計算できるようにしたいと言っていますか?
ランダム832

回答:


78

バッシュ算術

別の可能な解決策は、Bashの組み込み演算用の単純な関数を追加することです。これを.bashrcファイルに入れて試してください:

=() {
    echo "$(($@))"
}

ですから、今では$((...))もう必要ありません=。これは当然のことです。

置換

もう一つは、あなたも速くなりたい場合は:あなたはそれを置き換えることができますp+してx*。これはそのために動作します:

=() {
    local IFS=' '
    local calc="${*//p/+}"
    calc="${calc//x/*}"
    echo "$(($calc))"
}

= 5 x 5  # Returns 25
= 50p25  # Returns 75

今ではShiftもう必要さえありません、唯一のものは算術の前にあります。

16進出力

必要に応じて、出力を10進数と16進数の両方で表示できます。(x置換を使用すると、0x...16進構文と競合します)

=() {
    local answer="$(($@))"
    printf '%d (%#x)\n' "$answer" "$answer"
}

例:

$ = 16 + 0x10
272 (0x110)

$ = 16**3 + 16**4
69632 (0x11000)

を使用して bc

少し高度な計算が必要な場合は、次のbcようにパイプすることができます。

=() {
    local IFS=' '
    local calc="${*//p/+}"
    calc="${calc//x/*}"
    bc -l <<<"scale=10;$calc"
}

= 'sqrt(2)' # Returns 1.4142135623
= '4*a(1)'  # Returns pi (3.1415926532)

によって提供される関数はbc次のとおりです(およびから見つけることができますman bc)。

sqrt ( expression )
       The value of the sqrt function is the square root of the expression.  
       If the expression is negative, a run time error is generated.

s (x)  The sine of x, x is in radians.

c (x)  The cosine of x, x is in radians.

a (x)  The arctangent of x, arctangent returns radians.

l (x)  The natural logarithm of x.

e (x)  The exponential function of raising e to the value x.

j (n,x)
       The Bessel function of integer order n of x.

また、サポートifforwhile、あなたはそれを望んでいたならば、それは良いかもしれ場合しかし、プログラミング言語のような変数は、ファイルに書き込みます。

それが代用されますことを心に留めておいてくださいpx機能/変数名に。単に置換を削除する方が良い場合があります。

を使用して gcalccmd

次のようにgcalccmd(からgnome-calculator)関数呼び出しを行うこともできます。

=() {
    local IFS=' '
    local calc="$*"
    # Uncomment the below for (p → +) and (x → *)
    #calc="${calc//p/+}"
    #calc="${calc//x/*}"
    printf '%s\n quit' "$calc" | gcalccmd | sed 's:^> ::g'
}

= 'sqrt(2)' # Returns 1.4142135623
= '4^4'     # Returns 256

使用可能な関数は(ソースコードから直接取得した)ようで、==同等の関数を示します。

ln()
sqrt()
abs()
int()
frac()
sin()
cos()
tan()
sin⁻¹() == asin()
cos⁻¹() == acos()
tan⁻¹() == atan()
sinh()
cosh()
tanh()
sinh⁻¹() == asinh()
cosh⁻¹() == acosh()
tanh⁻¹() == atanh()
ones()
twos()

1
ありがとう、科学計算でさらにサポートを追加できますか?
rɑːdʒɑ

2
@rajagenupula上記の私の編集を参照してください
キリ

この返信が遅くなってすみませんが、指定したコマンドgcalccmdはうまく機能しません。それはError 3おそらくその浮遊空白のために表示されます。:しかし、これは少しも私のために完全に働いた修正echo -e "$calc\nquit"| gcalccmd | sed "s:^> ::g"
udiboy1209

Rを使用して科学計算を作成しました!function = { R -q --vanilla -e "$@" | grep -E '[^>](.*)' -o -x --color=never }
モルテザミラニ14

こんにちは、ありがとう。それはいいね。ところで、 'x'の置換は16進入力に対して失敗しますが、それ以外の場合は正常に動作します。そういえば、「hex」でも答えを出せますか?例えば。= 2 + 0x20 34 (0x22)
FractalSpace

93

((...))構文を使用して、bashでネイティブに単純な整数演算を行うことができます。たとえば、

$ echo $((10000-9000))
1000

bc標準入力で算術式を受け入れることができる計算機もあります

$ echo "10000-9000" | bc
1000

bcプログラムは、同様に浮動小数点演算を行うことができます

$ echo "scale = 3; 0.1-0.09" | bc
.01

11
これはおそらくあなたが得ることができる最も近いものです。余分なタイピングを減らすために(完全になくすことはできませんが)、〜/ .bashrcに関数を入れることができます:calc()NL {NL echo "$@" | bcNL }ここで、NLは改行です。次に、calc 1234 + 768(prints 2002)またはbc解釈可能な他の式を入力できます。もちろん、任意の関数名を使用できますcalc。これが何をするのかとうまく合うと思いました。
CVn

4
pythonは、常にエコーするよりも優れています。私の意見。
rɑːdʒɑ

6
bcをインタラクティブに使用することもできます。ただし、何らかの理由でエコーが必要な場合を除きます。bcを実行して式を入力するだけです。終了するには、Ctrl-Dをその行に入力します。
役に立たない

エイリアスなどを使用して自動式を作成した場合、それは素晴らしいことです。
rɑːdʒɑ

3
する必要はありませんechobc <<< "2*2"
ベルンハルト

90

を使用できます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...

詳細については、マンページをご覧ください


2
答えてくれてありがとう、答えにはそれなりの意味があると思う。これらすべての三角関数の計算については、少し好きです。それ以上何ができるかについてのマニュアルやページは、あなたが多くの答えを改善することができます。:)
rɑːdʒɑ

@rajagenupula man calccalc helpすべてを言います。
ラドゥラデアヌ

2
私の意図は、誰かがそれを見ているなら、それは明確で迅速でなければならないということです。ありがとうございました。
rɑːdʒɑ

1
実際には、使用calc help builtinのようにサポートしている機能の一覧を表示するsin()
Penghe庚

より多くの小数を与えるため、組み込みのbash演算よりも私の目的により適しています。ありがとう。
Mrmfldmn

30

残念ながら、これを行うための「簡単な」方法はありません。apcalc\とpythonは異なり、Ubuntuに含まれているため、コマンドラインの対話型pythonインターフェイスは必要なものに最適です。bcがまだ含まれているかどうかはわかりませんが、Pythonはこのようなものに人気があります。

pythonコマンドラインで対話型インターフェイスを実行し、そのように計算するだけです。これを計算機として使用できます。

それを行うには、ターミナルを開いてを入力しpythonEnterボタンを押します。

次に、表示されるpythonプロンプトで、数学を入力できます。たとえば、10000 - 9000。次の行の出力は結果です。


ただし、ターミナルをロードするだけでこれを実行できる場合は...

10000〜9000ドル
1000
$

...それでは、Bashはそのような数値引数を処理しないので、何もせずに端末だけでこれを行う方法はありません。


1
私は私のpythonに切り替えたいいけないことに言及しなかった
rɑːdʒɑ

1
@rajagenupulaが更新され、チャットで言及した内容も含まれました。
トーマス・ウォード

bcはもう含まれていませんか?
Random832

1
余談ipythonですが、計算などを行う場合は、標準のPythonシェルよりもかなり便利です。
ナフトゥリケイ

BCは、(少なくとも16.04に)デフォルトで含まれている
TJエリス

23

基本的な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はプログラミング言語であるため、いくつかのことは奇妙に思えるかもしれません。たとえば**、べき乗と%モジュロ)

または、Pythonスクリプトを作成できますcalc

#!/usr/bin/python3
from math import *
import sys
print(eval(' '.join(sys.argv[1:])))

PATH変数に含まれるディレクトリに配置し、実行可能フラグを設定しcalcて上記と同じコマンドを取得します(Pythonスクリプトを実行するためにBash関数を作成する必要はありません)。

純粋なBashでメソッドが必要な場合は、steeldriverの答えを使用してください。mathPythonはBashに比べて比較的遅いため、この答えは、より高度な機能(from )が必要な場合にのみ非常に有益です。


これがあなたの「Pythonに切り替えればそれができるかどうかはわかりませんが、そのようにしたくありません」。ただし、インタラクティブプロンプトを入力する必要はなく、Bashで結果にアクセスできるため、この回答は(少なくとも私には)有効なようです。


それらはすべて、それほど簡単で柔軟ではないことを意味します。ありがとうございました。よりシンプルで明確に見えるようにするための改善点はありますか?それ大好き。
rɑːdʒɑ

1
@rajagenupulaこれを.bashrcの関数に入れることができます(おそらくより短い名前:c?または+?)。これにより、各ターミナルを開くことができます。
キリ

1
注意してください:Pythonの3では、これは素晴らしい作品が、あなたはPythonの2を使用したい場合は、あなたがにスニペットを編集する必要があります。python2 -c "from __future__ import division; from math import *; print($*)"それ以外の場合は、常にのために、たとえば、整数の除算を行いますcalc 5/2あなたが得るでしょう2代わりに2.5。参考のためにここを参照してください:stackoverflow.com/a/183870/202504
jmiserez

Pythonソリューションは、追加のライブラリをインポートできるという点でapcalcよりも実際に優れている場合があり、リテラルpiおよびをサポートしeます。これを別のスクリプトとして配置すると、より柔軟で移植性が高くなります。簡単な要点を次に示し
jasongeng

21

使用gcalccmdからgnome-calculator(> = 13.04)、またはgcalctool(<13.04)パッケージ。パッケージはデフォルトでインストールされていると思います

% gcalccmd
> 2+3
5
> 3/2
1.5
> 3*2
6
> 2-3
−1
> 

今までで最高のもの..余分なことをする必要はなく、またデフォルトでインストールされる.. man gcalccmdは言う:コンソール電卓。単純に、それはまさにOPが望むものです.. :)
Saurav Kumar

かっこいい、bc、python、ocatve電卓に似ています。ありがとうございました。
rɑːdʒɑ

gcalccmdを入力するのは非常に困難であるので、それは良いアイデアはそれにエイリアスを中に追加することである./bash_aliasesようにalias calc='gcalccmd'したり、(インスタント答えで)一回限りの計算をしたい場合は、あなたが追加することができますalias calc='gnome-calculator -s'。後者の使用- calc 2000/1300またはcalc 2+3。その場合、電卓を終了する必要はありません-単に答えを与えるだけで、を入力する必要はありませんquit
ラファル14

10

これのための簡単なシェルスクリプトを次に示します。

#!/bin/bash
echo "$@" | bc

これを「c」として保存してから、パスのどこかに(/ binなど)配置し、実行可能としてマークします。

# nano /bin/c
# chmod +x /bin/c

これから、次のように端末で計算を実行できます。

$ c 10000-9000
1000

あなたは素晴らしいです、計算の前に1文字だけを追加することは本当に素晴らしいアイデアを意味します。これは、2〜3回の計算が必要な場合に最適です。私はこれを選択しますが、Pythonまたは他のものをより長くより短くすることができます。立ち寄ってくれてありがとう。
rɑːdʒɑ

2
echo "$@" | bc代わりに使用することをお勧めします。そうすれば、より自然に計算にスペースを入れることができます
kiri

このコマンドの名前の=代わりに使用してはどうcですか?Bashでは、実際にこれを関数の名前として使用できます。
カズ

1
~/bin(ホームディレクトリのbin)にプログラムを配置/home/yourname/binし、それがにあることを確認できますPATH
カズ

@ minerz029いい考えだ。それに応じて回答を編集しました。
user530873

8

ここでの適切な部分の変更です/etc/bash.bashrc変更します(Ubuntuの10.04で)command_not_found未知のコマンドの最初の文字が数字かであれば、シェルの式の評価を実行するためのハンドラを-かが+

この方法でシェルの算術演算を行うことができます。算術演算子のリストについては、http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmeticを参照してください

評価する式にaが含まれている*場合、シェルは実行するコマンドを決定する前にファイル名を展開するため、*with \またはquotes を引用符で囲む必要があることに注意してください。のような他の演算子にも同じことが言え>>ます。

これをに入れて~/.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

サンプル出力:(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

計算のサポートを追加する方法はありますか?
rɑːdʒɑ

1
あなたは言うラインを取ることができますecho $(( $@ ))し、代わりに、コマンドラインに引数を取る他の回答者が言及している、より高度な電卓プログラムのいずれかを実行するように変更します。
マークプロトニック

8

ここで言及されていない別の解決策はQalculate(qalc)です。

sudo apt-get install qalc

CLIバージョンの場合、

sudo apt-get install qalculate-gtk

GUI用。

次のような多くの機能があります。

  • ユニットのサポート:例20 m / s * 12 h = 864 kilom
  • ビルトイン定数のようなpiecavogadro
  • 多くのビルトイン機能:例えばsin(pi) = 0gamma(4) = 65! = 120log(1024, 2) = 10
  • 単位変換、例:

> 120 in
120 * inch = 120 in
> convert cm
120 in = 304.8 centim

  • シンボリック計算、例えば(x + y)^2 = x^2 + 2xy + y^2
  • 統合、例えばintegrate 3*x^2 = x^3diff sin(x), pi
  • 内蔵のヘルプ、例えばhelp converthelp integrate
  • コマンドのタブ補完
  • すべてが翻訳されます。たとえば、私のシステムはオランダ語なので、factorial(5)との両方を書くことができますfaculteit(5)
  • もっと...

あなたはプレフィックスなしでそれを使いたいと言います、まあ...あなたはプレフィックス付きでそれを使うことができます:

$ qalc 5 ft + 3 cm
(5 * foot) + (3 * centim) = 1.554 m

また、それをreplとして実行します。


7

dc!これはcoreutilsの一部であるため、OS X、Ubuntu、その他ほとんどすべてにインストールされます。これはRPN計算機であるため、それらが気に入らなければ、あなたのためではありません。

非常に基本的なコマンドは次のとおりです(マンページには、私が含めなかったすべての構文があります。べき乗、だれか?)

数字の間にスペースのみが必要です。それ以外の場合は無視されます。

数字を入力すると、その数字がスタックの一番上にプッシュされます。

+ 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

気づいたように、これは質問に答えません(他の答えもしません)。質問は(背後でも)式の前の任意のものを持っている方法ではありません、単に、たとえば入力42 * 5端子に、そしてそれに答えた出力を持っている
しかし、別のユーザー

2
ほとんどの答えは当てはまりません。1+1端末での入力はほとんど機能しません。あなたの答えは結構です
キリ

@YetAnotherUser唯一の方法は、command-not-found(インストールされている場合)にハッキングするか、bashrcで何か汚いことをすることだと思います
...-Braiam

5

私はこのようなことのためにOctaveを使用しています:http//www.gnu.org/software/octave/

オクターブを入力することで端末で使用できるmatlabクローン(これが過度に単純化されている場合は謝罪)です。sudo apt-get install octaveをインストールします

それはあなたが望むものではありませんが、私はPythonの代替としてそれを追加すると思いました。

使用例:

~ $ octave
octave:1> 9000 - 8000
ans =  1000
octave:2> 

目標を達成するための別の方法を提案することは答えとしては問題ありませんが、OPがOctaveを使用して規定のニーズを満たす方法と、なぜそれが優れた代替策であるかについての詳細を提供する必要があります。
スケスケ

2
+ 1、Octave、matlab、scilab、pythonはすべて似ていますが、オクターブはインストールする必要がありますが、Pythonはプリインストールされています。だから私はデフォルトでPythonに向かいます。ありがとうございました。
rɑːdʒɑ

私が試したすべてから(そして私はたくさん試しました!)オクターブは構文エラーで0以外を返す唯一のものです!どうも!
アクエリアスパワー14年

5

私はwcalcがとても好きです。これはコマンドライン関数電卓です。Ubuntu Software Centerで簡単に見つけるか、apt-getを使用するだけです。

sudo apt-get install wcalc

コマンドライン引数を受け入れ、「シェル」モードがあります:

# 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の無料の代替品です


... @ minerz029とそれを組み合わせることは、かなりきちんとしている:あなたの〜/ .bash_aliasesに入れ、これを:=() { wcalc "$@" }
フランクNocke

4

簡単な方法はpythonを呼び出すことです。

例:

>  python -c 'print 10000-9000'

科学的な計算で何か言及できますか。
rɑːdʒɑ

1
このようなものが欲しいですか?python -c 'import math;print math.log(2)'
user1251007

3

私が見つけたのは、expr、bc、または組み込みのシェルオプションが信頼できないことです。したがって、通常はLinuxディストリビューションにインストールされるPerlを使用しました

perl -le 'printf "%.0f", eval"@ARGV"' "($VAL2-$VAL1)"

上記の計算では、$ VAL2から$ VAL1が減算され、小数点以下の桁なしで印刷されます(0f)

Perlを使用する利点は(長所と短所の詳細をここにリストしています

  • エラーキャプチャの改善(0で除算しても計算は停止しません)
  • 構成ファイルで式を提供できます。複雑な正規表現を使用してエスケープする必要はありません

しかし、そのコマンドは常に少し問題を意味します。ターミナルで使用されるperlベースの計算機はありますか?
rɑːdʒɑ

3

次の関数を.bashrcファイルに追加できます。

function = {
  echo "$@" | bc -l
}

ことに注意してください-lフラグが非常に重要です。それなしで、bcgivesの使用5 / 2 = 2

上記のようにメンチオ化されている=ため、式の前に記号を使用して計算を行うことができます。


3

また、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

かっこいい、awk(オクターブ)は、構文エラーthxでも0以外を返します!
アクエリアスパワー14年

2

「bc」コマンドを使用すると、uは計算を実行できます

[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

[root@vaibhav ~]# bc -q
10+2
12

bcはすでに説明されて含まれています。
ブライアム

2

bindおよびbash C-aを使用してC-e、出力を制御できます。たとえば、シェルでこれを実行します。

bind '"\C-j": "\C-aecho $(( \C-e )) \C-m"'

今10 + 15とプレスなどの任意の演算入力Ctrl+をJ

$ echo $(( 10 + 15 )) 
25

これを取得します。さて、それはどのように行われますか?

  • bind このコマンドは、ショートカットキーのように、bashのバインドを変更します。
  • \C-j これはCtrl + Jに相当するbashです。これは、コマンドに追加するキーの組み合わせです。
  • \C-a これにより、行の先頭に移動します。
  • echo $((これはecho $((最初に書き込みます。
  • \C-e 行末まで連れて行ってくれます
  • )) 前の括弧を閉じます
  • \C-m これはリターンキーと同等です。

これを~/.inputrcファイルに書き込むことができます:

"\C-j": "\C-aecho $(( \C-e )) \C-m"

もちろん、他の答えも有効です!少し調整しました。

  • 紀元前: "\C-j": "\C-aecho " \C-e " | bc \C-m"
  • apcalc: "\C-j": "\C-acacl \C-m"
  • python: "\C-j": "\C-apython3 -c "print( \C-e )" \C-m"
  • 他のもの?

Ctrl + Jを好きなように変更できますが、既にバインディングがあるものについては変更しないようにしてください;)。

資源:


Ctrl + Jには既にバインディングがあり、(Enterなどの)行を送信します。これは実際にはかなり賢明な回答ですが、;)
kiri

2

過去に、私が使ったことがwcalcありますが、eそれをグーグルで検索するのはほとんど不可能です。今、私はこれを行うために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(")", "]"))

使用方法は次のとおりです(スクリプトがとして保存されe、のどこかに配置されていると仮定します$PATH)。

$ e e**[pi*1i]
-1.0
$ e hex[10**3]
0x3e8
$ e "[0o400+3]&0xff" # need quotes because of '&'
3

例により、これがより明確になります。ありがとうございます。
rɑːdʒɑ

0

あなたが望むものを正確に達成するためのワンステップの方法があります。する必要があるのはshell、アカウントのをに設定することだけです/bin/bc


3
詳しく説明してもらえますか?Pressume OPはシェルの変更方法を知りません。
Braiam

0

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

3
あなたが結果を計算するために(組み込みされていない)exprのを使用しているこの方法では、printf関数は、ここに冗長である
ハビエル・ロペス

0

計算には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

0

ターミナル計算機を作成する

以下を.bashrcファイルに入れます

function calc
{
 echo "${1}"|bc -l;
}

または、シェルプロンプトで実行します。これで、シェルからの「calc」は次のように機能します。

$ calc 3+45
   48

「(」または「)」の付いたすべての関数は引用符で囲む必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.