分類彙整: 樹莓派之疑難

一條漫漫長路︰中文化視窗

Linux 的中文化始於CLE計劃,最早的發起人是鄭原忠,“2002 年10月因發生 Red Hat Linux 8.0 移除中華民國國旗事件” 導致CLE 團隊與小紅帽 Red Hat 決裂,也許在商業的現實裡小紅帽變成大野狼是必然的,所幸 Linux 的中文化使命並未因此停步,在眾多的無名氏努力之下,到如今能夠發揚光大。那 Raspbian 要怎麽中文化呢?一般 Linux 的中文化包括兩個部份,『輸出部份』── 可以顯示中文,這個部份可以用 raspi-config 來作設定;『輸入部份』── 可以輸入中文,這個部份需要安裝『輸入法』,可以用叫作 apt-get  的Raspbian 套件安裝命令來做。或許也該說安裝一些『中文字型』也是中文化的一個重要組成部份。下面我們對需要用到的指令先作一個介紹。

不論是不是為著中文化一事,套件管理 ── 安裝 install更新 update升級 upgrade移除 remove… ── 都是常用的一套軟體命令,它屬於管理者權限,對使用者 pi 而言,須要冠上  sudo。套件存放在網際網路上一個叫做 repo ── repository ── 的『套件庫』的地方。由於它在『雲端』的來源處,所以你的樹莓派一定得要連上網才能使用套件庫。如果你有興趣,你可以用︰

more /etc/apt/sources.list

查看這個來源處。此處並不打算長篇大論套件管理的命令,即使『Debian APT HOWTO』這個文件已經有點過時,但仍然值得參考作個完整了解。為什麼要叫『套件』呢?曾經 Linux 上的軟體安裝是一個夢魘,設想︰甲軟體的 x 版本,需要乙軟體的 y 以上的版本,乙軟體的 u 版本,只能用丙軟體的 v 版本,……等等;很容易明白多麽的令人頭大。套件庫包含著這些『相依性』資訊,安裝軟體使用這些資訊能夠『自動化』的安裝相依軟體,以及一些建議的『相關』軟體。所以當你安裝某些套件時,有時後會看到一大堆同時將會被安裝的軟體。其次所謂『更新update 是針對套件庫講的,當你每次下達 sudo apt-get update 的時後,它會比較套件庫上的資料和 Raspbian 上儲存資料的異同 ──取得『同步』化,祇傳送不同的部份,以節省頻寬的使用量。因此建議你安裝套件前,最好先執行這道命令。而『升級』upgrade 是升級已安裝了的軟體的『版本』── 或新功能除錯版。一般若干時日才執行一次。

早期使用 PC 的人都知道『Ctrl + Alt + Del 』這個『組合鍵』── 又稱『三指禮敬』鍵 ──,在 PC DOS 年代由 IBM 的首席工程師 David Bradley 先生所創 ── 由軟體按鍵觸發的系統『重新開機reboot,他同時也是 IBM PC ROM-BIOS  開機程式的攥寫人。這個暱稱為『復活蛋』的組合鍵,根據 IBM 官方的技術文件是這樣說明的︰

僅供』程式設計師使用,不對大眾開放,『用於』免關機就能重新啟動 PC 一事 。

左手』先按下Ctrl不放,『 + 接著按下』 Alt不放,此時用『右手』同時『 + 接著按下』Del 一鍵。

這個『依序同時』按鍵的想法,開啟了後來一系列的軟體仿效應用,為日後的『快捷鍵』舖平了道路。本來此事早已落幕,然而去年九月 21 日微軟創始人比爾.蓋茲在哈佛大學時,卻說這個『復活蛋』是個『錯誤的設計』,起因於當年的 IBM 工程師不願意給 MicroSoft 他們一的『單獨』的鍵來作此類用途,又起了波瀾!不論人們怎麼想,一個概念 『其來有自』,知道淵源容易了解它說的是什麼?或許又能怎麼用。在談 raspi-config 使用前,先說說『選單系統』的『架構』想法吧。『選單』menu 的想法非常古早,事實上,當你在餐館裡看著『菜單』對著服務生『點菜』時,就已實踐了『人對人』的『點菜系統』了。如果把這裡的『人對人』換成『人對電腦』、『菜單』變成『選單』、『點菜』改成『點選』後,就是所說的選單系統。因著「點選裝置」的不同 ── 鍵盤、滑鼠、觸控面板、… ── ,『使用的友善性』user friendly 也不一樣,就目前的選單系統軟體設計上來講,大體早已『定型化』了── 人因工學使然 ──。也許好處是說了一個,就說了全部。

sudo raspi-config 是個終端機上的應用程式,使用的是用鍵盤操作的『文字選單系統』。一般選單的結構,就像檔案系統一樣,如果把選單比做『貼了選單標籤的箱子』,這個箱子裡可以裝著『選項』或是『子選單箱子』。所以要有著『進入』子選單︰Enter,『回到』母選單︰Esc的辦法。為著使用的友善性,就像手機上的『接聽鍵』和『掛斷鍵』一樣,文字界面上有〈 Select 〉進入、〈 Finish 〉結束、〈 Back 〉回去…等等選單脈絡『操作項』,可以按下Tab輪選。此時標示『當下選項』── 紅色『選單桿 menu bar ──,會變成藍色選單桿,告知正操作的是『這個選項』。由此推想移動選單桿應該是用按鍵了。當你操作這個選單系統時,你還得使用空白鍵,它是個『兩態跳態鍵︰對某個選項來說,如果它沒被選上,按下就是;如果已被選上,按下就是不選

經過了一番鋪陳,終於可以進入主題了 ── 中文化視窗
註︰下文裡,「」表「的」、「〔…〕」表「選單」、「『…』」表「選項」。

【啟用視窗界面】︰

〔Enable Boot to Desktop/Scratch〕‧『Desktop Log in as user ‘pi’ at the graphical desktop 』,選擇後,執行完會回到主選單

【中文化界面】︰

一、進入〔Internationalisation Options 〕‧〔I1 Change Locale〕選單,用空白鍵取消 en_GB.UTF-8 UTF-8 ,選擇  en_US.UTF-8 UTF-8  和 zh_TW.UTF-8 UTF-8。
再選擇〔Default locale for the system environment:〕‧『zh_TW.UTF-8』,執行完後會回到主選單

二、進入 〔Internationalisation Options 〕‧〔I2 Change Timezone 〕選單選擇〔Geographic area:〕‧『Asia 』,
和選擇 〔Time zone:〕‧『 Taipei』,執行完後會回到主選單

三、進入〔Internationalisation Options 〕‧〔I3 Change Keyboard Layout〕選單依序選擇
〔Keyboard model:〕‧『Generic 105-key (Intl) PC』,
〔Keyboard layout:〕‧『 Other 』,
〔Country of origin for the keyboard:〕‧『English (US)』,
〔 Keyboard layout:〕‧『 English (US)』,
〔Key to function as AltGr:〕‧『The default for the keyboard layout』,
〔Compose key: 〕‧『No compose key』,
〔 Use Control+Alt+Backspace to terminate the X server? 〕‧『 <No>』,
執行完後會回到主選單

當你最後離開程式前,不論是按下Esc 鍵或是選擇結束〈 Finish 〉操作項,你會看到〔Would you like to reboot now? 〕,這時選擇 『<No> 』,要不系統就會重新開機了。

【中文輸入法】︰

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy

sudo apt-get install ibus ibus-chewing

這時就大功告成了,用 sudo reboot 重新啟動後,你將會自動登入中文化視窗環境。當然登入後,你還得『設定選擇』中文輸入法,中英文切換開關 ── 一般用 Ctrl+ 空白鍵……等等,就請你自己試試看了。

學習的道路上 ── 即使是一條漫漫長路

如果

會做』所學的事,是老虎

