উবুন্টুর জন্য কোন কমান্ড লাইন ক্যালকুলেটর?


119

আমি এমন একটি ক্যালকুলেটর খুঁজছি যা টার্মিনালে নিজেই অন্য কোনও অতিরিক্ত উপসর্গ এবং প্রত্যয় ছাড়াই গণনা করতে পারে।

উদাহরণস্বরূপ: আমি যদি টার্মিনালে 10000-9000 এর মতো কিছু টাইপ করি তবে উত্তরটি 1000 হিসাবে প্রকাশিত হওয়া উচিত।

আবার আমি বলছি, আমার কেবলমাত্র কোনও ক্যারেক্টার যুক্ত না করে টার্মিনালে একটি দ্রুত ক্যালকুলেটর দরকার। আমি জানি যদি আমি পাইথনে স্যুইচ করি তবে এটি তা করতে পারে তবে আমি এটি এমনভাবে চাই না।



2
এটা তোলে পারে প্রাক হুক এক ধরনের সঙ্গে যে ভালো কিছু হ্যাক করা সম্ভব হতে; তবে এটি কেবল একটি সত্যই কুরুচিপূর্ণ এবং হ্যাকিশ উপায়ে করা যেতে পারে । না, আমার মনে হয় এটি একটি ভাল ধারণা নয়। সামগ্রিকভাবে ব্যাশকে বোঝানো হয়েছে একটি সরল আইও স্ক্রিপ্টিং ভাষা হিসাবে, এটির বাইরে যা কিছু করা যায় তা কম-বেশি অ্যাড-হক এবং সত্যই কার্যকর হয় না। অন্যদিকে পাইথন (বা এমনকি উদাহরণস্বরূপ হাস্কেল) দুর্দান্ত একটি বাক্য গঠন সহ একটি আধুনিক, সর্ব-উদ্দেশ্যমূলক প্রোগ্রামিং ভাষা। সুতরাং এটি ব্যবহার না করা কেবল বোকামি হবে।
বাম দিকের বাইরে

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ফাংশন / পরিবর্তনশীল নামগুলিতে হবে will কেবলমাত্র প্রতিস্থাপনগুলি সরিয়ে ফেলা ভাল।

ব্যবহার 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
ধন্যবাদ, আপনি কি বৈজ্ঞানিক গণনা সহ আরও সমর্থন যোগ করতে পারেন?
রোড

2
@ রাজেগেনুপুলা আমার উপরের সম্পাদনাগুলি দেখুন
কিরি

এই দেরিতে জবাবের জন্য দুঃখিত তবে আপনি যে আদেশটি দিয়েছেন তার পক্ষে gcalccmdকার্যকরভাবে কাজ করে না। এটি Error 3সম্ভবত সেই বিপথগামী জায়গার কারণে দেখায় shows তবে এটি সামান্য পরিবর্তিত হয়েছে আমার পক্ষে পুরোপুরি কাজ করেছে:echo -e "$calc\nquit"| gcalccmd | sed "s:^> ::g"
udiboy1209

আমি আর কে ব্যবহার করে একটি বৈজ্ঞানিক ক্যালক তৈরি করেছি! function = { R -q --vanilla -e "$@" | grep -E '[^>](.*)' -o -x --color=never }
মরতেজা মিলানি

হাই, এবং ধন্যবাদ যে বেশ শান্ত. 'এক্স' এর জন্য আপনার বিকল্প বিটিডাব্লু হেক্স ইনপুট জন্য এটি ব্যর্থ করে তোলে, যা অন্যথায় ভাল কাজ করে। কোনটির বিষয়ে কথা বলতে গেলে, আমি 'হেক্স'-তেও উত্তর পেতে পারি? যেমন। = 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করে তার সাথে পুরোপুরি ফিট হয়।
একটি সিভিএন

4
অজগর একবারের চেয়ে প্রতিধ্বনির চেয়ে আরও ভাল। আমার মতামত.
rɑːdʒɑ

6
আপনি অন্য কোনও কারণে প্রতিধ্বনি প্রয়োজন না হলে আপনি বিসি ইন্টারেক্টিভভাবেও ব্যবহার করতে পারেন: খালি বিসি চালান এবং আপনার এক্সপ্রেশন টাইপ করুন। প্রস্থান করার জন্য নিজস্ব লাইনে Ctrl-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
উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ, আমি দেখছি যে উত্তরটির নিজস্ব তাত্পর্য রয়েছে। আমি এই সমস্ত ত্রিকোণমিতিক ফাংশন গণনা সম্পর্কে আরও কিছুটা পছন্দ করি। এটি আরও কি করতে পারে সে সম্পর্কে কোনও ম্যানুয়াল বা কোনও পৃষ্ঠাগুলি আপনাকে প্রচুর জবাব দিতে পারে। :)
রোড

@rajagenupula man calcএবং calc helpসবকিছু বলেছে।
রাদু রেদেনু

2
আমার নিবিড়তা হ'ল, যদি কেউ এটি দেখে তবে এটি পরিষ্কার এবং দ্রুত হওয়া উচিত। ধন্যবাদ.
রোড

1
আসলে আপনি calc help builtinসমর্থিত ফাংশনগুলির একটি তালিকা দেখতে ব্যবহার করেন যেমনsin()
পেঙ্গে গেঞ্জ

আরও দশমিক দেয়, তাই এটি বিল্ট-ইন ব্যাশ পাটিগণিতের চেয়ে আমার উদ্দেশ্যগুলির পক্ষে ভাল suited ধন্যবাদ।
Mrmfldmn 21

30

দুর্ভাগ্যক্রমে, এটি করার কোনও "সহজ" উপায় নেই। কারণ অসদৃশ কমান্ড লাইন ইন্টারেক্টিভ পাইথন ইন্টারফেস, শ্রেষ্ঠ আপনার যা প্রয়োজন আরো উপযুক্ত apcalc\, pythonহয় অন্তর্ভুক্ত উবুন্টু হবে। bcএখনও নিশ্চিত না হওয়া সম্পর্কে আমি নিশ্চিত নই , তবে পাইথন হ'ল এই জিনিসগুলির জন্য প্রিয় হাত favorite

আপনি কেবল pythonকমান্ড লাইনে ইন্টারেক্টিভ ইন্টারফেস চালাতে পারেন , এবং তারপরে গণিতটি করুন। আপনি এটি আপনার ক্যালকুলেটর হিসাবে ব্যবহার করতে পারেন।

এটি করতে, আপনি টার্মিনালটি খুলুন, টাইপ করুন python, তারপরে Enterবোতামটি টিপুন।

তারপরে, পাইথন প্রম্পটে যা প্রদর্শিত হবে, আপনি নিজের গণিতটি টাইপ করতে পারেন For উদাহরণস্বরূপ 10000 - 9000,। পরবর্তী লাইন আউটপুট ফলাফল হয়।


যদি আপনি বোঝাতে চান তবে এমন কিছু যেখানে আপনি কেবল টার্মিনালটি লোড করেন এবং এটি করতে পারেন ...

00 10000 - 9000
1000
$

... তবে আর কিছুই না করে কেবল টার্মিনালে এটি করার কোনও উপায় নেই কারণ বাশ এর মতো সংখ্যা যুক্তি পরিচালনা করে না।


1
আমি উল্লেখ করেছিলাম যে আমি পাইথনে স্যুইচ করতে চাই না
1313

1
@rajagenupula আপডেট হয়েছে, এছাড়াও আমি চ্যাটে উল্লিখিত জিনিসগুলি অন্তর্ভুক্ত করেছি।
থমাস ওয়ার্ড

বিসি আর অন্তর্ভুক্ত করা হয় না?
র্যান্ডম 832

1
একপাশে হিসাবে, ipythonগণনা এবং এর মতো করার ক্ষেত্রে স্ট্যান্ডার্ড পাইথন শেলটির চেয়ে খানিকটা বেশি কার্যকর।
নাফটুলি কে

