Learning Objectives
- 用 nano 開啟或建立檔案,看懂畫面下方的按鍵提示,用 Ctrl+O 存檔、Ctrl+X 離開
- 用 Alt+6 複製、Ctrl+K 剪下、Ctrl+U 貼上一整行或選取的文字
- 用 Ctrl+W 搜尋、Alt+W 找下一個,用 Ctrl+\ 搜尋並取代
- 用 Alt+U 復原、Alt+E 取消復原,知道「全部取代」之後復原是一次還原一處
- 用 sudo nano 編輯屬於 root 的系統設定檔
在終端機裡改設定檔
Linux 的設定大多寫在文字檔裡(例如 /etc/hosts、/etc/netplan/*.yaml)。透過 SSH 連進伺服器時沒有圖形介面,要在終端機裡直接編輯。
常見的終端機文字編輯器有 vi/vim 與 nano。vim 有「一般模式、插入模式」等不同模式,功能強大但需要時間熟悉; nano 沒有模式之分,打開就能打字,常用的按鍵列在畫面最下方,很適合第一次在終端機裡編輯檔案。Ubuntu 預設已經安裝 nano(Ubuntu 24.04 是 7.2 版)。
nano notes.txt # 檔案存在就開啟;不存在就建立新檔,存檔時才真的產生
nano +5 notes.txt # 開啟後游標直接跳到第 5 行
畫面最上方是版本與檔名,中間是內容,最下方兩行是按鍵提示(以下節錄前幾個,視窗越寬顯示越多):
GNU nano 7.2 notes.txt
(檔案內容)
^G Help ^O Write Out ^W Where Is ^K Cut
^X Exit ^R Read File ^\ Replace ^U Paste
^代表 Ctrl:^O是 Ctrl+OM-代表 Alt(Meta):M-U是 Alt+U。終端機攔截了 Alt 鍵時,可以先按一下 Esc 再按該鍵- 忘了按鍵就按
^G(Ctrl+G)看說明,裡面是這個版本完整的按鍵列表
nano 的常用按鍵
| 按鍵 | 功能 | 說明 |
|---|---|---|
Ctrl+O |
存檔(Write Out) | 下方會顯示檔名,按 Enter 確認 |
Ctrl+X |
離開 | 有沒存的修改會問 Save modified buffer?:Y 存檔、N 不存、Ctrl+C 取消 |
Alt+6 |
複製 | 沒有選取時複製游標所在的一整行 |
Ctrl+K |
剪下 | 沒有選取時剪下游標所在的一整行;連按幾次會把連續幾行一起剪下 |
Ctrl+U |
貼上 | 貼在游標所在的位置 |
Ctrl+6 或 Alt+A |
設定選取起點 | 移動游標後反白的部分就是選取範圍,再按一次取消;選取後再按 Alt+6 或 Ctrl+K |
Ctrl+W |
搜尋(Where Is) | 輸入要找的字,按 Enter |
Alt+W |
找下一個 | 重複上一次的搜尋,不必再輸入一次 |
Ctrl+\ |
搜尋並取代 | 依序輸入要找的字、要換成的字;每找到一處會問 Y(換)、N(跳過)、A(全部換) |
Alt+U |
復原(Undo) | 回到上一個動作之前 |
Alt+E |
取消復原(Redo) | 把剛剛復原的動作做回來 |
投影片提到用「Alt+方向鍵上/下」往上或往下搜尋,那是較舊版本的按鍵;nano 7.2 的 Alt+↑/Alt+↓ 是把畫面往上或往下捲動一行。 版本不同時按鍵可能不同,以 Ctrl+G 顯示的說明為準。
「全部取代」之後的復原
用 Ctrl+\ 搭配 A 把檔案裡的 file 全部換成 text,復原時不是一次全部還原:每按一次 Alt+U 只還原其中一處。
取代了三處,就要按三次 Alt+U 才會完全回到原狀;按過頭了,用 Alt+E 做回來。
用 sudo nano 編輯系統檔案
/etc 底下的設定檔屬於 root,一般使用者只能讀、不能寫:
$ ls -l /etc/hosts
-rw-r--r-- 1 root root 132 Oct 29 14:30 /etc/hosts
不加 sudo 用 nano 開啟時,下方會先提醒 [ File '/etc/hosts' is unwritable ];硬要存檔會出現
[ Error writing /etc/hosts: Permission denied ],改了半天卻存不進去。這時按 Ctrl+X、選 N 放棄修改,再用 sudo 重新開啟:
sudo nano /etc/hosts
sudo 只在這一次讓 nano 以 root 身分執行,存檔後檔案的擁有者仍然是 root。
修改系統設定檔前,先備份一份:
sudo cp /etc/hosts /etc/hosts.bak。改壞了可以用備份還原。
想一想:nano 的按鍵
nano 下方的提示 ^O Write Out、M-U Undo 分別要怎麼按?
游標停在某一行、沒有選取任何文字,想把這一行複製一份貼在下面,應該怎麼按?
用 Ctrl+\ 把檔案裡的 file 全部取代成 text,總共換了 3 處。想完全回到取代前,要怎麼做?
想一想:存檔與權限
在 nano 裡改了內容後按 Ctrl+X,出現 Save modified buffer?,按 N 會怎樣?
用一般使用者執行 nano /etc/hosts,改完存檔出現 Error writing /etc/hosts: Permission denied,應該怎麼做?
重點精華回顧
nano 檔名開啟或建立檔案;畫面下方的^是 Ctrl、M-是 Alt,忘了按鍵就按 Ctrl+G。- Ctrl+O 存檔、Ctrl+X 離開;有未存的修改時,Y 存檔、N 放棄、Ctrl+C 取消。
- Alt+6 複製、Ctrl+K 剪下、Ctrl+U 貼上;沒有選取時處理整行,Ctrl+6 或 Alt+A 開始選取。
- Ctrl+W 搜尋、Alt+W 找下一個;Ctrl+\ 搜尋並取代,每一處可選 Y、N 或 A(全部)。
- Alt+U 復原、Alt+E 取消復原;全部取代之後,復原是一次還原一處。
- 系統設定檔用
sudo nano編輯,修改前先備份。