理解』所學的事,是翅膀

那就

如虎添翼』!!

 

概念拼圖︰Linux 手冊!

The Linux Document Project 這個文件計畫始於 1992 年,二十二年過去了,到了今天也有了 WiKi ,雖然已經有了相當多的文件和資料,但是對大多數人來說,想要用的資料卻總是『找不到』。也許對許多軟體工程師來講,寫『使用手冊』是非常令人討厭的事,尤其針對快速發展,經常改版的軟體;當然也有很多開源軟體文件寫得很好,例如說功能強大的自由辦公室套件 Libre Office,它的文件就像真的書本一樣。那麼對一些已有『手冊』manual 的命令呢?很多使用過 man 來讀命令手冊的人 ── 比如打 man dmesg ︰dmesg 的 命令手冊 ──,都覺得十分難讀為什麼呢?試著再打一下『 man man 』,你就了解了。然而,為什麼不是呢?最早的『程式設計師』手冊,寫於 1971 年,已經四十多年前了,主撰者包括 了Dennis Ritchie 先生,今天知名的『 C 語言』的創始者。只是那個時代最好的的電腦,功能都比不上今天的一個小微處裡器, 更不會用『叫什麼 troff  』的文書處理程式下指令來寫文件??世界上,或許不只空間會有距離時間也會產生隔閡;也許今天更需要『閱讀過去的辦法了!以前愛因斯坦特別推重『想像力』,他說他想著『騎在光上』而發現了相對論。那麼如果能想像的『設身處地』,是否能了解不同的『時代』── 無論是『過去』或『未來』──打開時空之門

就讓我們試著解構一下 wiki 上說的『命令手冊』的主要結構,稍稍替換一下也可以用於『函數』function︰

名稱』NAME 第一個段落︰以命令名稱起頭,用一句話說明它做什麼

摘要』SYNOPSIS 第二個段落︰如何執行它,它接受哪些命令列的『選項』options。

說明』DESCRIPTION 第三個段落︰它的功能描述文本。

範例』EXAMPLES 第四個段落︰它的通常用法

另見』SEE ALSO 第五個段落︰與它相關的命令。

其他可以放進段落裡的有『選項 OPTIONS 』、『跳出狀態 EXIT STATUS 』、『環境  ENVIRONMENT』、『臭蟲  BUGS』、『檔案  FILES 』、『作者  AUTHOR 』、『報告臭蟲  REPORTING BUGS 』、『歷史 HISTORY』和『著作權  COPYRIGHT 』。真是洋洋灑灑蔚為大觀,怪哉!man dmesg 竟然沒有範例,也許你會發現許多這樣的範例。現在讓我們解讀一下『 cat 手冊』︰起頭的“CAT(1) ”的 1 表示『一般命令』 ,斜黑體字表示關注點

CAT(1) User Commands CAT(1)
NAME cat – concatenate files and print on the standard output
SYNOPSIS cat [OPTION]… [FILE]…
DESCRIPTION Concatenate FILE(s), or standard input, to standard output.
-A, –show-all equivalent to -vET
-b, –number-nonblank number nonempty output lines, overrides -n
-e equivalent to -vE
-E, –show-ends display $ at end of each line
-n, –number number all output lines
-s, –squeeze-blank suppress repeated empty output lines
-t equivalent to -vT
-T, –show-tabs display TAB characters as ^I
-u (ignored)
-v, –show-nonprinting use ^ and M- notation, except for LFD and TAB
–help display this help and exit
–version output version information and exit
With no FILE, or when FILE is , read standard input.
EXAMPLES
cat f – g
Output f’s contents, then standard input, then g’s contents.
cat Copy standard input to standard output.
AUTHOR
Written by Torbjorn Granlund and Richard M. Stallman.
REPORTING BUGS
Report cat bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report cat translation bugs to <http://translationproject.org/team/>拼圖
COPYRIGHT
Copyright © 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
tac(1)
The full documentation for cat is maintained as a Texinfo manual. If
the info and cat programs are properly installed at your site, the com‐
mand info coreutils ‘cat invocation’
should give you access to the complete manual.
GNU coreutils 8.12.197-032bb September 2011 CAT(1)

首先『通篇』瀏覽,注意著關注點,你會發現許多『術語』和『縮寫』。Linux 手冊之所以難讀,就在於它是用術語以及縮寫以邏輯脈絡編串起來的語詞網路。一旦不了解某個術語,或不知道那個縮寫代表什麼,『望文生義』大概是不管用的。其次,它是以『命令為中心』── 做什麼如何做?如果打開什麼選項,那它能做什麼?──,用『命令動詞』作用於『資料名詞』。也就是 IPO 模型中以『處理』為的操作觀點。『方便性』一詞通常需要放到『時代』的眽絡裡來理解── 那時,只有字元顯示器,卻是多人多工使用的小 CPU ,以及一個普通的字元鍵盤 ──『簡短化』命名的命令、把常用共時的多個選項給它『縮寫化』以及長的術語多用『縮首字』,正是為著方便使用者。再者『一碼歸一碼』── Case By Case ──,這個『情況』是這樣,那個『狀態』要那樣,要這樣『顯示』,必須這個『選項』,…什麼『選項』都沒有,代表『預設』的是什麼……等等使用上的邏輯脈絡,大概必須

』讀︰
files 加 「s 」,多個檔案『連接』concatenate,所以得到名號,也可用於 「一個」檔案,如果只打cat 代表「從鍵盤拷貝到顯示器」;

』讀︰
」在命令列代表讀取 stdin,也就是鍵盤。而縮首字 GNU GPL 是說的自由軟體大眾授權之事;

,否則容易一頭霧水難以掌握。而這個『難處』正是需要以

整理』、『作圖』、『畫表』…的功夫,來

克服它,然後你會發現

閱讀樂趣』──

原來那張『概念拼圖』就是 Linux ㄚ !!

瑪利歐的水管 Pipe

傳說在機械化的黃金時代,流傳著一則故事︰

那時每一根小『螺絲釘』和小『螺絲帽』都是獨特的,不要說從這個工廠到那個工廠,就算在同一個工廠內,它們也都各有各的不同。只有那些沒有螺絲帽可以匹配的螺絲釘或沒有螺絲釘可以匹配的螺絲帽,才會被歸類成不好的。就這樣過了很多年,直到有一天艾索 ISO 出現了,推動『標準化』運動,自此一切都改變了 …。傳聞,最後一根獨特的小螺絲釘說︰『艾索,你這個老狐狸!…』。終究這些風塵往事早已被世人遺忘

無獨有偶 ── 發生過的事,總會再次發生 ──,其後,Douglas McIlroy 先生在寫命令列的外殼程式的時候,提出了管線 pipline 的概念,並用『 | 』符號代表。比如說『甲命令 | 乙命令』,講的是把甲命令的輸出結果當成乙命令的輸入來使用。之後於 1973 年 Ken Thompson 把它擴大為 『管子pipe 的標準,寫進了 Unix 作業系統,影響至今,於是開起了一個標準串流的時代。那什麼是標準串流呢?它就是之前在『除蟲!除錯?終端機。』一文中 IPO 模型抽象化後的相容性輸出入結構,應用於命令列的各個相容的指令的輸出入檔案 ── 當然也可以是裝置檔 ── 可串接性 chainable 的標準化。它定義了『標準輸入』stdin、『標準輸出』stdout、『標準錯誤』stderr,打開了程式間溝通的橋樑。舉例來說,假如 more 代表一頁一頁的讀,cat /boot/config.txt | more 就是一頁一頁的讀取樹莓派的開機組構檔 config.txt。自從有了管線之後,也就有一些命令因它而啟發

grep 是在標準輸入裡,尋找特定文本模式 text pattern 的程式,比方說 grep fsck 就是尋找文本裡有沒有 fsck 字串 ── 檔案系統檢查的總稱命令。

