Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

程式設計師聯盟發表於2017-04-04

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

-- 簡書作者 謝恩銘 轉載請註明出處

內容簡介


  1. 第二部分第六課:Nano文字編輯器和終端配置
  2. 第二部分第七課預告:軟體安裝,如虎添翼

Nano,初學者的文字編輯器


上一課 Linux探索之旅 | 第二部分第五課:使用者和許可權,有權就任性 中,我們學習了不少知識點,估計大家都比較辛苦。

這一課比較簡單,沒有什麼太難的概念。不過這一課會講如何配置終端噢。

大家可以 泡個泡麵,烤只烤雞;剝個滷蛋,慢慢來看。

之前的課程中,我們已經學會了在終端中用多種不同的方式來檢視檔案的內容,但是我們還不知道如何在終端中修改檔案的內容。

為什麼我們把文字編輯器推遲到現在來說呢?因為這是終端可以提供的強大功能之一。

在Linux終端的文字編輯器當中,比較著名的有:Nano,Vim,Emacs,等等。其他文字編輯器還有Gedit,Sublime等等。當然了,我們不可能列舉所有的文字編輯器,太多了。

在這些文字編輯器當中,Nano是比較適合初學者上手的。之所以稱其為初學者的文字編輯器,絕沒有貶低Nano的意思,Nano的功能很強大,只是比較容易入門。

之後的課程我們會用專門的一課來學習Vim,要入門Vim可能需要下點功夫。然後也會聊聊Emacs。

小編寫過一篇關於Emacs的文章:程式設計師小助手 | Emacs,最強編輯器,沒有之一

Nano初體驗


說起nano這個英語單詞,很多人可能不陌生。

nano是“毫微”的意思,也就是10的-9次方。
著名的奈米科技的“奈米”就是nanometer,由nano和meter組成,nano是“十億分之一”,meter是“米”。
所以奈米就是十億分之一米。
「一米」與「一奈米」的大小相比較,相當於地球的直徑和地球上的一顆玻璃彈珠之間的差距。

我們這個文字編輯器叫做nano,應該是取其“短小精悍”的寓意吧。“麻雀雖小,五臟俱全”。

Nano相比Vim或Emacs,確實小巧簡單很多,不及後兩者複雜和強大。但是對於入門文字編輯器還是很合適的。

Nano是一個文字編輯器,不是文字處理器


你真知道什麼是文字編輯器嗎?它和文字處理器又有什麼區別呢?

  • 文字編輯器:是這樣一種軟體,它可以編輯和檢視文字檔案,但是不能對文字做格式處理(例如:加粗,斜體,改變顏色,改變字型大小,新增超連結等等)。
    常見的有Windows下的記事本,Mac OS X下的文字編輯,Linux下的vi、emacs、gedit,DOS下的edit等。在Linux下,預設系統中至少安裝了一種文字編輯器。當然,在Mac OS X下,nano也是預設安裝的。

  • 文字處理器:也是一種軟體,又叫文件編輯器,不僅可以編輯和檢視文件,而且可以對其文字進行格式處理(加下劃線,設為標題,插入圖片等等)。這些軟體只能在圖形介面下使用。
    常見的有Windows下的Word,Mac OS X下的Pages,Linux下的OpenOffice Writer等。

文字編輯器處理的檔案格式和文字處理器的檔案格式一般也不同。

那麼什麼時候我們需要用到文字編輯器呢?

我們可以用文字編輯器來編輯純文字檔案。純文字格式,就是沒有任何文字修飾的,沒有任何粗體,下劃線,斜體,圖形,符號或特殊字元及特殊列印格式的文字。只儲存文字,不儲存其格式設定。

在Windows下,我們比較熟悉的純文字檔案就是.txt結尾的文字文件了。在Linux和Mac OS下,字尾名沒那麼重要,不少純文字檔案是沒有字尾名的。

文字編輯器對於程式設計師來說又是必不可少的。它可以讓我們編輯各種程式語言的程式碼程式:.c(C語言程式碼檔案),.cpp(C++程式碼檔案),.py(Python程式碼檔案),.php(PHP程式碼檔案),.java(Java程式碼檔案),.xml(XML程式碼檔案)等等。

總之,如果你“不幸”成為了一個程式設計師,那麼文字編輯器的學習是逃不了的,這是你的吃飯家伙。

即使你不是程式設計師,不需要寫程式碼,但是很多系統的配置檔案也需要用文字編輯器來編輯。

在學習瞭如何使用Nano之後,我們會學習如何修改兩個配置檔案:.nanorc和.bashrc。這兩個檔案能讓我們分別配置nano和終端。

揭開Nano的面紗


Nano的全稱其實是GNU Nano。還記得我們的老朋友GNU麼?

是的,就是那個我們提過的GNU專案,在Linux探索之旅 | 開宗明義+第一部分第一課:什麼是Linux?中講過。

GNU還有個基金會,由Richard Stallman(理查德·斯托曼)於1985年10月建立,叫自由軟體基金會(英語:Free Software Foundation,FSF)是一個致力於推廣自由軟體的美國民間非營利性組織。其主要工作是執行GNU計劃,開發更多的自由軟體。

GNU計劃(英語:GNU Project),又譯為“革奴計劃”,一個自由軟體集體協作專案,1983年9月27日由理查德·斯托曼在麻省理工學院公開發起。它的目標是建立一套完全自由的作業系統,稱為GNU。理查德·斯托曼最早在net.unix-wizards新聞組上公佈該訊息,並附帶一份《GNU宣言》等解釋為何發起該計劃的文章,其中一個理由就是要“重現當年軟體界合作互助的團結精神”。 GNU是“GNU is Not Unix”(意思是“GNU不是Unix”)的遞迴縮寫。為避免與單詞gnu(非洲牛羚,發音與“new”相同)混淆,斯托曼宣佈GNU發音應為“Guh-NOO”(/ˈgnuː/ ),與“canoe”發音相似。其中,Emacs就是由這個計劃孵化而出。

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

我們的Linux的全稱也是GNU Linux。因為Linus Torvalds基本只是開發了LInux的核心,Linux的外部程式都是來自世界各地的GNU社群程式設計師編寫。

Nano的設計靈感來自於一個叫Pico的文字編輯器,pico是“10的-12次方”,萬億分之一,比nano還要小1000倍。我們平時說的皮米picometer(由pico和meter(英語“米”)連結而成),就是萬億分之一米。

當然了,nano其實也是 Nano is ANOther editor(意思是“nano是另一種編輯器”)的遞迴縮寫。

有趣的老外最愛在程式設計裡用遞迴來命名了。比如Linux是Linux is not Unix(意思是“Linux不是Unix”)的遞迴縮寫。

啟動nano


因為Ubuntu預裝了nano,因此要啟動nano,只需要在終端中輸入

nano複製程式碼

回車,就開啟了nano文字編輯器:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

如上圖所見,我們的Nano文字編輯器就是長這樣的,是不是很簡潔?

而你現在就可以在裡面輸入文字了,如下圖:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

看到了嗎,我輸入了兩句英語。

Hello, how are you ?  (Hello,你好嗎?)

I am typing in nano, it is wonderful...  (我正在nano裡打字,棒極了...)複製程式碼

Nano就是這麼方便,因為並不是所有文字編輯器都可以一上來就輸入文字的。比如Vim,要輸入文字還得先做其他操作,以後的課會學到。

如果你有使用Emacs的經驗,那你可能覺得這一點和Emacs還挺像的,Emacs也是一上來就可以輸入文字。

Nano中的鍵盤快捷鍵


在上圖中的終端下部,我們可以看到有兩行幫助文件,如下圖:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

^ 這個符號表示鍵盤的Ctrl鍵,所以這些都是Nano的快捷鍵組合。比如,^X標明的是Exit,那麼就是退出Nano,因為exit是英語“退出”的意思。

這些快捷鍵組合中雖然字母都是大寫,但其實就是鍵盤上對應的字母鍵,並不需要用Shift鍵來將其變為大寫。

以下給出一些常用的Nano組合快捷鍵:

  • Ctrl+G:顯示幫助文件

  • Ctrl+O:儲存檔案

  • Ctrl+R:開啟其他檔案

  • Ctrl+Y:上一個螢幕

  • Ctrl+V:下一個螢幕

  • Ctrl+K:剪下當前一行

  • Ctrl+X:退出

  • Ctrl+W:查詢

  • Ctrl+U:黏貼剛剪下的內容

  • Ctrl+/:替換

  • Ctrl+F:向前移動一格游標

  • Ctrl+B:向後移動一格游標

  • Ctrl+P:向上移動一行

  • Ctrl+N:向下移動一行

其他還有不少快捷鍵,一般Nano都會在你操作的螢幕上提醒。所以很方便。但是再論學好英語對程式設計的幫助,看到這些提示了嗎?都是英語寫的。對於程式設計師, 為什麼英語比數學更重要? 如何學習

當然了,我們用鍵盤上的方向鍵(上,下,左,右)也可以控制游標移動。PaUp和PaDn也分別與Ctrl+Y和Ctrl+V功能一樣。

如果你比較熟悉這些快捷鍵組合之後,你覺得nano下方的幫助文件有點礙眼,那你也可以讓它消失,只要先按Esc鍵,再按X鍵,幫助文件就沒了。如果要重新調出幫助文件,則同樣操作。

Nano的引數


剛才我們開啟nano時,是單獨用了nano這個命令。當然,nano命令也可以帶引數的。

最常用的引數當然就是要開啟的檔名咯,例如:

nano file.txt複製程式碼

就會用nano開啟file.txt,如果你對file.txt有寫的許可權,那你就可以用nano來修改這個檔案了。

如果file.txt檔案不存在,那麼就會建立一個空檔案,名字叫做file.txt,並用nano開啟。

nano的其他引數有不少,不過小編挑了三個個人覺得比較實用的:

  • -m:啟用滑鼠。如果沒有-m引數,那麼滑鼠在nano裡是不起作用的,加了-m引數滑鼠可以通過點選來控制游標的位置。

  • -i:啟用自動縮排的功能。這對於程式設計師寫程式碼太有用了。

  • -A:啟用智慧Home鍵的功能。通常狀況下,我們按下鍵盤的Home鍵,我們的游標會立即跳到一行的最開始,如果用了-A這個引數,那麼按下Home鍵它會智慧地判斷,如果一行的開始處有縮排,那麼它會使游標跳轉到緊跟在縮排之後,而不是一行的最開始。

如果我們要同時啟用三個屬性,只需要這樣用:

nano -miA file.txt複製程式碼

通過.nanorc來配置Nano


現在,既然我們已經初步瞭解瞭如何使用nano(當然了,要熟練使用還需要多實踐咯)。

我們也看到,nano實在很易用,只需要熟悉一些常用的鍵盤快捷鍵組合就可以了。

在今天這課的開始處,我們說了要學習用文字編輯器修改一些配置檔案。

Nano也有一個配置檔案,用於設定nano的一些選項。這個檔案叫做 .nanorc

注意,.nanorc的最前面有一個點,表明這是一個隱藏檔案。
像這樣的配置檔案,如果用ls -l命令是列不出來的,需要用ls -a來列出。

一般Linux中的配置檔案大多以點開頭,而且多以rc結尾。比如vim的配置檔案 .vimrc,bash shell的配置檔案.bashrc,等等。

那這個rc是什麼意思呢?當然了,不理解rc什麼意思沒有關係,不過我們來滿足一下自己的好奇心:

Linux或Unix的許多程式在啟動時,都需要“rc”字尾的初始檔案或配置檔案。

