自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

條條大道通羅馬,羅馬羅馬你在哪之調(diào)教命令行

系統(tǒng) Linux
你可能遇到一些棘手的問題,通過搜索得到想要的結(jié)果,但下次還是要通過搜索解決問題,這種低效的手段不是我們所想要的。典型的就是一個線上運維工程師,當(dāng)問題來臨時,不會給你留太多的現(xiàn)場學(xué)習(xí)時間。

 你可能遇到一些棘手的問題,通過搜索得到想要的結(jié)果,但下次還是要通過搜索解決問題,這種低效的手段不是我們所想要的。典型的就是一個線上運維工程師,當(dāng)問題來臨時,不會給你留太多的現(xiàn)場學(xué)習(xí)時間。

為了達(dá)到更高效的訓(xùn)練,我們要做兩件事情:第一,總結(jié)歸納;第二,觸類旁通。Linux的命令也是如此,一個問題,通常會有多種解決方式,要通過變化找出其中的共性。

這涉及到一些設(shè)計者對于規(guī)范約定俗成的遵守。一般的,你只需要掌握一小部分命令,然后對大批命令達(dá)到了解的程度,就可以在命令行的世界里游刃有余。舉個例子,你知道ls是列出文件目錄,你就會聯(lián)想到lscpu是列出cpu信息;lsmem是列出內(nèi)存信息;lsblk是磁盤信息等。這種共性很多,比如top系列,stat系列。

[[322554]]

 

1、輔助信息

1.1、文件格式

在Linux上工作,是非常非常排斥二進制這種格式的,幾乎什么都是可以讀寫的文本內(nèi)容。大多數(shù)命令生成的結(jié)果,也都是文本文件。這些文件有一些特點,通常列與列都是通過空格或者鍵分隔的。比如下面lsmem的結(jié)果,這種有規(guī)律的,有章可循的文件,是非常容易被處理的。

  1. [root@localhost ~]# lsmem 
  2. RANGE                                  SIZE  STATE REMOVABLE BLOCK 
  3. 0x0000000000000000-0x0000000007ffffff  128M online        no     0 
  4. 0x0000000008000000-0x000000000fffffff  128M online       yes     1 
  5. 0x0000000010000000-0x0000000017ffffff  128M online        no     2 
  6. 0x0000000018000000-0x0000000027ffffff  256M online       yes   3-4 
  7. 0x0000000028000000-0x000000004fffffff  640M online        no   5-9 
  8. 0x0000000050000000-0x000000005fffffff  256M online       yes 10-11 
  9. 0x0000000060000000-0x000000007fffffff  512M online        no 12-15 
  10.  
  11. Memory block size:       128M 
  12. Total online memory:       2G 
  13. Total offline memory:      0B 

有一大批針對于行操作的命令,同樣有一批針對于列操作的命令。然后,有兩個集大成者,叫做sed、awk。由于這兩個命令的內(nèi)容非常多,我們將其列為單獨的章節(jié)。

1.2、幫助信息

通常linux命令都十分簡單,但是有些還是有些復(fù)雜度的。比如find,ps這種命令,如果要照顧到所有的場合,可能需要非常巨大的篇幅。但是,萬一用到這種偏門的場合怎么辦?

全面了解一下是非常有必要的,以便在使用的時候能夠喚起記憶中最淺顯的印象。然后剩下的,就可以交給類似于man的這種命令了。Linux上的每一個命令,都會有配套的幫助文件,這遠(yuǎn)比網(wǎng)絡(luò)上那些轉(zhuǎn)來轉(zhuǎn)去的信息,正確的多。

正式介紹一下下面的兩個命令:

  • man 用來顯示某個命令的文檔信息。比如:man ls
  • info 你可以認(rèn)為和man是一樣的,雖然有一些能夠互補的內(nèi)容。它們會在內(nèi)容中進行提示的
  • --help 很多命令通過參數(shù)--help提供非常簡短的幫助信息。這通常是最有用最快捷的用例展示。如果你根本就記不住一個非常拗口的單詞,那就找找這些地方吧

注意:這些幫助信息,僅集中在命令的作用域本身。對于它的組合使用場景,并沒有過多信息。也就是說,它教會了你怎么用,但并沒有告訴你用它能夠來做什么。

這些幫助命令,一般會通過高亮關(guān)鍵字,增加閱讀的體驗。但我們可以更近一步,把幫助文件變成彩色的。在root用戶下,執(zhí)行下面的命令。然后,重新登錄虛擬機。

  1. cat >> ~/.bashrc <<EOF 
  2. function man() 
  3.     env \\ 
  4.     LESS_TERMCAP_mb=\$(printf "\e[1;31m") \\ 
  5.     LESS_TERMCAP_md=\$(printf "\e[1;31m") \\ 
  6.     LESS_TERMCAP_me=\$(printf "\e[0m") \\ 
  7.     LESS_TERMCAP_se=\$(printf "\e[0m") \\ 
  8.     LESS_TERMCAP_so=\$(printf "\e[1;44;33m") \\ 
  9.     LESS_TERMCAP_ue=\$(printf "\e[0m") \\ 
  10.     LESS_TERMCAP_us=\$(printf "\e[1;32m") \\ 
  11.     man "\$@"
  12. EOF 

再次執(zhí)行man命令,就可以看到彩色的信息了。

 

1.3、TAB補全

現(xiàn)在,在終端里,輸入ca,然后快速按2次鍵盤,命令行會進入補全模式,顯示以ca打頭的所有命令。

  1. [root@localhost ~]# ca 
  2. cacertdir_rehash     cache_dump           cache_repair         cache_writeback      ca-legacy            capsh                case                 catchsegv 
  3. cache_check          cache_metadata_size  cache_restore        cal                  caller               captoinfo            cat                  catman 

如果你對某個命令,只有模糊的印象,只記得前面的幾個字母,這個功能是極好的,命令范圍會一步步縮減。

2、正則表達(dá)式

為了開始下面的內(nèi)容,我們首先介紹一下正則表達(dá)式。在前面的一些命令中,也可以使用這些正則表達(dá)式,比如less、grep等。

有些書籍,能夠把正則表達(dá)式寫成一本書,我們這里僅作簡單的介紹,但足夠用了。一般的,正則表達(dá)式能用在匹配上,還能夠把匹配的內(nèi)容拿來做二次利用。關(guān)于后者,我們在sed命令中介紹。

標(biāo)志 意義  
^ 行首  
$ 行尾  
. 任意單個字符  
* 匹配0個或者多個前面的字符  
+ 1個或者多個匹配  
? 0個或者1個匹配  
{m} 前面的匹配重復(fù)m次  
{m,n} 前面的匹配重復(fù)m到n次  
[] 匹配一個指定范圍內(nèi)的字符  
[^] 匹配指定范圍外的任意單個字符  
\ 轉(zhuǎn)義字符  
[0-9] 匹配括號中的任何一個字符,or的作用  
` ` or,或者
\b 匹配一個單詞。比如\blucky\b 只匹配單詞lucky
 

使用下面的命令創(chuàng)建一個文件,我們練習(xí)一下grep命令加上E參數(shù)后的正則表現(xiàn)。

  1. cat > 996 <<EOF 
  2. 996: 996 is a funcking thing . which make woman as man , man as ass . 
  3. we all on the bus , bus bus on the way . 996 
  4. way to icu. icuuuuuu...... 
  5. The greedy green boss rides on the pity programmer 
  6. EOF 

