在 Linux 和 Unix 的世界裏,我們經常需要通過終端與各種文本文件打交道,無論是查看日誌、閲讀代碼還是檢查命令輸出。當文件內容遠超終端屏幕的高度時,兩個經典的工具便閃亮登場:more 和 less。它們是我們命令行武器庫中不可或缺的“分頁器”。
今天,我們就來深入探討這兩位終端裏的“閲讀專家”。
一、 先來者:more 命令
more 是較早出現的分頁工具,其名字直白地表達了它的功能:一次顯示“更多”內容。
1. 基本用法
more filename.txt
或者,通過管道接收其他命令的輸出:
cat long_file.txt | more
2. 核心特點與操作 more 的工作方式非常簡單:
- 向下翻頁:按
空格鍵或f鍵可以向前(向下)翻一頁。 - 向下翻行:按
回車鍵可以向下前進一行。 - 退出:看完內容後,按
q鍵即可退出。
3. more 的侷限性 more 的設計初衷是“單向”的。在大多數傳統實現中,你無法向上滾動去查看已經翻過去的內容。正所謂“時光不能倒流,more 不能回看”。儘管一些現代系統的 more 是 less 的軟鏈接,功能更強大,但就其標準行為而言,回看是它的主要短板。
二、 後來居上者:less 命令
less 的出現是為了彌補 more 的不足。它的名字源於一句經典的 Unix 哲學玩笑:“less is more”。事實證明,less 確實比 more 功能更多、更強大,成為了當今事實上的標準分頁器。
1. 基本用法 與 more 類似:
less filename.txt
或通過管道:
history | less
2. 為什麼 less 更受青睞?
less 的核心優勢在於它的雙向導航能力和豐富的交互功能。
強大的導航操作:
- 翻頁:
空格鍵或f:向下翻一頁。b鍵:向上翻一頁。這是more沒有的關鍵功能!
- 行滾動:
回車鍵或j:向下移動一行。k鍵:向上移動一行。
- 搜索(極其實用):
/keyword:向下搜索“keyword”。按n跳轉到下一個匹配項,按N跳轉到上一個匹配項。?keyword:向上搜索“keyword”。
- 快速跳轉:
g:跳轉到文件開頭。G:跳轉到文件末尾。10g:跳轉到第 10 行。
- 其他實用功能:
F:跟隨模式。類似於tail -f,可以實時查看不斷增長的文件(如日誌文件),按Ctrl+C退出此模式。-N:啓動時加上-N選項可以顯示行號。less -N logfile.log-S:啓動時加上-S選項可以防止長行換行,便於查看寬表格數據。v:在當前位置,使用系統默認編輯器(如 Vim)打開文件進行編輯,退出編輯器後返回less。h:隨時按下可以查看完整的幫助文檔。
3. 退出 less 和 more 一樣,只需按下 q 鍵。
三、 more vs less:終極對決
| 特性 | more |
less |
|---|---|---|
| 向後滾動 | 不支持(或受限) | 支持(核心優勢) |
| 向前滾動 | 支持(空格鍵) | 支持(空格鍵) |
| 搜索功能 | 基礎(通常只支持向下) | 強大(支持上下搜索,高亮匹配) |
| 行號顯示 | 可能不支持或功能弱 | 支持(使用 -N 選項) |
| 實時跟蹤 | 不支持 | 支持(使用 F 鍵) |
| 啓動速度 | 略快(因為功能簡單) | 很快 |
| 交互性 | 簡單 | 非常豐富,類似 Vim |
| 流行度 | 舊腳本中常見 | 現代使用中的絕對主流 |
結論: 對於絕大多數用户和場景,less 是毫無爭議的更好選擇。它的雙向導航和強大搜索功能徹底解決了 more 的痛點。
四、 實踐場景與技巧
-
查看日誌並實時跟蹤
# 先查看歷史日誌,然後可以按 `F` 進入實時跟蹤模式 less /var/log/syslog -
分析命令的長輸出
# 仔細分析 `ps aux` 的輸出,可以上下滾動搜索特定進程 ps aux | less -
閲讀代碼文件
# 帶行號查看源代碼,方便定位 less -N main.c -
檢查壓縮文件(
less獨有魔法)less可以直接查看許多壓縮格式的文件內容,無需先解壓!less file.gz # 查看 gzip 文件 less file.bz2 # 查看 bzip2 文件它會自動調用相應的解壓程序並在內存中展示內容,非常方便。
五、 總結
more是分頁器的開創者,簡單直接,但功能有限。less是more的超級增強版,提供了全功能的雙向文件瀏覽體驗。
給你的建議:
忘掉 more,習慣使用 less。
在終端中,效率就是一切。less 所提供的自由瀏覽和強大搜索能力,能讓你在分析文本時如虎添翼。許多系統甚至已經將 more 設置為 less 的別名,當你輸入 more 時,實際運行的卻是 less。
所以,下次當你需要查看比一屏更長的內容時,請毫不猶豫地輸入 less,盡情享受它帶來的便捷與高效吧!