而前面說的 more,它的反義詞是 less 命令。

sed 是標準串流編輯程式,主要用來『過濾』── 只讓符合特定文本模式條件的內容通過串流;以及用來『轉換』── 在串流裡把「是這樣的」改寫成「是那樣的」。

……

更進一步就有了『導向』的想法。由於既然已有標準串流,又不區分什麼是裝置、什麼叫檔案?又有了標準化的輸出入;那又為什麼輸入總要來自『鍵盤』stdin、輸出也只能到『顯示器』stdout 呢?難道不能使用『檔案』當作來源處目的地嗎?而這個可以的回答,就是導向符號> 』和『 < 』的開始。比方說『 echo 字串 』這個命令,把該個字串輸出到螢幕上,那麽 『 echo 字串 > test.txt 』就把那個字串從頭蓋寫 ── 刪掉所寫檔案的內容,小心! ── 到一個叫 test.txt 的檔案裡。以下,你一試就能了解了︰

echo “This is a test.”
echo “This is a test.” > test.txt
cat test.txt | grep test

日後有人也許將再次發現把一些小程式 ── 容易寫、不容易寫錯 ── 串接起來,常常可以完成許多令人驚訝的事,這就是

Unix 的哲學上第一條所說的︰小即是美

無論人們所面對的『問題』是什麼?,『分割征服』的老方法依然有用 ── 古時所謂的大事化小、小事化無 ──。這在今天的『軟體工程學』上來說,也是如此。正由於標準化帶來了平凡與普通 ──  一說一般性,另說無差別, 正所以能建立軟體世界的溝通平台。這有什麼好處呢?因為過去軟體設計曾經是一門藝術,或者說屬於天生有才之輩,以致於難以學習模仿;然而到今了天之所以有工程學之實,其實是來自眾多前人的努力以及豐富的想像力。

這跟瑪利歐的水管有什麼關係?優尼克司的管子帶給人們思考的樂趣,而瑪利歐的水管則帶來了驚奇 ── 好玩就好

都是檔案惹的禍?

在 Raspbian 的世界裡,一切都是『檔案』。這是真的嗎?從古早的 Unix 系統開始,就用著一種『統一』unified 的觀點來看待檔案。假如說 『程式』是執行檔很好了解,可是講到『硬體裝置』不過是特殊檔呢?這得從兩個方面來理解。首先抽象上來說,各種硬體設備可以分類成『輸入』裝置、『輸出』裝置和『輸出入』裝置。這些裝置,要嘛一個一個的作出入 ── 比如鍵盤一按輸入一個字元;滑鼠一動從一點移動到另一點 ── ;要不就一塊一塊的來讀寫 ── 就像硬碟一讀一個磁區,SD 卡一寫一個區塊。所以又被劃成了『字元』和『區塊』兩類。另一方面從操作共性上來講,檔案是可讀可寫的,可以一個一個字元的讀寫,也可以一區塊一區塊的讀寫,那為什麼不能表示不同的裝置呢?Why not!  就這樣裝置成了『特殊檔案』──裝置檔了,一般放在 Linux 檔案系統  /dev 目錄下。難道真的所有裝置都是這樣的嗎?事實上,上網用的乙太網路裝置,並不放在 /dev 目錄下,而被放在 /proc/net 目錄之下。原因正由於前面提到的『操作共性』這一個非常重要的『類化』原則 ── 如何『比類相宜』。就像 python 的鴨子上說的一樣︰

當看到一隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子, 那麼這隻鳥就可以被稱為鴨子。

linux_file_system

既然都是檔案,那深入了解檔案系統就十分必要的了。左圖說明兩種常用的檔案系統模型,請點擊閱讀。此處我們將著重於介紹命令的『運作』觀點,就讓我們談談『族譜』吧!

