做爲一個後端開發工程師,在Linux中查看查看文件內容是基本操做了。尤爲是一般要分析日誌文件排查問題,那麼咱們應該如何正確打開日誌文件呢?對於筆者這種小菜雞來講,第一反應就是 cat,tail,vi(或vim)了,是的,我曾經用過好屢次vim編輯器來查看日誌文件。linux
千萬不要使用vi命令來查看大文件內容, 尤爲對於那些幾十G的大文件。由於vi僅僅是一個編輯器(能夠理解爲windows中的記事本),使用vi命令後則會把文件全部內容加載到內存中,若是內存不夠大的話,則可能會致使服務器癱瘓。web
爲了生成測試數據,筆者抓心撓肝,東拼西湊,寫了一個生成測試文件的shell腳本,方便下文的命令演示,複製到linux命令行執行便可。shell
# 生成10行測試數據(可根據需求自行修改)
for ((i=1;i <= 10; i++));
do
echo "第$i行" >> test.txt
if [[ `expr $i % 2` -eq 0 ]]
then
echo -e >> test.txt
fi
done
複製代碼
查看整個文件的內容的命令一共有三個,cat/tac/nl,nl命令筆者用的比較少,因此此處就再也不演示了,感興趣的小夥伴能夠去百度一哈。vim
cat [-AbEnTv]windows
選項與參數:
-A :至關於-vET的整合, 課列出一些特殊字符而不是空白而已
-b :列出行號,進針對非空白行作行號顯示,空白行不會標記
-E :將結尾換行符$顯示出來
-n :打印出行號,連同空白行也會有行號,與-b的選項不一樣
-T : 將[tab]鍵以^I顯示出來
-v : 列出一些看不出來的特殊字符後端
範例1:查看test.txt文件的內容bash
cat test.txt
服務器
範例2:查看test.txt文件的內容, 並展現行號app
cat -n test.txt
less
範例3: 不推薦使用cat查看大文件
cat -n test.txt
cat僅僅適合查看行數比較少的文件, 若是文件比較大則沒有什麼意義了,文件會快速翻到最後一行。若是文件中有特殊符號,好比[Tab], 換行等要顯示出來,就必須加上-A之類的選項。固然cat也能夠經過管道符配合more或less使用也能夠達到比較好的效果。
tac(和cat打印順序相反)
tac學過以後筆者歷來沒有實際應用過,因爲用的比較少,因此你們知道就好了。不過這個命令比較有意思,和cat拼寫相反,因此他們的打印順序也相反,將最後一行做爲第一行輸出。
範例1:倒敘查看文件的內容
more
more命令瞭解一下就好了,功能太少,筆者通常都用less命令。
按鍵/命令
空格鍵(Space):向下翻頁
回車(Enter):向下翻行
/字符串:在當前顯示的內容(翻頁進度位置),向下查找這個字符串關鍵字
:f:馬上顯示文件名以及目前位置的行號
q: :退出當前文件的瀏覽
b或ctrl+b:往回翻頁
範例1:翻行後,查看行號
less
less命令比more更加有彈性,能夠先後翻頁,不止能夠向上查找,也能夠向下查找。
按鍵/命令
[pagedown] :向下翻頁
[pageup] :向上翻頁
/字符串:在當前顯示的內容(翻頁進度位置),向下查找這個字符串關鍵字
?字符串:向上查找字符串
n :重複前一個查找,與/或?有關, 好比前一個命令是?表示向上查找,此時n會向上查找
N: 反向的重複前一個查找
g :跳轉到當前文件數據的第一行
G :跳轉到當前文件數據的最後一行
q :退出當前文件的瀏覽
範例演示
head
head命令用來提取文件的前n行,通常配合使用-n選項。當指定的行數爲負數-x時,則會打印出除了後面x行的其餘全部數據。
範例1:查看前10行數據
tail
從文件尾部截取數據。tail也是工做中最經常使用的命令,由於能夠利用-f選項,一直刷新獲取文件尾部最新數據。
選項與參數
-n : 查看後n行數據,注意當n後面值帶「+」號表示從第x行開始, 如 tail -n +1000 test.txt
-f : 展現文件後面
範例1:查看尾部5行數據【tail -n 5 test.txt】
範例2:查看文件尾部數據,並實時刷新數據
範例3:查看文件尾部5行數據,並實時刷新數據
管道:Shell 還有一種功能,就是能夠將兩個或者多個命令(程序或者進程)鏈接到一塊兒,把一個命令的輸出做爲下一個命令的輸入,以這種方式鏈接的兩個或者多個命令就造成了管道(pipe),管道命令用"|"來表示。
範例:查看ll命令輸出的前10行
ll | head -n 3
grep : 命令用於查找文件裏符合條件的字符串,這兩個命令也是linux中最經常使用的的,而在查看日誌文件也一般會結合這兩個命令一塊兒使用。
範例:查看文件文件中那些行包含‘999’
cat -n test.txt | grep '999'
>> : 文件追加劇定向命令,能夠往文件末尾追加數據,正如上文 echo "第$i行" >> test.txt
。
範例:將一個文件的最後10行復制到helloworld.txt中
tail -n 10 >> helloworld.txt
wc:文件字節數,字數,行數查看wc [-clw] [文件...]
,
-c或--bytes或--chars 只顯示Bytes數。
-l或--lines 只顯示行數。
-w或--words 只顯示字數。
範例:查看文件行數wc -l
案例1:打印日誌文件中第11到20行。
思路:首先獲取前20行,而後在獲取20行的後10行便可,須要使用管道命令。head -n 20 text.txt | tail -n 10
cat -n test.txt | head -n 20 | tail -n 10
(若是須要行號)
Linux的命令實在太多了,對於開發來說要用到的也有不少,不過筆者認爲首先要知道是否存在相關命令,而後分類掌握最經常使用的,須要時再查表便可。沒有必要去糾結命令記不記得住,畢竟這些東西決定不了你的上限。
除了以上命令外,Linux中還有許多查看日誌文件內容的奇巧淫記,好比sed命令等,那麼在平時你最常使用的命令有哪些呢?歡迎寫夥伴們留(: