Ubuntu के लिए कोई कमांड लाइन कैलकुलेटर?


119

मैं एक कैलकुलेटर की तलाश कर रहा हूं, जो टर्मिनल में किसी अन्य अतिरिक्त उपसर्ग और प्रत्यय के बिना गणना कर सकता है।

उदाहरण के लिए: यदि मैंने टर्मिनल में 10000-9000 की तरह कुछ टाइप किया है, तो उत्तर 1000 के रूप में सामने आना चाहिए।

एक बार फिर मैं कह रहा हूं, मुझे टर्मिनल में एक त्वरित कैलकुलेटर की आवश्यकता है, बिना किसी वर्ण के। मुझे पता है कि अगर मैं पायथन में जाता हूं, तो वह ऐसा कर सकता है, लेकिन मैं इस तरह से नहीं चाहता।


1
हो सकता है कि संकुल .ubuntu.com/saucy/ apcalc ?
Wakeup

2
यह हो सकता है पहले से हुक का एक प्रकार के साथ ऐसा ही कुछ ऊपर हैक करने के लिए संभव हो सकता है; लेकिन यह अपने आप में केवल एक बहुत ही बदसूरत और हैकिश तरीके से किया जा सकता है । नहीं, मुझे लगता है कि यह एक अच्छा विचार नहीं है। एक पूरे के रूप में बैश एक सादे IO स्क्रिप्टिंग भाषा के रूप में होता है, इसके अलावा जो कुछ भी करता है वह अधिक या कम तदर्थ है और वास्तव में अच्छी तरह से काम नहीं करता है। दूसरी ओर पायथन (या यहां तक ​​कि हास्केल) महान वाक्यविन्यास के साथ एक आधुनिक, सभी उद्देश्यीय प्रोग्रामिंग भाषा है। इसलिए इसका इस्तेमाल न करना ही बेवकूफी होगी।

3
एक ही नस में, आप command_not_foundहुक के साथ भी कुछ कर सकते हैं , और यदि वह गणित के साथ अस्पष्ट लग रहा है, तो bc/ calc/ को कमांड को खिलाने की कोशिश करें । यह अभी भी थोड़ा गंदा लगता है, हालांकि।
क्रोनिटिस

1
रुको, वास्तव में आपका क्या मतलब है "स्विच टू" अजगर? और "बिना किसी अतिरिक्त उपसर्ग के"? क्या आप कह रहे हैं कि आप कमांड चलाए बिना प्रॉम्प्ट पर चीजों की गणना करने में सक्षम होना चाहते हैं ?
रैंडम 832

जवाबों:


78

बैश अंकगणित

एक अन्य संभावित उपाय है, बैश के बिल्ट अंकगणित के लिए एक सरल कार्य जोड़ना। इसे अपनी .bashrcफ़ाइल में आज़माएं:

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

तो अब, आप भी $((...))अब और जरूरत नहीं है, =जो पर्याप्त प्राकृतिक लगता है।

प्रतिस्थापन

एक और बात आप भी तेजी से होना चाहते हैं: क्या आप इसे बदलना कर सकते हैं pके साथ +और xसाथ *। इसके लिए यह काम करेगा:

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

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

अब आपको किसी भी तरह की आवश्यकता Shiftनहीं है, केवल एक चीज अंकगणित के सामने है।

हेक्साडेसिमल आउटपुट

आउटपुट को दशमलव और षोडश आधारी दोनों में प्रदर्शित किया जा सकता है, यदि ऐसा है तो वांछित। ( नोट : xप्रतिस्थापन का उपयोग करके 0x...हेक्स सिंटैक्स के साथ संघर्ष होगा )

=() {
    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.

यह भी समर्थन करता है if, for, whileऔर एक प्रोग्रामिंग भाषा है, हालांकि अगर यह बेहतर हो सकता है की तरह चर एक फ़ाइल पर लिखने में अगर आपको लगता है कि चाहता था।

ध्यान रखें कि यह स्थानापन्न pऔर xफ़ंक्शन / चर नामों में होगा। केवल प्रतिस्थापन को हटाने के लिए बेहतर हो सकता है।

का उपयोग करते हुए 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 }
मोर्टेजा मिलानी

नमस्ते, और धन्यवाद। यह बहुत मजेदार है। BTW 'x' के लिए आपके प्रतिस्थापन को हेक्स इनपुट के लिए असफल बनाते हैं, जो अन्यथा ठीक काम करता है। जिसके बारे में बोलते हुए, क्या मुझे 'हेक्स' में भी इसका जवाब मिल सकता है? जैसे। = 2 + 0x20 34 (0x22)
फ्रैक्टलस्पेस

93

आप साधारण पूर्णांक अंकगणित को मूल रूप से ((...))वाक्यविन्यास, जैसे उदाहरण का उपयोग करके बैश में कर सकते हैं

$ echo $((10000-9000))
1000

bcकैलकुलेटर भी है , जो मानक इनपुट पर अंकगणितीय अभिव्यक्तियों को स्वीकार कर सकता है

$ echo "10000-9000" | bc
1000

bcकार्यक्रम के रूप में अच्छी तरह से चल बिन्दु गणित कर सकते हैं

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

11
यह संभवत: निकटतम है जिसे आप प्राप्त कर सकते हैं। अतिरिक्त टाइपिंग में कटौती करने के लिए (हालांकि इसे पूरी तरह से समाप्त नहीं करें) आप अपने ~ / .bashrc में एक फ़ंक्शन डाल सकते हैं: calc()एनएल {एनएल echo "$@" | bcएनएल }जहां एनएल एक नई पंक्ति है। फिर आप टाइप कर सकते हैं calc 1234 + 768(प्रिंट 2002), या कोई अन्य सूत्र जो bcव्याख्या कर सकता है। आप निश्चित रूप से किसी भी फ़ंक्शन नाम का उपयोग कर सकते हैं, मैंने अभी सोचा था कि calcयह क्या करता है के साथ अच्छी तरह से फिट है।
एक CVn

4
एक बार अजगर हर समय गूंजने से बेहतर है। मेरी राय।
r --dʒɑ

6
जब तक आपको किसी अन्य कारण से गूंज की आवश्यकता न हो, तब तक आप इंटरेक्टिव रूप से और साथ ही बीसी का उपयोग कर सकते हैं: केवल बीसी चलाएं और अपनी अभिव्यक्ति टाइप करें। बाहर निकलने के लिए अपनी लाइन पर Ctrl-D टाइप करें।
बेकार

अगर आपने किसी अन्य या अन्य की मदद से कोई स्वचालित अभिव्यक्ति की है तो यह बहुत अच्छा होगा।
r --dʒɑ

3
इसके लिए कोई आवश्यकता नहीं है echo:bc <<< "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

@rajagenupula man calcऔर calc helpसब कुछ कहता है।
रादु रयेडेनु

2
मेरा इरादा है, अगर कोई इसे देख रहा है तो यह स्पष्ट और त्वरित होना चाहिए। धन्यवाद।
r --dʒɑ

1
वास्तव में आप calc help builtinसमर्थित कार्यों की सूची देखने के लिए उपयोग करते हैं जैसेsin()
पेंघ गेंग

अधिक डेसीमल देता है, इसलिए यह अंतर्निहित बैश अंकगणित की तुलना में मेरे उद्देश्यों के लिए बेहतर है। धन्यवाद।
मृम्फल्डमन

30

दुर्भाग्य से, ऐसा करने का कोई "आसान" तरीका नहीं है। क्योंकि इन कमांड लाइन पर इंटरैक्टिव अजगर इंटरफेस, सबसे अच्छा है कि तुम क्या जरूरत के लिए अनुकूल है apcalc\, pythonहै शामिल उबंटू में। मुझे यकीन नहीं है कि bcअभी भी शामिल है, हालांकि, अजगर इस सामान के लिए हाथ से नीचे पसंदीदा है।

आप बस pythonकमांड लाइन पर इंटरेक्टिव इंटरफ़ेस चला सकते हैं , और फिर उस तरह से गणित कर सकते हैं। आप इसे अपने कैलकुलेटर के रूप में उपयोग कर सकते हैं।

ऐसा करने के लिए, आप टर्मिनल खोलें, टाइप करें python, फिर Enterबटन दबाएं।

फिर, अजगर शीघ्र जो बताता है कि में, आपको अपने गणित, लिख सकते हैं। उदाहरण के लिए 10000 - 9000। अगली पंक्ति आउटपुट का परिणाम है।


यदि आप मतलब है, हालांकि, कुछ है जहाँ आप सिर्फ टर्मिनल लोड करते हैं और यह कर सकते हैं ...

$ 10000 - 9000
1000
$

... तो कोई वहाँ में यह करने के लिए कोई रास्ता नहीं है बस कुछ और बिना टर्मिनल, क्योंकि बैश की तरह संख्यात्मक तर्क संभाल नहीं करता है।


1
मैंने उल्लेख किया कि मैं अजगर पर स्विच नहीं करना चाहता
rɑːd

1
@rajagenupula अपडेट किया गया, जिसमें चैट में उल्लिखित सामान भी शामिल है।
थॉमस वार्ड

bc अब शामिल नहीं है?
रैंडम 832

1
एक तरफ के रूप में, ipythonमानक पायथन शेल की तुलना में काफी अधिक उपयोगी है जब यह गणना और पसंद करने की बात आती है।
नाफ्टुली Kay

bc डिफ़ॉल्ट रूप से शामिल है (कम से कम 16.04 में)
TJ एलिस

23

मैं आपको बुनियादी पायथन गणनाओं के लिए एक सरल कार्य बनाने की सलाह दूंगा। कुछ इस तरह से आपके .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

(नोट: क्योंकि पायथन एक प्रोग्रामिंग भाषा है, कुछ चीजें अजीब लग सकती हैं, उदाहरण के **लिए और %मोडुलो की शक्तियों के लिए)

वैकल्पिक रूप से आप पायथन लिपि बना सकते हैं calc,

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

इसे PATHचर में शामिल निर्देशिका में रखें और calcऊपर के समान कमांड प्राप्त करने के लिए अपने निष्पादन योग्य ध्वज को सेट करें (पायथन स्क्रिप्ट को चलाने के लिए बैश फ़ंक्शन बनाने की आवश्यकता नहीं है)।

यदि आप शुद्ध बैश में एक विधि चाहते हैं, तो स्टीलड्राइवर के उत्तर का उपयोग करें। यह उत्तर केवल वास्तव में फायदेमंद है यदि आपको अधिक उन्नत कार्यों (यानी से math) की आवश्यकता है, क्योंकि पाइथन बैश की तुलना में अपेक्षाकृत धीमा है।


मुझे यकीन नहीं है कि अगर यह आपके "अजगर पर स्विच करता है तो वह ऐसा कर सकता है और मैं इसे इस तरह से नहीं चाहता हूं।" ध्यान दें, लेकिन आपको इंटरएक्टिव प्रॉम्प्ट में प्रवेश करने की आवश्यकता नहीं है और परिणाम बैश में सुलभ है, इसलिए यह उत्तर मान्य लगता है (मुझे, कम से कम)।


हर बार उन सभी का मतलब इतना आसान और लचीला नहीं होता है। धन्यवाद। कोई भी सुधार आप इसे और अधिक सरल और स्पष्ट दिखने के लिए कर सकते हैं? मुझे ये अच्छा लगेगा।
19

1
@rajagenupula आप अपने .bashrc में एक समारोह में डाल सकते हैं कि (शायद छोटे नाम के साथ: c, ?या +?) ताकि आप इसे प्रत्येक टर्मिनल आप खोलना होगा।
किरी

1
खबरदार: पायथन 3 के साथ यह बहुत अच्छा काम करता है, लेकिन यदि आप पायथन 2 का उपयोग करना चाहते हैं, तो आपको स्निपेट को संपादित python2 -c "from __future__ import division; from math import *; print($*)"करना होगा : अन्यथा यह हमेशा पूर्णांक विभाजन करेगा, जैसे कि calc 5/2आपको 2इसके बदले मिलेगा 2.5। संदर्भ के लिए यहां देखें: stackoverflow.com/a/183870/202504
jmiserez

पायथन का समाधान वास्तव में एपेक से बेहतर हो सकता है कि आप अतिरिक्त पुस्तकालयों को आयात कर सकते हैं, और यह शाब्दिक piऔर का समर्थन करता है e। मुझे लगता है कि इसे एक अलग स्क्रिप्ट के रूप में रखा जाना अधिक लचीला और पोर्टेबल है। यहाँ इसके लिए एक सरल जानकारी दी गई है: gist.github.com/jasongeng/279eb396c01e74beb9ef
पेंघ गेंग

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कहते हैं: एक कंसोल कैलकुलेटर । बस, यह वही है जो ओपी चाहता है .. :)
सौरव कुमार

बीसी, अजगर, ओकटाव कैलकुलेटर के समान थॉट्स। धन्यवाद।
r --dʒɑ