বিসি ডিফল্টরূপে অন্তর্ভুক্ত করা হয়েছে (কমপক্ষে 16.04 এ)
টিজে এলিস

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বাশের তুলনায় পাইথন তুলনামূলকভাবে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে এগিয়ে যাওয়ার জন্য আপনার আরও উন্নত ফাংশনগুলির (যেমন থেকে ) প্রয়োজন হলে এই উত্তরটি কেবল সত্যই উপকারী ।


আমি নিশ্চিত নই যে এটি আপনার "অজগরটির স্যুইচটি ভেঙে দেয় এটি এটি করতে পারে এবং আমি এটি এমনভাবে চাই না।" দ্রষ্টব্য, তবে আপনাকে ইন্টারেক্টিভ প্রম্পটে প্রবেশ করার দরকার নেই এবং বাশের ফলাফলটি অ্যাক্সেসযোগ্য তাই এই উত্তরটি বৈধ বলে মনে হচ্ছে (কমপক্ষে আমার কাছে)।


প্রত্যেক সময় তাদের বোঝাতে খুব বেশি সহজ এবং নমনীয় নয়। ধন্যবাদ. আরও সহজ এবং পরিষ্কার দেখতে আপনি যে কোনও উন্নতি করতে পারেন? আমি এটা পছন্দ করি।
রোড

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। আমি মনে করি এটি আলাদা স্ক্রিপ্ট হিসাবে স্থাপন করা আরও নমনীয় এবং পোর্টেবল is এটির জন্য এখানে একটি সাধারণ বক্তব্য
পেঙ্গে গেঞ্জ

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বলেছেন: একটি কনসোল ক্যালকুলেটর । কেবল, ওপি যা চায় তা ঠিক তাই .. :)
সৌরভ কুমার

ঠাণ্ডা, বিসি, পাইথন, অক্টভ ক্যালকুলেটরগুলির মতো। ধন্যবাদ.
রোড

যেহেতু 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 গণনা প্রয়োজন হলে এটি দুর্দান্ত super আমি পাইথন বা অন্য কোনও জায়গায় যেতে পারি তবে আমি এটি পছন্দ করি। থেমে থাকার জন্য ধন্যবাদ।
রোড

2
আমি আপনাকে echo "$@" | bcপরিবর্তে ব্যবহারের পরামর্শ দেব যাতে আপনি আরও প্রাকৃতিকভাবে গণনায় ফাঁক রাখতে পারেন
কিরি

এই কমান্ডের নামের =পরিবর্তে ব্যবহার সম্পর্কে কীভাবে c? বাশ আসলে আপনাকে এটি কোনও ফাংশনের নাম হিসাবে ব্যবহার করতে দেয়।
কাজ

1
আপনি প্রোগ্রামগুলিকে ~/bin(আপনার হোম ডিরেক্টরি ডিরেক্টরিতে bin) রাখতে পারেন এবং তা /home/yourname/binআপনার মধ্যে রয়েছে তা নিশ্চিত করতে পারেন PATH
কাজ

@ minerz029 চমৎকার চিন্তাভাবনা। আমি আমার উত্তরটি সেই অনুযায়ী সম্পাদনা করেছি।
ব্যবহারকারী530873

8

/etc/bash.bashrc(উবুন্টু 10.04-এ) এর যথাযথ অংশটির একটি সংশোধনী এখানে রয়েছে command_not_foundযা শেলটির এক্সপ্রেশন মূল্যায়নকারক চালনার জন্য হ্যান্ডলারটি সংশোধন করবে যদি অজানা কমান্ডের প্রথম অক্ষর বা একটি হয় -বা +

আপনি কোনও শেল পাটিগণিত এইভাবে করতে সক্ষম হবেন; দেখতে http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic গাণিতিক অপারেটর একটি তালিকার জন্য।

নোট করুন যে আপনি যে এক্সপ্রেশনটি মূল্যায়ন করতে চান তা যদি একটিতে থাকে *তবে আপনার *সাথে \কোট বা উদ্ধৃতি দিতে হবে যেহেতু শেলটি ফাইলের নামটি প্রসারণ করবে কোন আদেশটি চালানো উচিত। অন্যান্য অপারেটরদের জন্য একই জিনিস >>