如果檔案系統比類為族譜,一個姓氏的始祖,就是『 /根目錄了。你現在的家,是由始祖經世世代代祖先再經你父母而後到達你的,這個『由始祖經世世代代祖先再經你父母』冠上歷代先祖的名諱,加上父輩稱謂,就是你個人的譜系,指稱唯一的『你家』;在檔案系統術語上,譜系的類比就是『從根目錄到一指定檔案的父目錄』──叫作檔案的絕對路徑 path。然而由『你』的時位,也可以相對的定位「父祖輩」與「子孫輩」,分割成了『上』、『下』與『同』輩。所以當你稱祖父、曾祖父、曾曾祖父 …等等時,這些稱謂都是相對於你來講的。在 Linux 的檔案系統裡,也是這麼用的,用『../』表示『父目錄』,『../../』就是『父之父目錄』了。這種相對路徑有什麼好處呢?用族譜來說,比方經過了考證,你發現族譜上的始祖是更早或更晚的某某,你的譜系雖然變了,但是你的父母兄弟姊妹、甚至三代、五代的『關係』依然沒變。在 Linux 的檔案系統裡,有一種『鏈接檔』,相似於網頁的鏈接,可以用「相同」或「不同」的命名,指稱「同目錄」或「不同目錄」裡的另一個「檔案」或「目錄」。當我們考慮檔案系統管理可能變遷一事時,比方說,上層目錄的重新命名,這時為了確定鏈接檔不變的鏈接關係,習慣上都使用相對路徑。

當你剛登入作業系統時,你所在的目錄是你的『家目錄』,每個使用者都有自己的家目錄,該目錄由使用者自己管理。比方使用者 pi 的家目錄是 /home/pi/,存放 pi 的各種檔案或 pi 自己創建的目錄。這是每個使用者最常用的目錄,因此有一個簡短的代表符號『~/』指這個目錄。〔︰Linux 檔案系統的路徑使用,通常最後一個目錄名稱之後的 “/” 可以省略。所以 /home/pi 就是 /home/pi/,~ 同於 ~/ 〕這也說明了預設提示符裡的 ~ 的由來。在『除蟲!除錯?終端機。』一文中,我們提到了 root 這個最高權限管理者,它的家目錄就是 /root 。

如何在命令列使用檔案系統呢?『想像』你是一個檔案系統的設計師,你會提供哪些辦法,讓使用者能好好使用這棵大樹呢?知道自己目前在哪? pwd 。去任何目錄? cd 。看看目錄內容? ls 。了解檔案內容? cat 。刪除檔案? rm 。…這些種種…?…?等等。練習這樣的設想,能讓自己更輕鬆的掌握重點,學習知識。更好的是,如果你喜歡享受閱讀的樂趣 ,特此介紹鳥哥的 Linux 私房菜,可以吃得很過癮。

實驗是科學上的重要『方法學』,『嘗試錯誤』是經驗的起始。學習電腦系統也是一樣的,下面指令,你如何找到『??』所指?替換之後輸入下面的命令,此時如果你移動滑鼠會發生什麼事?

cat /dev/input/by-id/usb-??-event-mouse

假如你想結束命令,請按 Ctrl  + c  組合鍵

至於說如何摘蘋果?那只能問牛頓了。

除蟲!除錯?終端機。

1878 年大發明家愛迪生寫下

It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise — this thing gives out and [it is] then that “Bugs” — as such little faults and difficulties are called — show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached.

上文中 bugs 是用小昆蟲來指小瑕疵!為什麼呢?不得而知。至於『除蟲』debugging 的由來,就像『黏在繼電器上的飛蛾』一說,也許是故事裡的事,但又何必在意那麼多,相信能有什麼不好呢?難道說人不是因夢想而偉大,是一根會思考的蘆葦。這是 1946 的 伊尼亞克 ENIAC 世界上第一台通用型計算機,完全的圖靈機

Eniac

為什麼從『錯誤』開始談起呢?對寫程式的人來說,『除錯』是常態。不要害怕『犯錯』,把錯誤看成『敵友』── 唱反調的朋友,它能糾正不清的思慮,改進不明的理解。如果能以『不二過』為圭臬,你將能學的更快更好。