चूँकि gcalccmd टाइप करना काफी कठिन है, इसलिए इसमें उर्फ ​​को जोड़ने के लिए अच्छा विचार है ./bash_aliasesजैसे कि alias calc='gcalccmd'या यदि आप एकतरफा गणना करना चाहते हैं (तुरंत उत्तर के साथ), तो आप alias calc='gnome-calculator -s'बाद के उपयोग को जोड़ सकते हैं : calc 2000/1300या calc 2+3। उस स्थिति में, कैलकुलेटर से बाहर निकलने की कोई आवश्यकता नहीं है - यह आपको केवल एक उत्तर देता है और आपको टाइप करने की आवश्यकता नहीं है quit
रफाल

10

यहां इसके लिए एक त्वरित शेल स्क्रिप्ट दी गई है:

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

इसे "सी" के रूप में सहेजें, फिर इसे अपने पथ में कहीं रख दें (जैसे / बिन), फिर इसे निष्पादन योग्य चिह्नित करें।

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

अब से, आप टर्मिनल में गणना इस तरह से चला सकते हैं:

$ c 10000-9000
1000

आप शानदार हैं, गणना से पहले केवल एक अक्षर जोड़ने का मतलब है कि वास्तव में अच्छा विचार है। यह सुपर है अगर मुझे 2 से 3 गणनाओं की आवश्यकता है। मैं अजगर या कुछ अन्य लोगों के लिए लंबे समय तक जा सकता हूं लेकिन कम मैं इसे चुनता हूं। रुकने के लिए धन्यवाद।
r --dʒɑ

2
मैं आपको echo "$@" | bcइसके बजाय उपयोग करने की सलाह दूंगा ताकि आप गणना में अधिक स्वाभाविक रूप से रिक्त स्थान डाल सकें
kiri

इस आदेश के नाम के =बजाय उपयोग के बारे में कैसे c? बैश वास्तव में आपको एक फ़ंक्शन के नाम के रूप में इसका उपयोग करने देता है।
कज़

1
आप कार्यक्रमों को ~/bin(अपने घर की निर्देशिका में bin) डाल सकते हैं और सुनिश्चित कर सकते हैं कि /home/yourname/binआपके में है PATH
कज़

@ minerz029 अच्छी सोच। मैंने उसी के अनुसार अपना उत्तर संपादित किया है।
user530873

8

यहां /etc/bash.bashrc(उबंटू 10.04 पर) उपयुक्त भाग का एक संशोधन है जो command_not_foundशेल के एक्सप्रेशन मूल्यांकनकर्ता को चलाने के लिए हैंडलर को संशोधित करेगा यदि अज्ञात कमांड का पहला वर्ण एक संख्या या -या है +

आप इस तरह से किसी भी शेल अंकगणित को करने में सक्षम होंगे; http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic देखेंअंकगणित ऑपरेटरों की सूची के लिए ।

ध्यान दें कि यदि आप जिस अभिव्यक्ति का मूल्यांकन करना चाहते हैं *, उसमें a है , तो आपको उसके *साथ उद्धरण देना होगा\ उद्धरण या उद्धरण करना होगा क्योंकि शेल किस फाइल को चलाने से पहले फाइल का विस्तार करेगा। जैसे अन्य ऑपरेटरों के लिए एक ही बात >>

इसे अपने अंदर रखें ~/.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, केवल यह जांचने के लिए कि हमारा नया कमांड_नोट_फाउंड हैंडलर अभी भी अज्ञात कमांड देखने की कोशिश करेगा)।

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

एक अन्य समाधान जो मैंने यहां नहीं देखा है वह है कलकुलेट (qalc)

sudo apt-get install qalc

सीएलआई संस्करण के लिए,

sudo apt-get install qalculate-gtk

जीयूआई के लिए।

इसमें सुविधाओं का एक समूह है:

  • इकाइयों के लिए समर्थन : उदाहरण के लिए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

  • प्रतीकात्मक गणना , उदाहरण के लिए;(x + y)^2 = x^2 + 2xy + y^2
  • एकीकरण, जैसे integrate 3*x^2 = x^3,diff sin(x), pi
  • अंतर्निहित मदद, जैसे help convert,help integrate
  • आदेशों का टैब पूरा होना
  • सब कुछ अनुवादित है, उदाहरण के लिए मेरा सिस्टम डच में है, इसलिए मैं दोनों लिख सकता हूं factorial(5)और faculteit(5)
  • और अधिक...

आप कहते हैं कि आप इसे उपसर्गों के बिना उपयोग करना चाहते हैं, ठीक है ... आप इसे उपसर्ग के साथ उपयोग कर सकते हैं:

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

साथ ही इसे एक उत्तर के रूप में चला रहे हैं।


