-- 簡書作者 謝恩銘 轉載請註明出處
內容簡介
- 第二部分第六課:Nano文字編輯器和終端配置
- 第二部分第七課預告:軟體安裝,如虎添翼
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的全稱也是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文字編輯器:
如上圖所見,我們的Nano文字編輯器就是長這樣的,是不是很簡潔?
而你現在就可以在裡面輸入文字了,如下圖:
看到了嗎,我輸入了兩句英語。
Hello, how are you ? (Hello,你好嗎?)
I am typing in nano, it is wonderful... (我正在nano裡打字,棒極了...)複製程式碼
Nano就是這麼方便,因為並不是所有文字編輯器都可以一上來就輸入文字的。比如Vim,要輸入文字還得先做其他操作,以後的課會學到。
如果你有使用Emacs的經驗,那你可能覺得這一點和Emacs還挺像的,Emacs也是一上來就可以輸入文字。
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鍵。
如下圖所示:
如果要儲存檔案,只要按下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複製程式碼
輸入你的使用者密碼,就開啟了這個配置檔案,如下圖:
可以看到這個配置檔案內容就很多了,當然也有很多是註釋,也就是以#開頭的。你可以向下滾動這個檔案,會發現有300行(小編的情況)。
在這個配置檔案裡,有所有可以放置在你自己的.nanorc中的語句。比如 set autoindent。但是這些配置語句都是以#開頭,就是說預設是註釋掉的,也就是說在全域性說來,這些配置語句不生效。如果你在/etc/nanorc中把那些配置語句前面的#去掉,就會對全域性使用者生效了。
在這個/etc/nanorc檔案的結尾處,你會看到有一塊專門設定語法高亮(就是文字會有顏色之分)的區域,如下圖:
比如,有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複製程式碼
.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檔案向下拉,可以看到有好幾行類似這樣的:
上圖中,我們看到有PS1開頭的行。這個就是設定命令列提示符的樣式的。
\u表示使用者名稱(例如小編的使用者名稱是oscar),\h是電腦的名稱(小編的情況是oscar-laptop),@就是分割使用者名稱和電腦名的那個@號。等等。
如果你學過shell語法,那麼你可以試著修改。
這裡我們不帶大家修改了,因為比較複雜,對於初學者來說,不要把.bashrc檔案搞亂了為好。
不過我們來學習一下如何將命令列提示符設為高亮(就是不再是白色的了,而是彩色的)。
看到有一行是#force_color_prompt=yes 了嗎?
去掉 #force_color_prompt=yes 最前面那個分號之後,儲存退出,再啟動一個新的終端,可以看到我們的命令列提示符已經高亮顯示了,有顏色了,是不是感覺顏值瞬間提高了很多?嗯嗯。
建立別名
別名是這樣一些命令,在你執行時會轉換為其他命令。就好比我的英文名是oscar,那別人呼叫oscar的時候,我知道其實是叫我。
別名的英語是alias。如果我們向下查詢我們的.bashrc檔案,會發現有alias開頭的行,如下所示:
也不難理解:
當我們在終端輸入比如ll(兩個小寫的L),其實就是等同於 ls -alF
當我們在終端輸入比如la,其實就是等同於 ls -A
等等。
所以說,別名設定得好,可以降低我們的工作量,因為輸入ll總比輸入ll -alF簡單吧。
在.bashrc中建立別名的語法是這樣的:
alias name='command'複製程式碼
name就是別名的名字,而command就是替換別名的實際的終端命令。
全域性的bashrc
之前的nano有全域性的配置檔案:/etc/nanorc
我們的終端所有的bash也有它的全域性配置檔案:/etc/bash.bashrc
對於每個使用者來說,家目錄下的.bashrc檔案的優先順序比系統的/etc/bash.bashrc檔案高。
例如同樣的配置選項,如果.bashrc和/etc/bash.bashrc不同,那麼以.bashrc的為準。
profile配置檔案
在我們的家目錄下,其實還有一個.profile檔案,而且它也有對應的全域性profile檔案,是 /etc/profile
profile在英語中是“外觀,輪廓”的意思。那麼這個profile檔案和bashrc有什麼區別呢?
簡單來說是這樣的:
profile這個配置檔案是使用者登入的終端的配置檔案,也就是我們以前學過的tty1~tty6這6個命令列終端(沒有圖形介面的,分別通過Ctrl+Alt+F1~F6進入)。profile是這些需要登入的,非圖形介面的終端的配置檔案。
bashrc這個配置檔案是不用使用者登入的終端,也就是我們一直在使用的終端形式,圖形化的終端的情況。這種終端是讀取.bashrc為配置檔案的。
有一點需要記住:profile檔案會呼叫.bashrc,所以其實我們修改了.bashrc,也就是間接修改了profile檔案。因為profile檔案會用profile本身的配置再加上.bashrc的配置。
可以用下圖幫助理解:
在我們修改了.bashrc和profile檔案後,預設是在使用者下次登入系統時才能生效。但是我們可以用source命令來使改動立即生效:
source .bashrc複製程式碼
source .profile複製程式碼
總結
文字編輯器也是一種程式,它可以開啟文字檔案(比如說Windows中的記事本就是一種文字編輯器),也可以用於修改檔案內容(如果有寫的許可權的話)。我們程式設計師經常用文字編輯器來編寫程式碼,也會用它來修改配置檔案。
有一些文字編輯器功能非常完善,可以做很多事情,例如Vim和Emacs。
Nano是最容易上手的文字編輯器之一,所以我們初學Linux的時候才會用它來做例子。
在Nano中我們可以用很多鍵盤快捷鍵來幫助我們:Ctrl+w用於查詢;Ctrl+x用於退出;Ctrl+o用於儲存,等等。
我們可以用Nano來修改.bashrc這個終端的配置檔案,也可以修改.nanorc這個nano的配置檔案。這樣我們就可以定製我們的軟體了。
第二部分第七課預告
今天的課就到這裡,一起加油吧!
下一課我們學習:Linux探索之旅 | 第二部分第七課:軟體安裝,如虎添翼
微信公眾號「程式設計師聯盟」ProgrammerLeague
我是謝恩銘,在巴黎奮鬥的軟體工程師。
我的簡介
我的經歷
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:“向著標杆直跑”