中國古代沒有標點符號,卻有句讀之學,把文本斷句加上圈點,以此確定文意。舉例來說︰

『下雨天留客天天留我不留』這個文本,可以有多種句讀,文意各不相同。

下雨天,留客天;天、留我不留。
下雨,天留客,天天留;我不留。
下雨天,留客;天天留我!不留。

同樣的,人使用電腦,也需要一種清楚的辦法來確定指令(命令),一點不能含混不清。技術點的說,人是透過『人機介面』操作電腦。這個『介』或 『界』字一般泛指『兩者之間』的意思,『介面』或譯『界面』interface 一詞在電腦術語的用法上,通常表達物與物的交接處,功能操作的地方。比如說「應用軟體界面 API」指的是電腦程式如何使用軟體系統所提供的「功能程式庫 library」;USB 介面是指電腦主機和 USB 裝置間的硬體介面;而所謂的終端機則提供了人與電腦作業系統的『文字界面』。

傳統上,有一個稱作 IPO 〔輸入|處理|輸出〕的模型能很好的說明終端機的文字介面︰

IPO Model

 

使用者輸入命令,Shell 外殼程式執行/處理,然後輸出結果給使用者。前面提到的句讀問題,是針對於輸入的命令所講的,那電腦怎麽斷句呢?答案是用 Enter 鍵,終端機用它代表『輸入完成』的意思。或許你想這不是很奇怪嗎?電視遙控器不是一按就轉台了嗎?

事實上,不同的人機介面設計想法並不一樣,為著方便使用者,各有各的『規定』,對於終端機來講,這個 Enter 鍵是『必須』的──其實正由於不同的命令程式太多,而幾乎都是『縮寫字』以及為了錯誤修改的方便,所以直到按下 Enter 鍵前,都只是命令輸入的階段而已。為什麼要叫 Shell 外殼呢?也許就像水果的皮、雞蛋的殼、寄居蟹的外衣…保護著內部的同時也接觸著外界。其實這個稱呼來自古早的 Unix 系統,現今的 Linux 仍承襲著這個傳統哲學

Raspbian 的組織是由一群同好者所組成,基於 Debian ── 著名的 Linux 發行版,全面針對樹莓派作軟體最佳化,目前樹莓派基金會的官方版 Raspbian 即發源於此。Raspbian 是多人多工的作業系統,有著一套完整的使用者使用權限的管理辦法。開機後需要登入 login 就是其中的一項;或許你已經知道官方版預設的使用者pi ,密碼是 raspberry 。由於『使用權限』使然,許多系統管理、軟體安裝、裝置設定…等等,不是使用者 pi 能夠直接操作的,需要在命令前冠上 sudo ── super user do ──,來取得超級使用者 ── 那個稱作 root 的使用者 ── 的權限,才允許你執行這個命令。比如說,要執行樹莓派的組態配置,你得用︰

sudo raspi-config

當你ㄧ登入系統時,你首先會看到一段登入訊息,然後是像這樣的提示符pi@raspberrypi ~ $』,這個提示符是可以自己定義的,在 Raspbian 上,使用者 pi 的登入外殼程式是 bash,預設的提示符定義為︰ [使用者名稱]@[主機名稱][工作目錄]$。這時有一個閃爍的 _ 型的游標,提示命令列 command line 的開始。下圖說明命令列的簡易編輯功能︰

command line

除了編輯之外,更進一步的說,你可以用 history 命令列出帶有編號的命令歷史,用 !編號 再次執行那個命令。事實上,早期的電腦並沒有今天的『圖形化使用者界面』,外殼程式所提供的『文字界面』是唯一的選擇,現代 PC 的應用歷史正開始於 DOS 的命令列── 一個簡化 Unix Shell 的陽春版。

直到今天,終端機上的 Shell 命令列還是駭客的最愛