7

dc! यह कोरुटिल्स का हिस्सा है, इसलिए यह ओएस एक्स, उबंटू में स्थापित किया गया है, और बहुत कुछ और भी है। यह एक आरपीएन कैलकुलेटर है, इसलिए यदि आप उन्हें पसंद नहीं करते हैं, तो यह आपके लिए नहीं है।

बहुत मूल आदेश इस प्रकार हैं (मैनपेज में सभी वाक्यविन्यास हैं जिन्हें मैंने शामिल नहीं किया है। घातांक, कोई भी?)

आपको केवल संख्याओं के बीच रिक्त स्थान की आवश्यकता है। अन्य सभी मामलों में उनकी अनदेखी की जाती है।

संख्या टाइप करना इसे स्टैक के शीर्ष पर धकेलता है।

+ 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एक टर्मिनल में टाइप करना लगभग कभी काम नहीं करेगा। तो आपका जवाब ठीक है
kiri

@YetAnotherUser मुझे लगता है कि एकमात्र तरीका हैकिंग है कमांड-नहीं-पाया (अगर यह स्थापित है) या bashrc में कुछ गंदा कर रहा है ...
Braiam

5

मैं इस तरह की चीज़ के लिए ऑक्टेव का उपयोग करता हूं: http://www.gnu.org/software/octave/

यह बहुत ज्यादा एक मैटलैब क्लोन है (माफी अगर यह एक सरलीकरण है) जो टर्मिनल में ऑक्टेव टाइप करके इस्तेमाल किया जा सकता है। Sudo apt-get install स्थापित करें ऑक्टेव

यह काफी नहीं है कि आप क्या चाहते हैं, लेकिन मुझे लगा कि मैं इसे अजगर के विकल्प के रूप में जोड़ूंगा।

उदाहरण का उपयोग:

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

लक्ष्य को पूरा करने के लिए एक और तरीका सुझाना एक उत्तर में ठीक है, लेकिन आपको इस बारे में अधिक जानकारी प्रदान करनी चाहिए कि ओपी ओक्टेव का उपयोग किस प्रकार बताई गई जरूरतों को पूरा करने के लिए करेगा और यह एक अच्छा विकल्प क्यों है।
14

2
+1, ऑक्टेव, मैटलैब, स्किलैब, अजगर सभी समान हैं लेकिन ऑक्टेव को मुझे स्थापित करने की आवश्यकता है लेकिन अजगर प्रीइंस्टॉल्ड है। इसलिए मैं डिफ़ॉल्ट रूप से अजगर का सिर। धन्यवाद।
19

उन सभी से, जो मैंने कोशिश की (और मैंने कई कोशिश की!) सिंटेक्स त्रुटि पर गैर 0 को वापस करने के लिए केवल ओक्टेव है! धन्यवाद!
कुंभ राशि पावर

5

मुझे बहुत पसंद है। यह एक कमांड लाइन वैज्ञानिक कैलकुलेटर है। उबंटू सॉफ्टवेयर सेंटर में ढूंढना आसान है, या सिर्फ 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 ऑक्टेव का उपयोग कर सकते हैं। यह सभी प्रकार की चीजें कर सकता है, रेखांकन, एक साथ समीकरण हल कर सकता है। इसके अलावा यह मतलाब के लिए एक मुफ्त विकल्प है


... संयोजन के साथ @ minerz029 बहुत साफ-सुथरा है: इसे अपने ~ / .bash_aliases में रखें:=() { wcalc "$@" }
फ्रैंक

4

सरल तरीका है अजगर को बुलाना।

उदाहरण:

>  python -c 'print 10000-9000'

क्या आप वैज्ञानिक गणनाओं के साथ कुछ का उल्लेख कर सकते हैं।
rʒɑdʒɑ

1
क्या आप ऐसा कुछ चाहते हैं? python -c 'import math;print math.log(2)'
user1251007

3

मुझे जो मिला है, मैं expr, bc या इन-बिल्ट शेल विकल्पों पर भरोसा नहीं कर सकता। इसलिए मैंने पर्ल का उपयोग किया, जो सामान्य रूप से * लिनक्स डिस्ट्रो में स्थापित किया जाएगा

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

उपरोक्त गणना $ VAL1 से $ VAL1 घटाएगी और बिना दशमलव स्थानों के साथ प्रिंट करेगी (0f)