“rc”,它是“runcomm”的縮寫――即“run command”(執行命令)的簡寫。 "rc" 是取自 "runcom", 來自麻省理工學院在 1965 年發展的 CTSS系統。相關文獻曾記載這一段話:"具有從檔案中取出一系列命令來執行的功能;這稱為 "run commands" 又稱為 "runcom",而這種檔案又稱為一個 runcom (a runcom)。

" rc”是很多指令碼類檔案的字尾,這些指令碼通常在程式的啟動階段被呼叫,通常是Linux系統啟動時。如/etc/rc(連線到/etc/rc.d/rc)是Linux啟動的主指令碼,而.bashrc是當Linux的bash shell啟動後所執行的指令碼。

每個Linux的使用者都可以在自己的家目錄建立.nanorc這個檔案,在每次nano啟動前,它會讀取此配置檔案。

在小編的情況,因為我的使用者名稱是oscar,所以我的.nanorc檔案應該是 /home/oscar/.nanorc

但是,我查詢了,在我的家目錄中,並沒有.nanorc這個檔案。在你的情況,可能有,也可能沒有。但是不要緊。因為如果在你的家目錄沒有.nanorc,那麼nano會用全域性的配置檔案。

建立.nanorc


如果你的家目錄裡也沒有.nanorc,那麼你可以建立一個。怎麼建立呢?很簡單:

nano .nanorc複製程式碼

在這個.nanorc檔案中,你可以輸入你的配置資訊。

每一行一句配置語句,配置語句是以set(用於啟用。set是英語“放置,設定”的意思)或unset(用於關閉)開頭,後接你要配置的專案。例如:

set mouse複製程式碼

這句話就用於啟用滑鼠(mouse是英語“滑鼠”的意思)。有了這句話,那麼每次nano啟動時都會啟用滑鼠操作了,我們啟動nano就不必寫-m這個引數了,是不是很方便?

我們也可如法炮製,使得我們不用每次啟動nano都加上-i和-A引數:

set autoindent複製程式碼

這句是用於啟用自動縮排,相當於-i引數的作用。

set smarthome複製程式碼

這句用於啟用智慧Home鍵。

如下圖所示:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

如果要儲存檔案,只要按下Ctrl+O,它會提示你檔名是.nanorc。因為我們已經指定了檔名,直接按下回車,這三行就寫入到了.nanorc中。可以看到終端提示:[Wrote 3 lines],表示“寫入了3行”。

如果你完成了配置,那麼可以按下Ctrl+X來退出nano。

下次你再啟動nano的時候,你會發現:滑鼠被啟用了,自動縮排也啟用了,智慧Home鍵也啟用了。

配置檔案可以大大提高我們的工作效率。

全域性的nanorc和語法高亮


在每個使用者的家目錄中的.nanorc這個檔案非常實用,因為它可以幫助你設定自己的nano選項。

但是,如果你的Linux系統中有幾十個使用者,你想要為所有這些使用者都啟用nano的滑鼠操作,難道你要登入每一個使用者的賬戶,然後在他們各自的.nanorc中新增 set mouse這句話麼?那上百個使用者呢?豈不是要累壞了。

Linux系統的開發者早就想到了這一點。事實上,nano有一個全域性的配置檔案,是為系統上所有使用者所公共呼叫的,也叫nanorc,但是在/etc中,是/etc/nanorc。這回nanorc前面沒有點了。

這個全域性的nano配置檔案只能被root使用者修改,因為是在系統資料夾/etc中。

在我們以前的課程Linux探索之旅 | 第二部分第三課:檔案和目錄,組織不會虧待你中,我們介紹過/etc這個目錄,它裡面存放系統的配置檔案。一般為所有使用者共用。

因此,如果我們要修改這個檔案,建議用sudo命令。

sudo nano /etc/nanorc複製程式碼

輸入你的使用者密碼,就開啟了這個配置檔案,如下圖:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