এটি আপনার মধ্যে রাখুন ~/.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

কোনও উপায় আছে যে আমরা গণনার জন্য আরও সমর্থন যোগ করতে পারি?
রোড

1
আপনি যে রেখাটি বলছেন সেটিকে নিতে পারেন echo $(( $@ ))এবং এটিকে পরিবর্তিত করতে পারেন, পরিবর্তে, আরও উত্তরোত্তর একটি ক্যালকুলেটর প্রোগ্রাম চালান যা অন্যান্য উত্তরদাতারা উল্লেখ করেছেন যে কমান্ড লাইনে তাদের যুক্তিগুলি গ্রহণ করে।
মার্ক প্লটনিক

8

আরেকটি সমাধান যা আমি এখানে দেখিনি তা হ'ল ক্যালকুলেট (ক্যালক)

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

পাশাপাশি এটি একটি repl হিসাবে চালানো।


7

dc! এটি কোর্টিলের অংশ, তাই এটি ওএস এক্স, উবুন্টু এবং আরও অনেক কিছুতে ইনস্টল করা হয়েছে। এটি একটি আরপিএন ক্যালকুলেটর, সুতরাং যদি আপনি সেগুলি পছন্দ না করেন তবে এটি আপনার পক্ষে নয়।

খুব বেসিক কমান্ডগুলি নিম্নরূপ (ম্যানপেজে সমস্ত সিনট্যাক্স রয়েছে যা আমি অন্তর্ভুক্ত করি নি Exp

আপনার কেবল সংখ্যাগুলির মধ্যে ফাঁকা স্থান প্রয়োজন। অন্যান্য সমস্ত ক্ষেত্রে এগুলি উপেক্ষা করা হয়।

একটি সংখ্যা টাইপ করা এটি স্ট্যাকের শীর্ষে ঠেলে দেয়।

+ 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টার্মিনালে টাইপ করা প্রায়শই কাজ করে না। আপনার উত্তরটি ঠিক আছে
কিরি

@ ইয়াত অন্য ইউজার আমার মনে হয় বাশার্কে কমান্ড না পাওয়া-পাওয়া (এটি ইনস্টল করা থাকলে) বা নোংরা কিছু করার একমাত্র উপায় হ'ল ...
ব্রায়াম

5

আমি এই ধরণের জিনিসটির জন্য অক্টাভা ব্যবহার করি: http://www.gnu.org/software/octave/

এটি বেশ অনেকটা মাতলাব ক্লোন (ক্ষমা চেয়ে বেশি যদি এটি ওভার সরলীকরণ হয়) যা টার্মিনালে অষ্টভ টাইপ করে ব্যবহার করা যেতে পারে। Sudo apt-get ইনস্টল অক্টেভ ইনস্টল করুন

এটি আপনি যা চান তা ঠিক নয় তবে আমি ভেবেছিলাম আমি একে পাইথনের বিকল্প হিসাবে যুক্ত করব।

ব্যবহারের উদাহরণ:

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

উত্তরের জন্য লক্ষ্যটি অর্জনের অন্য কোনও উপায়ের পরামর্শ দেওয়া ভাল, তবে ওপি কীভাবে বর্ণিত প্রয়োজনগুলি পূরণ করতে অক্টাভে ব্যবহার করবে এবং কেন এটি একটি ভাল বিকল্প রয়েছে সে সম্পর্কে আপনার আরও তথ্য সরবরাহ করা উচিত।
18:51

2
+1, অকটাভ, মতলব, সায়্লাব, পাইথন সব একই রকম তবে অষ্টাভ ইনস্টল করার দরকার আছে তবে পাইথন পূর্বেই ইনস্টল করা আছে। তাই আমি ডিফল্ট হিসাবে অজগরের দিকে যাত্রা করি। ধন্যবাদ.
রোড

আমি যা চেষ্টা করেছি তার সব থেকে (এবং আমি অনেক চেষ্টা করেছি!) অক্টেজটি কেবল সিনট্যাক্স ত্রুটিতে 0 নন ফিরে আসবে! ধন্যবাদ!
কুম্ভ শক্তি পাওয়ার

5

আমি wcalc অনেক পছন্দ করি। এটি একটি কমান্ড লাইন বৈজ্ঞানিক ক্যালকুলেটর। উবুন্টু সফটওয়্যার সেন্টারে খুঁজে পাওয়া সহজ, বা কেবল এ্যাপ-গেট ব্যবহার করুন।

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

এবং যদি আমার মতো কেউ ইঞ্জিনিয়ারিংয়ে থাকে তবে আপনি জিএনইউ অক্টাভা ব্যবহার করতে পারেন। এটি গ্রাফিং, একসাথে সমীকরণ সমাধান করার জন্য সমস্ত ধরণের জিনিস করতে পারে। প্লাস এটি মতলবের একটি নিখরচায় বিকল্প


... @ মাইনার0029 এর সাথে এটি একত্রিত করা বেশ ঝরঝরে: এটি আপনার ~ / .Bash_aliases এ রাখুন:=() { wcalc "$@" }
ফ্রাঙ্ক নোক

4

সহজ উপায় অজগর কল।

উদাহরণ:

>  python -c 'print 10000-9000'

আপনি বৈজ্ঞানিক গণনা সহ কিছু উল্লেখ করতে পারেন?
r 20dʒɑ

1
আপনি কি এই জাতীয় কিছু চান? python -c 'import math;print math.log(2)'
ব্যবহারকারী 1251007

3

আমি যা পেয়েছি তা হ'ল আমি এক্সপ্রেস, বিসি বা অন্তর্নির্মিত শেল বিকল্পগুলিতে বিশ্বাস করতে পারি না। তাই আমি পার্ল ব্যবহার করেছি যা সাধারণত * লিনাক্স ডিস্ট্রোতে ইনস্টল করা হবে

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

উপরের গণনাটি $ VAL2 থেকে $ VAL1 বিয়োগ করবে এবং দশমিক স্থান ছাড়াই মুদ্রণ করবে (0f)

পার্ল ব্যবহার করে উপকারটি হ'ল ( এখানে তালিকাভুক্ত প্রস এবং কনসের বিবরণ )

  • আরও ভাল ত্রুটি ক্যাপচার (০ দ্বারা ভাগ করা গণনা বন্ধ করবে না)
  • একটি কনফিগার ফাইলে সূত্র সরবরাহ করতে পারে। জটিল রেজেেক্স ব্যবহার করে পালানোর দরকার নেই

তবে প্রতিবারই সেই আদেশটির অর্থ কোনওভাবেই কিছুটা সমস্যা। টার্মিনালে কোনও পার্ল ভিত্তিক ক্যালকুলেটর ব্যবহার করতে হবে?
রোড

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

"বিসি" কমান্ড ব্যবহার করুন এবং তারপরে আপনি গণনা করতে পারেন

উদাহরণ

[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

বিসি ইতিমধ্যে ব্যাখ্যা এবং অন্তর্ভুক্ত করা হয়েছে।
ব্রায়াম

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 এর ইতিমধ্যে একটি বাঁধাই রয়েছে, এটি লাইনটি জমা দেয় (এন্টার এর মতো) এটি আসলে একটি দুর্দান্ত স্মার্ট উত্তর, যদিও;)
কিরি

2

অতীতে, আমি ব্যবহার করেছি wcalcএবং একটি ছোট প্রোগ্রাম বলেছি eযা গুগল করা বেশ অসম্ভব। এখন আমি এটি করার জন্য একটি পাইথন স্ক্রিপ্ট ব্যবহার করি যা 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

একটি উদাহরণ এটি আরও পরিষ্কার দেখায় you ধন্যবাদ আপনাকে।
রোড

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
ফলাফলটি গণনা করতে আপনি এভাবে এক্সপ্রেস (যা বিল্টিন নয়) ব্যবহার করছেন, প্রিন্টফ এখানে অপ্রয়োজনীয়
জাভিয়ের লোপেজ

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

একটি "(" বা ")" সহ সমস্ত ফাংশন অবশ্যই উদ্ধৃতিতে আবদ্ধ থাকতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.