पर्ल का उपयोग करने के साथ लाभ ( यहां सूचीबद्ध पेशेवरों और विपक्षों का विवरण )

  • बेहतर त्रुटि पर कब्जा (0 से विभाजित होने से गणना नहीं रुकेगी)
  • एक विन्यास फाइल में सूत्र प्रदान कर सकते हैं। जटिल रेगेक्स का उपयोग करके बचने की कोई आवश्यकता नहीं है

लेकिन हर बार उस कमांड का मतलब किसी भी तरह से थोड़ी समस्या है। क्या टर्मिनल में उपयोग किए जाने वाले कोई पर्ल आधारित कैलकुलेटर हैं?
19

3

आप अपने .bashrc फ़ाइल में निम्न फ़ंक्शन जोड़ सकते हैं:

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

ध्यान दें कि -lझंडा बहुत महत्वपूर्ण है। इसके बिना, उपयोग का उपयोग bcकरता है 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 देता है!
कुंभ राशि

2

"bc" कमांड का उपयोग करें और फिर यू गणना कर सकते हैं

उदाहरण

[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 पहले से ही समझाया और शामिल किया गया है।
Braiam

2

आप बाँध और बैश उपयोग कर सकते हैं C-aऔर C-eउत्पादन को नियंत्रित करने के। उदाहरण के लिए, इसे अपने शेल में निष्पादित करें:

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

अब किसी भी अंकगणितीय ऑपरेशन को टाइप करें जैसे 10 + 15 और प्रेस Ctrl+ J:

$ echo $(( 10 + 15 )) 
25

आपको यह मिल जाएगा। अब, यह कैसे किया जाता है?

  • bind यह कमांड शॉर्टकट कीज़ की तरह आपके बैश के बंधन को बदल देता है।
  • \C-j यह Ctrl + J के बराबर बैश है, यही वह महत्वपूर्ण संयोजन है जिसे हम अपने कमांड में जोड़ना चाहते हैं।
  • \C-a यह हमें लाइन के प्रारंभ में ले जाता है।
  • echo $((यह echo $((शुरुआत में लिखता है ।
  • \C-e हमें लाइन के अंत तक ले जाता है
  • )) हमारे पिछले कोष्ठक को बंद कर देता है
  • \C-m यह वापसी कुंजी के बराबर है।

आप इसे अपनी ~/.inputrcफ़ाइल में लिख सकते हैं :

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

बेशक, अन्य उत्तर भी मान्य हैं! बस थोड़ा सा घुमाया:

  • BC: "\C-j": "\C-aecho " \C-e " | bc \C-m"
  • apcalc: "\C-j": "\C-acacl \C-m"
  • अजगर: "\C-j": "\C-apython3 -c "print( \C-e )" \C-m"
  • अन्य कोई?

आप जो भी चाहें Ctrl + J बदल सकते हैं, लेकिन याद रखें, इसे उस चीज़ के लिए न बदलने की कोशिश करें जिसमें पहले से ही एक बंधन है;)।

संसाधन:


Ctrl + J में पहले से एक बाइंडिंग है, यह लाइन को सबमिट करता है (जैसे Enter) यह वास्तव में एक बहुत ही स्मार्ट जवाब है, हालांकि;)
kiri

2

अतीत में, मैंने उपयोग किया है wcalcऔर एक छोटा सा कार्यक्रम कहा जाता है eजो कि Google के लिए बहुत असंभव है। अब मैं ऐसा करने के लिए एक पायथन स्क्रिप्ट का उपयोग करता हूं, जो 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

एक उदाहरण यह और अधिक स्पष्ट कर देगा। धन्यवाद।
19

0

वास्तव में आप जो चाहते हैं उसे पूरा करने के लिए एक-एक कदम है। आपको केवल shellअपने खाते के लिए सेट करना है /bin/bc


3
क्या आप कृपया विस्तार से बता सकते हैं? प्रेस ओपी को पता नहीं है कि शेल को कैसे बदलना है।
ब्रिअम

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 का उपयोग कर रहे हैं (जो बिल्ट नहीं है) परिणाम की गणना करने के लिए, प्रिंटफ यहां बेमानी है
जेवियर लोपेज़

0

आप गणना के लिए अजगर इंटरप्रेटर का उपयोग कर सकते हैं। यहां बताया गया है कि ऐसा कैसे करना है

पाइथन 2 और पाइथन 3 को डिफ़ॉल्ट रूप से उबंटू में स्थापित किया गया है।

$ 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 3+45
   48

"(" या ")" के साथ सभी फ़ंक्शन को उद्धरणों में संलग्न किया जाना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.