可以看到這個配置檔案內容就很多了,當然也有很多是註釋,也就是以#開頭的。你可以向下滾動這個檔案,會發現有300行(小編的情況)。

在這個配置檔案裡,有所有可以放置在你自己的.nanorc中的語句。比如 set autoindent。但是這些配置語句都是以#開頭,就是說預設是註釋掉的,也就是說在全域性說來,這些配置語句不生效。如果你在/etc/nanorc中把那些配置語句前面的#去掉,就會對全域性使用者生效了。

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

在這個/etc/nanorc檔案的結尾處,你會看到有一塊專門設定語法高亮(就是文字會有顏色之分)的區域,如下圖:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

比如,有C/C++程式碼的語法高亮,nanorc檔案的語法高亮,CSS檔案的語法高亮,下面還有很多型別的檔案的語法高亮。

在小編的情況,這些include前面並沒有#,就是說語法高亮對所有使用者都是開啟的,但你的情況也許每個include語句前面有#號,表示沒有開啟全域性的語法高亮,建議刪除那個#,來開啟。

按Ctrl+O來儲存修改,然後Ctrl+X退出。當然,也可以直接Ctrl+X,它問你是否儲存修改,輸入y(表示yes,“是”)或n(表示no,“不是”)或Ctrl+C取消。

通過.bashrc配置終端


對於nano,我們有一個配置檔案叫.nanorc。其實對於我們的終端,也有一個配置檔案,叫做.bashrc,這是使用者個人的終端配置檔案。在小編的情況,位於 /home/oscar/.bashrc

這個檔案一般來說是預設存在的。不像我們的.nanorc可能還要自己建立。

我們開啟家目錄下的終端配置檔案看看,只要輸入以下命令:

nano ~/.bashrc複製程式碼

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

.bashrc檔案比較複雜,初看可能會有點眼花繚亂的感覺。我們暫時不會深入學習它的語法,因為其實bash是一種shell。

我們以後的課程會重點來學習shell。暫時只要理解了解shell是外殼程式(shell是英語“外殼”的意思),是用於解釋我們輸入終端的各種命令的。

Shell是一個使用者跟作業系統之間的一個命令直譯器,也就是使用者與Linux作業系統之間溝通的橋樑。

bash是最常用的一種shell程式,Ubuntu和大部分常見的Linux發行版預設的shell程式就是bash。

.bashrc就是bash這個shell程式的配置檔案。

所以bashrc本身的語法也是bash的語法,是一種指令碼語言。我們以後會學到,暫時不需要理解。

我們在之前的課程Linux探索之旅 | 第二部分第二課:命令列,世界盡在掌握中講過,我們可以通過配置檔案來修改我們的命令列提示符:

oscar@oscar-laptop:~$複製程式碼

你的情況肯定和我不一樣,我們在以前的課程中也解釋過命令列提示符的各個部分的含義。

在.bashrc檔案中,我們可以修改命令列提示符的樣式,如果你覺得目前的命令列提示符太繁瑣太長了,你可以把它改短一些,簡潔一些。

把我們的.bashrc檔案向下拉,可以看到有好幾行類似這樣的:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

上圖中,我們看到有PS1開頭的行。這個就是設定命令列提示符的樣式的。

\u表示使用者名稱(例如小編的使用者名稱是oscar),\h是電腦的名稱(小編的情況是oscar-laptop),@就是分割使用者名稱和電腦名的那個@號。等等。

如果你學過shell語法,那麼你可以試著修改。

這裡我們不帶大家修改了,因為比較複雜,對於初學者來說,不要把.bashrc檔案搞亂了為好。

不過我們來學習一下如何將命令列提示符設為高亮(就是不再是白色的了,而是彩色的)。

看到有一行是#force_color_prompt=yes 了嗎?

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

