作為一個后端開發(fā)工程師,在Linux中查看查看文件內(nèi)容是基本操作了。尤其是通常要分析日志文件排查問題
          ,那么我們應該如何正確打開日志文件呢?對于筆者這種小菜雞來說,第一反應就是
          cat,tail,vi(或vim)了,是的,我曾經(jīng)用過好多次vim編輯器來查看日志文件。

          千萬不要使用vi命令來查看大文件內(nèi)容,
          尤其對于那些幾十G的大文件。因為vi僅僅是一個編輯器(可以理解為windows中的記事本),使用vi命令后則會把文件所有內(nèi)容加載到內(nèi)存中,如果內(nèi)存不夠大的話,則可能會導致服務器癱瘓。

          為了生成測試數(shù)據(jù),筆者抓心撓肝,東拼西湊,寫了一個生成測試文件的shell腳本,方便下文的命令演示,復制到linux命令行執(zhí)行即可。
          #?生成10行測試數(shù)據(jù)(可根據(jù)需求自行修改)
          for?((i=1;i?<=?10;?i++));
          ????do?
          ????????echo?"第$i行"?>>?test.txt
          ????????if?[[??`expr?$i?%?2`?-eq?0?]]
          ????????then
          ????????????echo?-e??>>?test.txt
          ????????fi
          ????done

          直接查看文件內(nèi)容

          查看整個文件的內(nèi)容的命令一共有三個,cat/tac/nl,nl命令筆者用的比較少,所以此處就不再演示了,感興趣的小伙伴可以去百度一哈。

          cat [-AbEnTv]

          選項與參數(shù):
          -A :相當于-vET的整合, 課列出一些特殊字符而不是空白而已
          -b :列出行號,進針對非空白行做行號顯示,空白行不會標記
          -E :將結(jié)尾換行符$顯示出來
          -n :打印出行號,連同空白行也會有行號,與-b的選項不同
          -T : 將[tab]鍵以^I顯示出來
          -v : 列出一些看不出來的特殊字符

          范例1:查看test.txt文件的內(nèi)容

          cat test.txt

          范例2:查看test.txt文件的內(nèi)容, 并展示行號

          cat -n test.txt

          范例3: 不推薦使用cat查看大文件

          cat -n test.txt

          cat僅僅適合查看行數(shù)比較少的文件, 如果文件比較大則沒有什么意義了,文件會快速翻到最后一行。如果文件中有特殊符號,比如[Tab],
          換行等要顯示出來,就必須加上-A之類的選項。當然cat也可以通過管道符配合more或less使用也可以達到比較好的效果。

          tac(和cat打印順序相反)


          tac學過之后筆者從來沒有實際應用過,由于用的比較少,所以大家知道就行了。不過這個命令比較有意思,和cat拼寫相反,所以他們的打印順序也相反,將最后一行作為第一行輸出。
          范例1:倒敘查看文件的內(nèi)容

          翻頁查看

          more

          more命令了解一下就行了,功能太少,筆者一般都用less命令。

          按鍵/命令
          空格鍵(Space):向下翻頁
          回車(Enter):向下翻行
          /字符串:在當前顯示的內(nèi)容(翻頁進度位置),向下查找這個字符串關(guān)鍵字
          :f:立刻顯示文件名以及目前位置的行號
          q: :退出當前文件的瀏覽
          b或ctrl+b:往回翻頁
          范例1:翻行后,查看行號

          less

          less命令比more更加有彈性,可以前后翻頁,不止可以向上查找,也可以向下查找。
          按鍵/命令
          [pagedown] :向下翻頁
          [pageup] :向上翻頁
          /字符串:在當前顯示的內(nèi)容(翻頁進度位置),向下查找這個字符串關(guān)鍵字
          ?字符串:向上查找字符串
          n :重復前一個查找,與/或?有關(guān), 比如前一個命令是?表示向上查找,此時n會向上查找
          N: 反向的重復前一個查找
          g :跳轉(zhuǎn)到當前文件數(shù)據(jù)的第一行
          G :跳轉(zhuǎn)到當前文件數(shù)據(jù)的最后一行
          q :退出當前文件的瀏覽

          范例演示


          數(shù)據(jù)截取

          head

          head命令用來提取文件的前n行,一般配合使用-n選項。當指定的行數(shù)為負數(shù)-x時,則會打印出除了后面x行的其他所有數(shù)據(jù)。
          范例1:查看前10行數(shù)據(jù)


          范例2(一共10000行,沒有空行):head -n -9989 test.txt




          tail

          從文件尾部截取數(shù)據(jù)。tail也是工作中最常用的命令,因為可以利用-f選項,一直刷新獲取文件尾部最新數(shù)據(jù)。

          選項與參數(shù)
          -n : 查看后n行數(shù)據(jù),注意當n后面值帶“+”號表示從第x行開始, 如 tail -n +1000 test.txt
          -f : 展示文件后面
          范例1:查看尾部5行數(shù)據(jù)【tail -n 5 test.txt】


          范例2:查看文件尾部數(shù)據(jù),并實時刷新數(shù)據(jù)


          范例3:查看文件尾部5行數(shù)據(jù),并實時刷新數(shù)據(jù)


          通用命令

          管道:Shell 還有一種功能,就是可以將兩個或者多個命令(程序或者進程)連接到一起,把一個命令的輸出作為下一個命令的輸入
          ,以這種方式連接的兩個或者多個命令就形成了管道(pipe),管道命令用"|"來表示。

          范例:查看ll命令輸出的前10行

          ll | head -n 3

          grep : 命令用于查找文件里符合條件的字符串,這兩個命令也是linux中最常用的的,而在查看日志文件也通常會結(jié)合這兩個命令一起使用。

          范例:查看文件文件中那些行包含‘999’

          cat -n test.txt | grep '999'

          >> : 文件追加重定向命令,可以往文件末尾追加數(shù)據(jù),正如上文 echo "第$i行" >> test.txt。

          范例:將一個文件的最后10行復制到helloworld.txt中

          tail -n 10 >> helloworld.txt

          wc:文件字節(jié)數(shù),字數(shù),行數(shù)查看wc [-clw] [文件...],
          -c或--bytes或--chars 只顯示Bytes數(shù)。
          -l或--lines 只顯示行數(shù)。
          -w或--words 只顯示字數(shù)。
          范例:查看文件行數(shù)
          wc -l

          案例實戰(zhàn)

          案例1:打印日志文件中第11到20行。
          思路:首先獲取前20行,然后在獲取20行的后10行即可,需要使用管道命令。
          head -n 20 text.txt | tail -n 10

          cat -n test.txt | head -n 20 | tail -n 10(如果需要行號)


          總結(jié)

          Linux的命令實在太多了,對于開發(fā)來講要用到的也有很多,不過筆者認為首先要知道是否存在相關(guān)命令,然后分類掌握最常用的,需要時再查表
          即可。沒有必要去糾結(jié)命令記不記得住,畢竟這些東西決定不了你的上限。

          除了以上命令外,Linux中還有許多查看日志文件內(nèi)容的奇巧淫記,比如sed命令等,那么在平時你最常使用的命令有哪些呢?歡迎寫伙伴們留(:

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                人人都爱看大香蕉操片 | 围产精品久久久久久久粉嫩 | 东北嫖老熟女一区二区视频网站 | 张慧敏陈丽的最裸体视频 | 久久久久久草莓香蕉步兵 |