在終端執(zhí)行下面命令,注意高亮的部分即為匹配到的字符串。

  1. # 匹配996開頭的行 
  2. [root@localhost ~]# cat 996 | grep -E ^996 
  3. 996: 996 is a funcking thing . which make woman as man , man as ass . 
  4.  
  5. # 匹配996結(jié)尾的行 
  6. [root@localhost ~]# cat 996 | grep -E 996$ 
  7. we all on the bus , bus bus on the way . 996 
  8.  
  9. # 匹配到icu和icuuuuuu 
  10. [root@localhost ~]# cat 996 | grep -E icu+ 
  11. way to icu. icuuuuuu...... 
  12.  
  13. # 再次匹配到996 
  14. [root@localhost ~]# cat 996 | grep -E [0-9] 
  15. 996: 996 is a funcking thing . which make woman as man , man as ass . 
  16. we all on the bus , bus bus on the way . 996 
  17.  
  18. [root@localhost ~]# cat 996 | grep -E ^[\^0-9] 
  19. we all on the bus , bus bus on the way . 996 
  20. way to icu. icuuuuuu...... 
  21. The greedy green boss rides on the pity programmer 
  22.  
  23. # 匹配所有不包含996的行,良心命令,淚奔 
  24. [root@localhost ~]# cat 996 | grep -E -v [0-9]{3} 
  25. way to icu. icuuuuuu...... 
  26. The greedy green boss rides on the pity programmer 
  27.  
  28. # 匹配boss和icu 
  29. [root@localhost ~]# cat 996 | grep -E boss\|icu 
  30. way to icu. icuuuuuu...... 
  31. The greedy green boss rides on the pity programmer 
  32.  
  33. # 匹配所有行 
  34. [root@localhost ~]# cat 996 | grep -E . 
  35. 996: 996 is a funcking thing . which make woman as man , man as ass . 
  36. we all on the bus , bus bus on the way . 996 
  37. way to icu. icuuuuuu...... 
  38. The greedy green boss rides on the pity programmer 

正則表達(dá)式非常的重要,在一些sed腳本中,awk腳本中,甚至是vim編輯器中,都會簡化你的操作。以上內(nèi)容應(yīng)該熟記,達(dá)到不需要查找文檔的地步。

3、小結(jié)

本小節(jié)是學(xué)習(xí)技巧方面的內(nèi)容,但我們依然接觸到一些硬核知識。這可能是除了正統(tǒng)的命令集合之外,最經(jīng)常被使用的技巧了。接下來,我們介紹了一些簡單的正則,這些正則可用用在很多命令中。我們還提供了一個把man命令變成彩色的小腳本,下面的文章中,會默認(rèn)你已經(jīng)把這一步給操作了。

彩色能夠增加閱讀效果(色盲除外)。

4、思考&擴展

1、回過頭去,執(zhí)行一下man cat,是否發(fā)現(xiàn)了一個叫做tac的命令?它是干什么的?

2、上面提到的stat系列,你能想象iostat大體是干什么用的么?

3、grep -v是什么意思?

4、了解一下和mv非常像的rename命令來批量修改文件,看能否使用上面的正則。

5、有些命令如果拼寫錯誤,如何快速修正?靠搜索么?了解一下fuck命令。我沒有說錯。

6、下面哪種寫法表示如果cmd1成功執(zhí)行,則執(zhí)行cmd2命令?

  • A. cmd1&&cmd2
  • B. cmd1|cmd2
  • C. cmd1;cmd2
  • D. cmd1||cmd2

End

咦?小王呢?

環(huán)顧四周,一片空空。別說羅馬,小王都不見了。

責(zé)任編輯:武曉燕 來源: 小姐姐味道
相關(guān)推薦

2012-11-27 13:56:40

解決方案云計算

2012-12-31 14:07:32

云計算SI開源軟件

2021-12-14 09:01:01

LeetCode整數(shù)羅馬數(shù)字

2021-12-15 09:00:53

LeetCode 羅馬數(shù)字整數(shù)

2010-11-03 11:10:11

職場

2011-10-26 10:40:06

海爾臺式機

2024-12-09 13:04:05

2020-08-04 07:02:00

TCPIP算法

2011-05-07 10:40:04

海爾轟天雷T60

2013-10-31 09:13:31

程序員生活

2013-04-27 10:56:01

2020-12-29 10:53:25

云遷移云端云平臺

2012-05-13 11:04:57

HTC

2011-01-14 17:50:50

Linux安裝方法

2017-11-01 12:25:04

華為

2009-09-17 10:00:17

2010-08-02 09:30:49

云計算

2016-12-08 13:33:24

意大利數(shù)據(jù)保護大數(shù)據(jù)

2013-03-14 16:25:46

命令行

2021-05-28 09:29:28

智能化索尼傳感器
點贊
收藏

51CTO技術(shù)棧公眾號