怎麼樣稱得上是Linux下優秀的命令列計算機
每個現代的Linux案頭發行版都預裝著一個帶有圖形介面的計算機程式。不過如果你的工作區中全是命令列視窗,那麼你一定會在其中的一個命令列視窗中處理一些數字相關的問題。或許你在尋找一款基於命令列的計算機程式。如果是這樣的話,GNU bc(“basic calculator”的縮寫)會是你不二的選擇。當然Linux下有很多基於命令列的計算機應用,我認為GNU bc是功能最強大和最有用的。
在GNU時代之前,bc實際上是一個著名的精密計算語言。它的誕生要追溯到70年代的Unix時期了。最初bc作為一個文法和C語言相似的程式設計語言而著名。隨著時間的改變,最開始的bc演化成POSIX bc,最後變成了今天的GNU bc。
GNU bc的特性
現在的GNU bc是早期bc經過若干次改進和功能增強結果。目前它被所有的主流GNU/Linux發行版所收納。GNU bc支援高精度數字和多種數實值型別(例如二進位、十進位、十六進位)的輸入輸出。
如果你對C語言很熟悉的話,你會發現bc使用了和C語言一樣或相似的算術操作符。所支援的操作符包括算術運算子(+, -, *, /, %, ++, --)、比較子(<, >, ==, !=, <=, >=)、邏輯運算子(!, &&, ||)、位元運算符(&, |, , ~, <<, >>)和複合賦值運算子(+=, -=, *=, /=, %=, &=, |=, =, &&=, ||=, <<=, >>=)。bc內建了很多有用的函數,像是平方根、正弦、餘弦、反正弦、自然對數、指數等。
如何使用GNU bc
作為一個基於命令列的計算機,GNU bc的使用沒有限制。在本文中,我會向大家介紹bc命令的幾個常用的特性。如果你想要更加詳細的指導,你可以查閱官方指南。
如果你沒有一個預先寫好的bc指令碼,那麼你可以在互動模式下運行bc。在這種模式下,你輸入的以斷行符號結束的任何聲明或者運算式會被立刻計算出結果。你需要輸入以下命令來進入bc的互動介面。如果想退出bc,你可以輸入'quit'並且按斷行符號。
- $ bc
本文下面展示的例子請在bc互動介面中輸入。
輸入運算式
如果想要計算一個算術運算式,我們可以在閃爍的游標處輸入該運算式,然後按斷行符號確認。你也可以將該結果儲存到一個變數中,然後在其他運算式中使用該變數。
在一個bc的互動介面中,儲存著沒有個數限制的命令記錄。使用上方向鍵來查看之前輸入的命令。如果你想限制記錄儲存的命令數量,你可以將一個名為history的特殊變數設定成你希望的數值。該變數預設為-1,也就是“記錄數量沒有限制”。
輸入輸出進位切換
經常會發生的是,你輸入一個運算式並且想使用二進位或者十六進位來顯示結果。bc允許你在輸入輸出數位進位間轉換。輸入和輸出的數系基分別儲存在ibase和obase變數中,預設值為10,有效數值是2到16(或者環境變數BCBASEMAX的值)。你只需要更改ibase和obase的值就可以在不同進位之間轉換了。下面是一個求兩個十六進位/位元和的例子:
需要注意的是,我有意地將obase=16放到了ibase=16前面,反過來則是不可以的。這個是因為如果我先輸入ibase=16,那麼隨後輸入的obase=16中的16會被認為是16進位的數字,也就是十進位的22。當然這個不是我們所期望的。
調整精度
在bc中,數位精度儲存在一個名為scale的特殊變數中。該變數表示小數點後數位個數。scale預設為0,意味著所有的數字和結果以整數形式儲存。你可以通過改變scale這個特殊變數的值,來調整數值的精度。
- scale=4
使用內建函數
除了簡單的算術操作符,GNU bc還通過外部的數學函數庫來提供許多進階的數學函數。你可以在命令列介面使用“-l”選項來開啟bc。
這裡描述了一些內建的函數。
N的二次方根:
- sqrt(N)
X的正弦(X是弧度):
- s(X)
X的餘弦(X是弧度):
- c(X)
X的反正弦(傳回值是弧度):
- a(X)
X的自然對數:
- l(X)
X的指數對數:
- e(X)
當做語言來用
作為一個計算語言,GNU bc支援簡單的聲明(變數賦值、中斷、返回等)、複合陳述式(if、while、for loop等)和自訂函數。在這裡我不會涉及到這些特性的細節,不過你可以通過官方指南來學習如何使用這些特性。下面是一個簡單的函數樣本:
- define dummy(x){
- return(x * x);
- }
- dummy(9)
- 81
- dummy(4)
- 16
在非互動介面下使用GNU bc
到目前為止,我們一直在互動介面下使用bc。不過更加流行的使用bc的方法是在沒有互動介面的指令碼中運行bc。這種情況下,你可以使用echo命令並且藉助管道來向bc發送輸入內容。例如:
- $ echo "40*5"| bc
- $ echo "scale=4; 10/3"| bc
- $ echo "obase=16; ibase=2; 11101101101100010"| bc
總結一下,GNU bc是一款強大並且通用的基於命令列的計算機應用,它絕對不會讓你失望。它預裝在所有的現代Linux發行版中,bc可以讓你不用離開命令列就可以進行高效的數學計算。所以,GNU bc一定會是你的最愛。
本文永久更新連結地址: