1. Linux運維必學命令之文件過濾!Linux入門
熟悉Linux運維工作的小夥伴們都知道,在Linux操作系統中,除了Cat、tac、more、less等命令之外,還有很多用於文本查看的命令,比如head、tail等,本文將為大家詳細的介紹一下。
cat:合並文件或查看文件內容
tac:反向顯示文件內容
more:分頁顯示文件內容
less:分頁顯示文件內容
head:顯示文件內容頭部
tail:顯示文件內容尾部
tailf:跟蹤日誌文件
cut:從文本中提取一段文字並輸出
split:分割文件
paste:合並文件
sort:文本排序
join:按兩個文件的相同欄位合並
uniq:去除重復行
wc:統計文件的行數、單詞數或位元組數
iconv:轉換文件的編碼格式
dos2unix:將DOS格式文件轉換成UNIX格式
diff:比較兩個文件的不同
vimdiff:可視化比較工具
rev:反向輸出文件內容
tr:替換或刪除字元
od:按不同進制顯示文件
tee:多重定向
vi/vim:純文本編輯器
2. Emacs基本的按鍵與命令
C- :表示鍵盤上的 Ctrl 鍵
M- :表示鍵盤上的 Alt 鍵
S- :表示鍵盤上的 Shift 鍵
DEL :表示鍵盤上的 Backspace 鍵,注意,不是 Delete 鍵
RET :表示鍵盤上的 Enter 鍵
SPC :表示鍵盤上的 Space 鍵
ESC :表示鍵盤上的 Esc 鍵
TAB :表示鍵盤上的 Tab 鍵
C-x C-f :打開一個文件,或者創建一個不存在的文件
M-x find-file :作用同上
C-x k :關閉一個 buffer ,作用等於關閉已經打開的文件
C-x C-s :保存文件內容,即將修改的文件內容寫入磁碟
M-x save-buffer :作用同上
C-x C-w :將當前文檔保存為另一個文件,即另存為
M-x write-file :作用同上
C-x b :切換文件,即切換緩沖區 buffer
說明:實際上在 Emacs 中,文件與 buffer 是不同的實體,文件一般指的是磁碟上的數據體,而 buffer 是 Emacs 中作為文件修改臨時緩存的緩沖區,注意區別。
Emacs具有一個被稱為 ido 的模式,全稱為 interactively do things ,在 ido 模式下,可以更加方便地選擇列表元素,相比使用Tab進行自動補全更加便利。
M-x ido-mode :使能或者禁止 ido 模式
可以在 Emacs 的啟動配置中添加以下語句,以默認打開 ido 模式:
(setq ido-enable-flex-matching t) (setq ido-everywhere t) (ido-mode 1)
C-x C-b :列出buffer列表
M-x list-buffers :作用同上
在 Emacs 中,還存在功能更靈活的 buffer 管理模式,被稱為 ibuffer 。可以通過以下命令進入 ibuffer :
M-x ibuffer :進入 ibuffer 管理模式
一般我們可以在Emacs的配置文件中進行ibuffer的命令鍵綁定:
(global-set-key (kbd "C-x C-b") 'ibuffer)
ibuffer 的過濾命令包括:
/m :以 major mode 方式添加過濾
/n :以 buffer 名稱的方式添加過濾
/c :以 buffer 內容的方式添加過濾
/f :以文件名稱的方式添加過濾
/> :以 buffer 大小的方式添加過濾
/< :以 buffer 大小的方式添加過濾
// :刪除當前所有有效的過濾
ibuffer 的過濾組的命令包括:
/g :創建一個過濾組
TAB :移動到下一個過濾組
M-p :移動到上一個過濾組
/ :刪除當前所有的過濾組
/S :將當前過濾組保存為一個名稱
/R :恢復之前保存的過濾組
/X :刪除之前保存的過濾組
ibuffer的排序命令包括:
s a :以字母順序排序
s f :以文件名稱順序排序
s v :以上次訪問時間排序
s s :以 buffer 大小排序
s m :以 major mode 排序
s i :反序當前的 buffer 順序
可以在文件的任何地方設置書簽,後續可快速跳轉到書簽處,書簽相關的命令為:
C-x r m :在當前游標處設置書簽,需輸入書簽名稱
M-x bookmark-set :作用同上
C-x r b :跳轉到某個書簽處
M-x bookmark-jump :作用同上
C-x r l :列出當前所有的書簽列表
M-x bookmark-bmenu-list :作用同上
在書簽列表狀態下,可以使用以下的命令:
RET :打開書簽標識的區域
s :將當前書簽列表保存至文件中
r :修改游標所在的書簽的名稱
d :將書簽打上刪除標識
x :刪除已打標識的書簽
u :取消已經打標識的書簽
主要的游標移動操作命令包括:
C-f :向前移動一個字元, f 表示為 forward
C-b :向後移動一個字元, b 表示 backward
C-p :向上移動一行, p 表示 previous
C-n :向下移動一行, n 表示 next
C-a :移動至行首
C-e :移動至行尾
M-f :向前移動一個單詞
M-b :向後移動一個單詞
C-v :向前滾動一個屏幕的內容
M-v :向後滾動一個屏幕的內容
M-a :移動至句首
M-e :移動至句尾
C-l :將游標重定位至屏幕中間一行,游標所在內容位置不變
M-r :將游標重定位至屏幕的頂部,中部,底部,游標所在內容位置不變
M-< :移動至 buffer 的開頭處,注意,按鍵 < 可能需要 Shift 鍵
M-> :移動至 buffer 的結尾處,注意,按鍵 > 可能需要 Shift 鍵
M-g c n :移動至第 n 個字元
M-g g n :移動至第 n 行(高於23.2版本的 Emacs 有效)
C-M-f :向前移動一個整的表達式,比如,游標可從函數開頭的左 { 處移動到函數結尾的 } 處,按鍵綁定的命令是 forward-sexp
C-M-b :向後移動一個整的表達式,比如,游標可從函數結尾的右 } 處移動到函數開頭的 { 處,按鍵綁定的命令是 backward-sexp
C-M-k :剪切一個整的表達式,按鍵綁定的命令是 kill-sexp
C-M-@ :選擇一個整的表達式,按鍵綁定的命令是 mark-sexp
在 Emacs 中, kill 的意思就是 cut ,即剪切,剪切操作的命令包括:
C-d :剪切當前游標所在的字元
C-S-DEL :剪切整個行, DEL 就是鍵盤上的 Backspace 鍵
M-d :剪切游標當前位置至詞結尾的內容
M-DEL :剪切游標當前位置至詞開頭的內容
M- :剪切游標所在的所有空白符
M-SPC :剪切游標所在的所有空白符,除了游標所在的位置
C-k :剪切游標當前位置至行尾
M-k :剪切當前的整個句
C-y :粘貼操作
一般在 Emacs 中,默認的選擇操作,需要使用 C-SPC 按鍵,但是通常在 Win 中,此按鍵與系統默認的切換輸入法的按鍵沖突,如果無法修改系統的按鍵,則可以修改 C-SPC 按鍵,在 Emacs 的啟動腳本中添加以下的語句:
(global-unset-key (kbd "C-SPC")) (global-set-key (kbd "M-SPC") 'set-mark-command)
以下以 M-SPC 作為默認的選擇命令:
M-SPC :以游標所在位置為起點,移動游標,所選區域被高亮選中
C-w :剪切高亮選中的區域
M-w :復制高亮選中的區域
C-y :粘貼高亮選中的區域
C-/ :撤銷操作
C-x u :作用同上
Emacs 具有多種查找方式。
增量查找 :通過按鍵 C-s 來執行增量查找,反復執行 C-s ,可逐個定位各個匹配點。
C-s :執行增量查找,輸入查找字元後,重復執行 C-s 可逐個定位匹配點,按鍵綁定的命令是 isearch-forward
C-r :執行增量查找,是從文檔的後端往前查找,重復執行 C-r 可逐個定位匹配點,按鍵綁定的命令是 isearch-backward
C-u C-s :按照正則表達式執行增量查找
Occur查找 :使用增量查找,若匹配點比較多,只能通過反復執行按鍵,逐個越過各個匹配點,才能定位到我們需要的匹配點,為了解決這個問題, Emacs 提供了 Occur 查找,執行後,可在 Occur 緩沖區列出一個匹配點的列表,可更加直觀地查看所有的匹配點。
M-s o :執行Occur查找
M-g n :定位到下一個匹配點
M-g p :定位到上一個匹配點
在 Occur 緩存區,可以執行的命令主要包括:
C-n :移動至下一行
C-p :移動至上一行
o :跳轉至匹配點,游標也移動至匹配點
C-o :跳轉至匹配點,但是游標還停留在 Occur 緩沖區
e :編輯當前的 Occur 緩沖區
C-c C-c :退出編輯 Occur 緩沖區
M-% :執行查找替換,該命令需要兩個輸入,即需要被替換的字元串,與替換後的字元串。輸入字元串後執行 RET , Emacs 會詢問是否確定執行替換操作,若輸入 ! ,則執行所有匹配點的替換,若輸入 yes ,則只執行當前游標所在的匹配點的替換。注意,輸入 % 可能需要執行 Shift 鍵
C-x 2 :將當前窗口切為上下兩個窗口,該按鍵綁定了命令 split-window-below
C-x 3 :將當前窗口切為左右兩個窗口,該按鍵綁定了命令 split-window-right
C-x o :在多個窗口之間切換,注意,按鍵中的是小寫字母 o ,該按鍵綁定了命令 other-window
C-x 1 :關閉其他的窗口,只保留當前游標所在的窗口
Emacs 具有一個內置的 Dired 模塊,是 Directory Editor 的簡稱,顧名思義,該模塊是對目錄進行管理編輯的模塊。
Dired 模塊的主要命令包括:
C-x d :選擇一個目錄,並在那個目錄上啟動 Dired
C-x C-f :選擇當前目錄下的某個目錄,並在那個目錄上啟動 Dired
在 Dired 目錄下可以執行:
n :向下移動一個
p :向上移動一個
C-s :使用增量查找,查詢 Dired 入口
C-x C-f :創建一個新的文件
f :打開游標所在的文件
e :作用同上
RET :作用同上
o :在另一個窗口上打開游標所在的文件
C-o :在另一個窗口上打開游標所在的文件,但是游標不會移動到新的窗口
v :以只讀的方式打開文件
^ :在新的Dired Buffer中打開父目錄
m :標識文件或者目錄入口
%m :標識那些名稱匹配正則表達式的文件
%g :標識那些內容匹配正則表達式的文件
C :拷貝文件(或者是 S-c ),拷貝的是當前游標所在的文件,或者已經標識的文件
R :移動文件(或者是 S-r ),移動的是當前游標所在的文件,或者已經標識的文件
H :創建一個硬鏈接(或者是 S-h )
S :創建一個符號鏈接(或者是 S-s )
M :改變文件的許可權位(或者是 S-m ),改變的文件是當前游標所在的文件,或者已經標識的文件
d :將文件打上刪除的標識
u :刪除文件已經打上的標識
x :確認並執行刪除已經打上刪除標識的文件
~ :給所有的 backup 文件打上標識
= :比較文件
3. Linux下常用文本處理命令
Linux下常用文本處理命令大全
Linux下面有很多經典的非常有用的命令,其中處理文本的命令就有很多。下面就讓我們一起看看這些經典的Linux文本處理命令有哪些吧。
一. sort
文件排序, 通常用在管道中當過濾器來使用. 這個命令可以依據指定的關鍵字或指定的字元位置, 對文件行進行排序. 使用-m選項, 它將會合並預排序的輸入文件. 想了解這個命令的全部參數請參考這個命令的info頁.
二. tsort
拓撲排序, 讀取以空格分隔的有序對, 並且依靠輸入模式進行排序.
三. uniq
這個過濾器將會刪除一個已排序文件中的重復行. 這個命令經常出現在sort命令的管道後邊.
四. expand, unexpand
expand命令將會把每個tab轉化為一個空格. 這個命令經常用在管道中.
unexpand命令將會把每個空格轉化為一個tab. 效果與expand命令相反.
五. cut
一個從文件中提取特定域的工具. 這個命令與awk中使用的print $N命令很相似, 但是更受限. 在腳本中使用cut命令會比使用awk命令來得容易一些. 最重要的選項就是-d(欄位定界符)和-f(域分隔符)選項.
六. paste
將多個文件, 以每個文件一列的形式合並到一個文件中, 合並後文件中的每一列就是原來的一個文件. 與cut結合使用, 經常用於創建系統log文件.
七. join
這個命令與paste命令屬於同類命令. 但是它能夠完成某些特殊的目地. 這個強力工具能夠以一種特殊的形式來合並兩個文件, 這種特殊的形式本質上就是一個關聯資料庫的簡單版本.
join命令只能夠操作兩個文件. 它可以將那些具有特定標記域(通常是一個數字標簽)的行合並起來, 並且將結果輸出到stdout. 被加入的文件應該事先根據標記域進行排序以便於能夠正確的匹配.
八. head
把文件的頭部內容列印到stdout上(默認為10行, 可以自己修改). 這個命令有一些比較有趣的選項.
九. tail
將一個文件結尾部分的內容輸出到stdout中(默認為10行). 通常用來跟蹤一個系統logfile的.修改情況, 如果使用-f選項的話, 這個命令將會繼續顯示添加到文件中的行.
十. wc
wc可以統計文件或I/O流中的”單詞數量”:
十一. fold
將輸入按照指定寬度進行折行. 這里有一個非常有用的選項-s, 這個選項可以使用空格進行斷行(譯者: 事實上只有外文才需要使用空格斷行, 中文是不需要的)(請參考例子 12-23和例子 A-1).
十二. fmt
一個簡單的文件格式器, 通常用在管道中, 將一個比較長的文本行輸出進行”折行”.
十三. col
這個命令用來濾除標准輸入的反向換行符號. 這個工具還可以將空白用等價的tab來替換. col工具最主要的應用還是從特定的文本處理工具中過濾輸出, 比如groff和tbl. (譯者: 主要用來將man頁轉化為文本.)
十四. column
列格式化工具. 通過在合適的位置插入tab, 這個過濾工具會將列類型的文本轉化為”易於列印”的表格式進行輸出.
十五. colrm
列刪除過濾器. 這個工具將會從文件中刪除指定的列(列中的字元串)並且寫到文件中, 如果指定的列不存在, 那麼就回到stdout. colrm 2 4 <filename將會刪除filename文件中每行的第2到第4列之間的所有字元. p=""> </filename將會刪除filename文件中每行的第2到第4列之間的所有字元.>
Caution: 如果這個文件包含tab和不可列印字元, 那將會引起不可預期的行為. 在這種情況下, 應該通過管道的手段使用expand和unexpand來預處理colrm.
十六. nl
計算行號過濾器. nl filename將會把filename文件的所有內容都輸出到stdout上, 但是會在每個非空行的前面加上連續的行號. 如果沒有filename參數, 那麼就操作stdin.
nl命令的輸出與cat -n非常相似, 然而, 默認情況下nl不會列出空行.
十七. pr
格式化列印過濾器. 這個命令會將文件(或stdout)分頁, 將它們分成合適的小塊以便於硬拷貝列印或者在屏幕上瀏覽. 使用這個命令的不同的參數可以完成好多任務, 比如對行和列的操作, 加入行, 設置頁邊, 計算行號, 添加頁眉, 合並文件等等. pr命令集合了許多命令的功能, 比如nl, paste, fold, column, 和expand.
pr -o 5 –width=65 fileZZZ | more 這個命令對fileZZZ進行了比較好的分頁, 並且列印到屏幕上. 文件的縮進被設置為5, 總寬度設置為65.
一個非常有用的選項-d, 強制隔行列印(與sed -G效果相同).
十八. gettext
GNU gettext包是專門用來將程序的輸出翻譯或者本地化為不同國家語言的工具集. 在最開始的時候僅僅支持C語言, 現在已經支持了相當數量的其它程序語言和腳本語言.
想要查看gettext程序如何在shell腳本中使用. 請參考info頁.
十九. msgfmt
一個產生二進制消息目錄的程序. 這個命令主要用來本地化.
二十. iconv
一個可以將文件轉化為不同編碼格式(字元集)的工具. 這個命令主要用來本地化.
二十一. recode
可以認為這個命令是上邊iconv命令的專業版本. 這個非常靈活的並可以把整個文件都轉換為不同編碼格式的工具並不是Linux標准安裝的一部分.
二十二. TeX, gs
TeX和Postscript都是文本標記語言, 用來對列印和格式化的視頻顯示進行預拷貝.
TeX是Donald Knuth精心製作的排版系統. 通常情況下, 通過編寫腳本的手段來把所有的選項和參數封裝起來一起傳到標記語言中是一件很方便的事情.