命令:less

阿龍弟弟發表於2018-12-04

與more的區別

more在man手冊中的英文原文是檔案熟讀過濾器(file perusal filter),其實可以理解為一種文字檢視器。
它存在一些缺點:

  • 必須事先載入完整個檔案。因此在遇到大檔案的時候,需要等待。
  • 翻閱到檔案尾部的時候自動退出。

man手冊也有說明more這個命令已經是比較遠古的了,建議大家使用less這個提供了更多(more)功能的工具。

This version is especially primitive.  Users should realize that less(1) provides more(1) emulation plus extensive enhancements.

簡介

less命令類似於more命令,但是它支援向上翻頁和向下翻頁。
另外,less在開始前不需要讀取整個輸入檔案,所以在讀取大檔案的時候它啟動的速度要快於文字編輯器vi的。
由於less使用的是termcap,因此它可以執行在多種終端之上。即便是在硬拷貝(hardcopy)終端上也可以具備有限的支援。
less中的命令是基於more和vi的。可以在部分命令之前加上一個十進位制的數字,下文用N來表示。

less內部常用命令說明

注意:在下文描述中,^X表示Ctrl+X,Ctrl和x按鍵要同時按住;ESC表示ESCAPE按鍵;例如ESC-v表示先按ESCAPE,再按v。

基本相關

  • h:等同於less –help,檢視簡要幫助,較實用。
  • q:退出幫助或者退出less檢視器。

移動相關

  • j/k:向下/上滾動1行,可帶N,表示滾動N行。
  • d/u:向下/上滾動N行,預設是0.5個螢幕。如果帶N了,那麼N就成為後來的預設值。
  • SPACE:向下滾動N行,預設是1個螢幕。如果N超出了螢幕大小,那麼僅顯示最後的螢幕。
  • b:向上滾動N行,預設是1個螢幕。如果N超出了螢幕大小,那麼僅顯示最後的螢幕。

注意:上述滾動螢幕的命令,可以設定翻屏的大小,叫做視窗大小,可通過-z選項設定,亦可通過z和w命令。

跳轉相關

  • g/G:帶N的時候,Ng和NG都表示跳轉至檔案的第N行。不同的是,在不帶N的預設情況下g表示首行,G表示尾行。如果檔案較大且行跳躍幅度較大,那麼需要等待檔案載入。
  • {:如果螢幕的首行是“{”,那麼該命令可以用於尋找對應的“}”,並將其顯示在螢幕的底部。如果螢幕首行有多個“{”,那麼“N{”表示搜尋首行第N個“{”對應的“}”。“(”和“[”也是類似的用法。
  • }:如果螢幕的底行是“}”,那麼該命令可以用於尋找對應的“{”,並將其顯示在螢幕的首部。如果螢幕底行有多個“}”,那麼“N}”表示搜尋首行第N個“}”對應的“{”。“)”和“]”也是類似的用法。

搜尋相關

  • /pattern:從檔案當前位置向下尋找pattern,pattern是一個正規表示式。會從當前螢幕所顯示的第一行開始搜尋(不過-a和-j選項會改變此特性)。當以某些字元開頭的時候,會有特殊的含義。如果想表示特殊字元本身的話,可以使用反斜線“”轉義。
    • ^N or !:搜尋不匹配pattern的行。
    • ^E or *:搜尋多個檔案。搜尋完當前檔案未找到pattern的話,繼續搜尋下一個檔案。
    • ^K:正常情況,開始搜尋後,會將第一個匹配到的pattern顯示到第一行。而^K可以保持當前的位置不變,不將其顯示到第一行,但仍然會高亮顯示匹配的文字。
    • ^R:搜尋純文字,而非正規表示式。
  • ?pattern:和/pattern類似,區別在於它是從檔案當前位置向上尋找pattern。其他特性和/pattern一樣。
  • n/N:n表示搜尋下一個,N表示搜尋上一個,這裡的下一個指的是pattern搜尋順序的下一個。
  • &pattern:僅顯示匹配的行。
  • ESC-u:搜尋高亮顯示的開關。

less命令的選項

less -?
less --help
less -V
less --version
less [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
[-b space] [-h lines] [-j line] [-k keyfile]
[-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
[-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
[-# shift] [+[+]cmd] [--] [filename]...
  • –help:簡要的幫助介面,很實用。
  • -[z]n or –window=n:設定螢幕視窗的大小。
  • -s or –squeeze-blank-lines:將多個連續的空白行壓縮成單個,less -s即man命令所使用的檢視命令。
  • -a or –search-skip-screen:預設的搜尋都是從檔案的當前位置,即當前螢幕開始。該選項的作用使得,向下搜尋從當前螢幕底部開始,向上搜尋從當前螢幕的頂部開始,即跳過了當前螢幕。
  • -jn or –jump-target=n:指定目標行,例如從第幾行開始搜尋。例如,如果選項是“-j4”,那麼第五行就是目標行,從這一行開始搜尋或者進行其他操作。
  • -i or –ignore-case:忽略大小寫。不過如果在pattern中有出現大寫的話,那麼該選項就會失效。也就是說該選項僅對全小寫的pattern搜尋有效。不過我通過/pattern形式搜尋測試,如果全小寫的話,就可以自動忽略大小寫了。
  • -I or –IGNORE-CASE:可以理解為強制忽略大小寫。

相關文章