去掉 #force_color_prompt=yes 最前面那個分號之後,儲存退出,再啟動一個新的終端,可以看到我們的命令列提示符已經高亮顯示了,有顏色了,是不是感覺顏值瞬間提高了很多?嗯嗯。

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

建立別名


別名是這樣一些命令,在你執行時會轉換為其他命令。就好比我的英文名是oscar,那別人呼叫oscar的時候,我知道其實是叫我。

別名的英語是alias。如果我們向下查詢我們的.bashrc檔案,會發現有alias開頭的行,如下所示:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

也不難理解:

  • 當我們在終端輸入比如ll(兩個小寫的L),其實就是等同於 ls -alF

  • 當我們在終端輸入比如la,其實就是等同於 ls -A

  • 等等。

所以說,別名設定得好,可以降低我們的工作量,因為輸入ll總比輸入ll -alF簡單吧。

在.bashrc中建立別名的語法是這樣的:

alias name='command'複製程式碼

name就是別名的名字,而command就是替換別名的實際的終端命令。

全域性的bashrc


之前的nano有全域性的配置檔案:/etc/nanorc

我們的終端所有的bash也有它的全域性配置檔案:/etc/bash.bashrc

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

對於每個使用者來說,家目錄下的.bashrc檔案的優先順序比系統的/etc/bash.bashrc檔案高。
例如同樣的配置選項,如果.bashrc和/etc/bash.bashrc不同,那麼以.bashrc的為準。

profile配置檔案


在我們的家目錄下,其實還有一個.profile檔案,而且它也有對應的全域性profile檔案,是 /etc/profile

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

profile在英語中是“外觀,輪廓”的意思。那麼這個profile檔案和bashrc有什麼區別呢?

簡單來說是這樣的:

  • profile這個配置檔案是使用者登入的終端的配置檔案,也就是我們以前學過的tty1~tty6這6個命令列終端(沒有圖形介面的,分別通過Ctrl+Alt+F1~F6進入)。profile是這些需要登入的,非圖形介面的終端的配置檔案。

  • bashrc這個配置檔案是不用使用者登入的終端,也就是我們一直在使用的終端形式,圖形化的終端的情況。這種終端是讀取.bashrc為配置檔案的。

有一點需要記住:profile檔案會呼叫.bashrc,所以其實我們修改了.bashrc,也就是間接修改了profile檔案。因為profile檔案會用profile本身的配置再加上.bashrc的配置。

可以用下圖幫助理解:

Linux 探索之旅 | 第二部分第六課:Nano 文字編輯器和終端配置

在我們修改了.bashrc和profile檔案後,預設是在使用者下次登入系統時才能生效。但是我們可以用source命令來使改動立即生效:

source .bashrc複製程式碼
source .profile複製程式碼

總結


  1. 文字編輯器也是一種程式,它可以開啟文字檔案(比如說Windows中的記事本就是一種文字編輯器),也可以用於修改檔案內容(如果有寫的許可權的話)。我們程式設計師經常用文字編輯器來編寫程式碼,也會用它來修改配置檔案。

  2. 有一些文字編輯器功能非常完善,可以做很多事情,例如Vim和Emacs。

  3. Nano是最容易上手的文字編輯器之一,所以我們初學Linux的時候才會用它來做例子。

  4. 在Nano中我們可以用很多鍵盤快捷鍵來幫助我們:Ctrl+w用於查詢;Ctrl+x用於退出;Ctrl+o用於儲存,等等。

  5. 我們可以用Nano來修改.bashrc這個終端的配置檔案,也可以修改.nanorc這個nano的配置檔案。這樣我們就可以定製我們的軟體了。

第二部分第七課預告


今天的課就到這裡,一起加油吧!

下一課我們學習:Linux探索之旅 | 第二部分第七課:軟體安裝,如虎添翼


微信公眾號「程式設計師聯盟」ProgrammerLeague
我是謝恩銘,在巴黎奮鬥的軟體工程師。
我的簡介
我的經歷
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:“向著標杆直跑”

相關文章