日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

注意:為了方便代碼閱讀,文章代碼塊里把表示管理員模式的#都去掉了。這不是錯誤。不要搞錯!!

一、基本操作命令

首先先來幾個熱鍵,非常方便,一定要記住

Tab按鍵—命令補齊功能

Ctrl+c按鍵—停掉正在運行的程序

Ctrl+d按鍵—相當于exit,退出

Ctrl+l按鍵—清屏

1.1 關機和重啟

1.關機命令:shutdown

在linux領域內大多用在服務器上,很少遇到關機的操作。畢竟服務器上跑一個服務是永無止境的,除非特殊情況下,不得已才會關機。

正確的關機流程為:sync > shutdown > reboot > halt

例如你可以運行如下命令關機:

sync 將數據由內存同步到硬盤中。shutdown 關機指令,你可以man shutdown 來看一下幫助文檔。例如你可以運行如下命令關機:shutdown –h 10 ‘This server will shutdown after 10 mins’ 這個命令告訴大家,計算機將在10分鐘后關機,并且會顯示在登陸用戶的當前屏幕中。shutdown –h now 立馬關機shutdown –h 20:25 系統會在今天20:25關機shutdown –h +10 十分鐘后關機shutdown –r now 系統立馬重啟shutdown –r +10 系統十分鐘后重啟reboot 就是重啟,等同于 shutdown –r nowhalt 關閉系統,等同于shutdown –h now 和 poweroff

登錄后復制

下面是一個簡單的樣例。

取消定時關機命令:shutdown -c

最后總結一下,不管是重啟系統還是關閉系統,首先要運行 sync 命令,把內存中的數據寫到磁盤中。

關機的命令有 shutdown –h now halt poweroff init 0 , 重啟系統的命令有 shutdown –r now reboot init 6

2.重啟命令:reboot

1.2 幫助命令

–-help命令

shutdown --help:ifconfig --help:查看網卡信息

登錄后復制

man命令(命令說明書)

man shutdown注意:man shutdown 打開命令說明書之后,使用按鍵q退出

登錄后復制

二、目錄操作命令

我們知道Linux的目錄結構為樹狀結構,最頂級的目錄為根目錄 /。

其他目錄通過掛載可以將它們添加到樹中,通過解除掛載可以移除它們。

首先我們需要先知道什么是絕對路徑與相對路徑。

  • 絕對路徑:路徑的寫法,由根目錄 / 寫起,例如:/usr/share/doc 這個目錄。

  • 相對路徑:路徑的寫法,不是由 / 寫起,例如由/usr/share/doc 要到 /usr/share/man 底下時,可以寫成:cd ../man 這就是相對路徑的寫法啦!

    2.1 目錄切換 cd

    命令:cd 目錄

    cd是Change Directory的縮寫,這是用來變換工作目錄的命令。

    cd /        切換到根目錄cd /usr        切換到根目錄下的usr目錄cd ../        切換到上一級目錄 或者  cd ..cd ~        切換到home目錄cd -        切換到上次訪問的目錄

    登錄后復制

    2.2 目錄查看 ls [-al]

    命令:ls [-al]

    語法:

    ls [-aAdfFhilnrRSt] 目錄名稱ls [--color={never,auto,always}] 目錄名稱ls [--full-time] 目錄名稱

    登錄后復制

    ls 查看當前目錄下的所有目錄和文件ls -a 查看當前目錄下的所有目錄和文件(包括隱藏的文件)ls -l 或 ll 列表查看當前目錄下的所有目錄和文件(列表查看,顯示更多信息)ls /dir 查看指定目錄下的所有目錄和文件 如:ls /usr

    將家目錄下的所有文件列出來(含屬性與隱藏檔)

    ls -al ~

    登錄后復制

    2.3 目錄操作【增,刪,改,查】

    2.3.1 創建目錄【增】 mkdir

    如果想要創建新的目錄的話,那么就使用mkdir (make directory)吧。

    語法:

    mkdir [-mp] 目錄名稱

    登錄后復制

    選項與參數:

    • -m :配置文件的權限喔!直接配置,不需要看默認權限 (umask) 的臉色~

    • -p :幫助你直接將所需要的目錄(包含上一級目錄)遞歸創建起來!

      實例:請到/tmp底下嘗試創建數個新目錄看看:

      cd /tmp[root@www tmp] mkdir test    <==創建一名為 test 的新目錄[root@www tmp] mkdir test1/test2/test3/test4mkdir: cannot create directory `test1/test2/test3/test4': No such file or directory       <== 沒辦法直接創建此目錄啊![root@www tmp] mkdir -p test1/test2/test3/test4

      登錄后復制

      加了這個 -p 的選項,可以自行幫你創建多層目錄!

      實例:創建權限為 rwx–x—x 的目錄。

      [root@www tmp] mkdir -m 711 test2[root@www tmp] ls -ldrwxr-xr-x  3 root  root 4096 Jul 18 12:50 testdrwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

      登錄后復制

      上面的權限部分,如果沒有加上 -m 來強制配置屬性,系統會使用默認屬性。

      如果我們使用 -m ,如上例我們給予 -m 711 來給予新的目錄 drwx–x—x 的權限。

      2.3.2 刪除目錄或文件【刪】rm

       rm [-fir] 文件或目錄

      登錄后復制登錄后復制

      選項與參數:

      • -f :就是 force 的意思,忽略不存在的文件,不會出現警告信息;

      • -i :互動模式,在刪除前會詢問使用者是否動作

      • -r :遞歸刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!

        刪除文件:rm 文件 刪除當前目錄下的文件rm -f 文件 刪除當前目錄的的文件(不詢問)

        刪除目錄:rm -r aaa 遞歸刪除當前目錄下的aaa目錄rm -rf aaa 遞歸刪除當前目錄下的aaa目錄(不詢問)

        全部刪除:rm -rf 將當前目錄下的所有目錄和文件全部刪除rm -rf / 【慎用!慎用!慎用!】將根目錄下的所有文件全部刪除

        注意:rm不僅可以刪除目錄,也可以刪除其他文件或壓縮包,為了方便大家的記憶,無論刪除任何目錄或文件,都直接使用 rm -rf 目錄/文件/壓縮包

        rmdir (刪除空的目錄)

        語法:

         rmdir [-p] 目錄名稱

        登錄后復制

        選項與參數:

        • -p :連同上一級『空的』目錄也一起刪除

          刪除 runoob 目錄

          [root@www tmp] rmdir runoob

          登錄后復制

          將 mkdir 實例中創建的目錄(/tmp 底下)刪除掉!

          [root@www tmp] ls -l   <==看看有多少目錄存在?drwxr-xr-x  3 root  root 4096 Jul 18 12:50 testdrwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1drwx--x--x  2 root  root 4096 Jul 18 12:54 test2[root@www tmp] rmdir test   <==可直接刪除掉,沒問題[root@www tmp] rmdir test1  <==因為尚有內容,所以無法刪除!rmdir: `test1': Directory not empty[root@www tmp] rmdir -p test1/test2/test3/test4[root@www tmp] ls -l        <==您看看,底下的輸出中test與test1不見了!drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

          登錄后復制

          利用 -p 這個選項,立刻就可以將 test1/test2/test3/test4 一次刪除。

          不過要注意的是,這個 rmdir 僅能刪除空的目錄,你可以使用 rm 命令來刪除非空目錄。

          2.3.3 目錄修改【改】mv 和 cp

          mv (移動文件與目錄,或修改名稱)

          語法:

          [root@www ~] mv [-fiu] source destination[root@www ~] mv [options] source1 source2 source3 .... directory

          登錄后復制

          選項與參數:

          • -f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;

          • -i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!

          • -u :若目標文件已經存在,且 source 比較新,才會升級 (update)

            cp (復制文件或目錄)

            cp 即拷貝文件和目錄。

            語法:

            [root@www ~] cp [-adfilprsu] 來源檔(source) 目標檔(destination)[root@www ~] cp [options] source1 source2 source3 .... directory

            登錄后復制

            選項與參數:

            • -a:相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)

            • -d:若來源檔為連結檔的屬性(link file),則復制連結檔屬性而非文件本身;

            • -f:為強制(force)的意思,若目標文件已經存在且無法開啟,則移除后再嘗試一次;

            • -i:若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)

            • -l:進行硬式連結(hard link)的連結檔創建,而非復制文件本身;

            • -p:連同文件的屬性一起復制過去,而非使用默認屬性(備份常用);

            • -r:遞歸持續復制,用於目錄的復制行為;(常用)

            • -s:復制成為符號連結檔 (symbolic link),亦即『捷徑』文件;

            • -u:若 destination 比 source 舊才升級 destination !

              一、重命名目錄命令:mv 當前目錄 新目錄例如:mv aaa bbb 將目錄aaa改為bbb注意:mv的語法不僅可以對目錄進行重命名而且也可以對各種文件,壓縮包等進行 重命名的操作

              二、剪切目錄命令:mv 目錄名稱 目錄的新位置示例:將/usr/tmp目錄下的aaa目錄剪切到 /usr目錄下面 mv /usr/tmp/aaa /usr注意:mv語法不僅可以對目錄進行剪切操作,對文件和壓縮包等都可執行剪切操作

              三、拷貝目錄命令:cp -r 目錄名稱 目錄拷貝的目標位置 -r代表遞歸示例:將/usr/tmp目錄下的aaa目錄復制到 /usr目錄下面 cp /usr/tmp/aaa /usr注意:cp命令不僅可以拷貝目錄還可以拷貝文件,壓縮包等,拷貝文件和壓縮包時不 用寫-r遞歸

              2.3.4 搜索目錄【查】find

              Linux find 命令用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則 find 命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。

              find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

              登錄后復制

              命令:find 目錄 參數 文件名稱

              部分參數:

              find 根據下列規則判斷 path 和 expression,在命令列上第一個 – ( ) , ! 之前的部份為 path,之后的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預設 expression。

              expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。

              -mount, -xdev : 只檢查和指定目錄在同一個文件系統下的文件,避免列出其它文件系統中的文件

              -amin n : 在過去 n 分鐘內被讀取過

              -anewer file : 比文件 file 更晚被讀取過的文件

              -atime n : 在過去n天內被讀取過的文件

              -cmin n : 在過去 n 分鐘內被修改過

              -cnewer file :比文件 file 更新的文件

              -ctime n : 在過去n天內被修改過的文件

              實例

              將目前目錄及其子目錄下所有延伸檔名是 c 的文件列出來。

              find . -name "*.c"

              登錄后復制

              將目前目錄其其下子目錄中所有一般文件列出

              find . -type f

              登錄后復制

              將目前目錄及其子目錄下所有最近 20 天內更新過的文件列出

              find . -ctime -20

              登錄后復制

              2.4 當前目錄顯示 pwd

              pwd (顯示目前所在的目錄)

              pwd 是 Print Working Directory 的縮寫,也就是顯示目前所在目錄的命令。

              [root@www ~] pwd [-P]

              登錄后復制

              選項與參數:

              • -P :顯示出確實的路徑,而非使用連結 (link) 路徑。

                實例:單純顯示出目前的工作目錄:

                [root@www ~] pwd/root   <== 顯示出目錄啦~

                登錄后復制

                實例顯示出實際的工作目錄,而非連結檔本身的目錄名而已。

                [root@www ~] cd /var/mail   <==注意,/var/mail是一個連結檔[root@www mail] pwd/var/mail         <==列出目前的工作目錄[root@www mail] pwd -P/var/spool/mail   <==怎么回事?有沒有加 -P 差很多~[root@www mail] ls -ld /var/maillrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail# 看到這里應該知道為啥了吧?因為 /var/mail 是連結檔,連結到 /var/spool/mail # 所以,加上 pwd -P 的選項后,會不以連結檔的數據顯示,而是顯示正確的完整路徑啊!

                登錄后復制

                三、文件操作命令

                3.1 文件操作【增,刪,改,查】

                3.1.1 新建文件【增】touch

                Linux touch命令用于修改文件或者目錄的時間屬性,包括存取時間和更改時間。若文件不存在,系統會建立一個新的文件。

                ls -l 可以顯示檔案的時間記錄。

                語法

                touch [-acfm][-d<日期時間>][-r<參考文件或目錄>] [-t<日期時間>][--help][--version][文件或目錄…]

                登錄后復制

                • 參數說明

                • a 改變檔案的讀取時間記錄。

                • m 改變檔案的修改時間記錄。

                • c 假如目的檔案不存在,不會建立新的檔案。與 —no-create 的效果一樣。

                • f 不使用,是為了與其他 unix 系統的相容性而保留。

                • r 使用參考檔的時間記錄,與 —file 的效果一樣。

                • d 設定時間與日期,可以使用各種不同的格式。

                • t 設定檔案的時間記錄,格式與 date 指令相同。

                • –no-create 不會建立新檔案。

                • –help 列出指令格式。

                • –version 列出版本訊息。

                  實例

                  使用指令”touch”修改文件”testfile”的時間屬性為當前系統時間,輸入如下命令:

                  $ touch testfile                #修改文件的時間屬性

                  登錄后復制

                  首先,使用ls命令查看testfile文件的屬性,如下所示:

                  $ ls -l testfile                #查看文件的時間屬性  #原來文件的修改時間為16:09  -rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile

                  登錄后復制

                  執行指令”touch”修改文件屬性以后,并再次查看該文件的時間屬性,如下所示:

                  $ touch testfile                #修改文件時間屬性為當前系統時間  $ ls -l testfile                #查看文件的時間屬性  #修改后文件的時間屬性為當前系統時間  -rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile

                  登錄后復制

                  使用指令”touch”時,如果指定的文件不存在,則將創建一個新的空白文件。例如,在當前目錄下,使用該指令創建一個空白文件”file”,輸入如下命令:

                  $ touch file            #創建一個名為“file”的新的空白文件

                  登錄后復制

                  3.1.2 刪除文件 【刪】 rm

                  rm (移除文件或目錄)

                  語法:

                   rm [-fir] 文件或目錄

                  登錄后復制登錄后復制

                  選項與參數:

                  • -f :就是 force 的意思,忽略不存在的文件,不會出現警告信息;

                  • -i :互動模式,在刪除前會詢問使用者是否動作

                  • -r :遞歸刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!

                    將創建的 bashrc 刪除掉!

                    [root@www tmp]# rm -i bashrcrm: remove regular file `bashrc'? y

                    登錄后復制

                    如果加上 -i 的選項就會主動詢問喔,避免你刪除到錯誤的檔名!

                    3.1.3 修改文件【改】 vi或vim

                    先來個vim鍵盤圖!

                    vi/vim 的使用

                    基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode)輸入模式(Insert mode) 底線命令模式(Last line mode)。這三種模式的作用分別是:

                    3.1.3.1 命令模式:

                    用戶剛剛啟動 vi/vim,便進入了命令模式。

                    此狀態下敲擊鍵盤動作會被Vim識別為命令,而非輸入字符。比如我們此時按下i,并不會輸入一個字符,i被當作了一個命令。

                    以下是常用的幾個命令:

                    • i 切換到輸入模式,以輸入字符。

                    • x 刪除當前光標所在處的字符。

                    • : 切換到底線命令模式,以在最底一行輸入命令。

                      若想要編輯文本:啟動Vim,進入了命令模式,按下i,切換到輸入模式。

                      命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。

                      3.1.3.2 輸入模式

                      在命令模式下按下i就進入了輸入模式。

                      在輸入模式中,可以使用以下按鍵:

                      • 字符按鍵以及Shift組合,輸入字符

                      • ENTER,回車鍵,換行

                      • BACK SPACE,退格鍵,刪除光標前一個字符

                      • DEL,刪除鍵,刪除光標后一個字符

                      • 方向鍵,在文本中移動光標

                      • HOME/END,移動光標到行首/行尾

                      • Page Up/Page Down,上/下翻頁

                      • Insert,切換光標為輸入/替換模式,光標將變成豎線/下劃線

                      • ESC,退出輸入模式,切換到命令模式

                        3.1.3.4 底線命令模式

                        在命令模式下按下:(英文冒號)就進入了底線命令模式。

                        底線命令模式可以輸入單個或多個字符的命令,可用的命令非常多。

                        在底線命令模式中,基本的命令有(已經省略了冒號):

                        • q 退出程序

                        • w 保存文件

                          按ESC鍵可隨時退出底線命令模式。

                          簡單的說,我們可以將這三個模式想成底下的圖標來表示:

                          打開文件

                          命令:vi 文件名示例:打開當前目錄下的aa.txt文件 vi aa.txt 或者 vim aa.txt

                          注意:使用vi編輯器打開文件后,并不能編輯,因為此時處于命令模式,點擊鍵盤i/a/o進入編輯模式。

                          編輯文件

                          使用vi編輯器打開文件后點擊按鍵:i ,a或者o即可進入編輯模式。

                          i:在光標所在字符前開始插入a:在光標所在字符后開始插入o:在光標所在行的下面另起一新行插入

                          保存或者取消編輯

                          保存文件:

                          第一步:ESC 進入命令行模式第二步:: 進入底行模式第三步:wq 保存并退出編輯

                          取消編輯:

                          第一步:ESC 進入命令行模式第二步:: 進入底行模式第三步:q! 撤銷本次修改并退出編輯

                          3.1.4 文件的查看【查】

                          Linux系統中使用以下命令來查看文件的內容:

                          • cat 由第一行開始顯示文件內容

                          • tac 從最后一行開始顯示,可以看出 tac 是 cat 的倒著寫!

                          • nl 顯示的時候,順道輸出行號!

                          • more 一頁一頁的顯示文件內容

                          • less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!

                          • head 只看頭幾行

                          • tail 只看尾巴幾行

                            你可以使用 man [命令]來查看各個命令的使用文檔,如 :man cp。

                            3.1.4.1 cat

                            由第一行開始顯示文件內容

                            語法:

                            cat [-AbEnTv]

                            登錄后復制

                            選項與參數:

                            • -A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;

                            • -b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!

                            • -E :將結尾的斷行字節 $ 顯示出來;

                            • -n :列印出行號,連同空白行也會有行號,與 -b 的選項不同;

                            • -T :將 [tab] 按鍵以 ^I 顯示出來;

                            • -v :列出一些看不出來的特殊字符

                              檢看 /etc/issue 這個文件的內容:

                              [root@www ~] cat /etc/issueCentOS release 6.4 (Final)Kernel \r on an \m

                              登錄后復制

                              3.1.3.2 tac

                              tac與cat命令剛好相反,文件內容從最后一行開始顯示,可以看出 tac 是 cat 的倒著寫!如:

                              [root@www ~] tac /etc/issueKernel \r on an \mCentOS release 6.4 (Final)

                              登錄后復制

                              3.1.3.3 nl

                              顯示行號

                              語法:

                              nl [-bnw] 文件

                              登錄后復制

                              選項與參數:

                              • -b :指定行號指定的方式,主要有兩種:-b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);-b t :如果有空行,空的那一行不要列出行號(默認值);

                              • -n :列出行號表示的方法,主要有三種:-n ln :行號在熒幕的最左方顯示;-n rn :行號在自己欄位的最右方顯示,且不加 0 ;-n rz :行號在自己欄位的最右方顯示,且加 0 ;

                              • -w :行號欄位的占用的位數。

                                實例一:用 nl 列出 /etc/issue 的內容

                                牛逼啊!接私活必備的 N 個開源項目!趕快收藏吧

                                登錄后復制

                                [root@www ~] nl /etc/issue     1  CentOS release 6.4 (Final)     2  Kernel \r on an \m123

                                登錄后復制

                                3.1.3.5 more

                                一頁一頁翻動

                                [root@www ~] more /etc/man_db.config ## Generated automatically from man.conf.in by the# configure script.## man.conf from man-1.6d....(中間省略)....--More--(28%)  <== 重點在這一行喔!你的光標也會在這里等待你的命令

                                登錄后復制

                                在 more 這個程序的運行過程中,你有幾個按鍵可以按的:

                                • 空白鍵 (space):代表向下翻一頁;

                                • Enter :代表向下翻『一行』;

                                • /字串 :代表在這個顯示的內容當中,向下搜尋『字串』這個關鍵字;

                                • :f :立刻顯示出檔名以及目前顯示的行數;

                                • q :代表立刻離開 more ,不再顯示該文件內容。

                                • b 或 [ctrl]-b :代表往回翻頁,不過這動作只對文件有用,對管線無用。

                                  3.1.3.6 less

                                  一頁一頁翻動,以下實例輸出/etc/man.config文件的內容:

                                  [root@www ~] less /etc/man.config## Generated automatically from man.conf.in by the# configure script.## man.conf from man-1.6d....(中間省略)....:   <== 這里可以等待你輸入命令!

                                  登錄后復制

                                  less運行時可以輸入的命令有:

                                  • 空白鍵 :向下翻動一頁;

                                  • [pagedown]:向下翻動一頁;

                                  • [pageup] :向上翻動一頁;

                                  • /字串 :向下搜尋『字串』的功能;

                                  • ?字串 :向上搜尋『字串』的功能;

                                  • n :重復前一個搜尋 (與 / 或 ? 有關!)

                                  • N :反向的重復前一個搜尋 (與 / 或 ? 有關!)

                                  • q :離開 less 這個程序;

                                    3.1.3.7 head

                                    取出文件前面幾行

                                    語法:

                                    head [-n number] 文件

                                    登錄后復制

                                    選項與參數:

                                    • -n :后面接數字,代表顯示幾行的意思

                                      [root@www ~] head /etc/man.config

                                      登錄后復制

                                      默認的情況中,顯示前面 10 行!若要顯示前 20 行,就得要這樣:

                                      [root@www ~] head -n 20 /etc/man.config

                                      登錄后復制

                                      3.1.3.8 tail

                                      取出文件后面幾行

                                      語法:

                                      tail [-n number] 文件

                                      登錄后復制

                                      選項與參數:

                                      • -n :后面接數字,代表顯示幾行的意思

                                      • -f :表示持續偵測后面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測

                                        [root@www ~] tail /etc/man.config# 默認的情況中,顯示最后的十行!若要顯示最后的 20 行,就得要這樣:[root@www ~] tail -n 20 /etc/man.config

                                        登錄后復制

                                        3.2 權限修改

                                        Linux/Unix 的文件調用權限分為三級 : 文件擁有者、群組、其他。利用 chmod 可以藉以控制文件如何被他人所調用。

                                        使用權限 : 所有使用者

                                        語法

                                        chmod [-cfvR] [--help] [--version] mode file...

                                        登錄后復制

                                        參數說明

                                        mode : 權限設定字串,格式如下 :

                                        [ugoa...][[+-=][rwxX]...][,...]

                                        登錄后復制

                                        其中:

                                        • u 表示該文件的擁有者,g 表示與該文件的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。

                                        • + 表示增加權限、- 表示取消權限、= 表示唯一設定權限。

                                        • r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該文件是個子目錄或者該文件已經被設定過為可執行。

                                          其他參數說明:

                                          • -c : 若該文件權限確實已經更改,才顯示其更改動作

                                          • -f : 若該文件權限無法被更改也不要顯示錯誤訊息

                                          • -v : 顯示權限變更的詳細資料

                                          • -R : 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞回的方式逐個變更)

                                          • –help : 顯示輔助說明

                                          • –version : 顯示版本

                                            權限的設定方法有兩種, 分別可以使用數字或者是符號來進行權限的變更。

                                            數字類型改變檔案權限:

                                            符號類型改變檔案權限:

                                            四、壓縮文件操作

                                            Linux 常用的壓縮與解壓縮命令有:tar、gzip、gunzip、bzip2、bunzip2、compress 、uncompress、 zip、 unzip、rar、unrar 等。

                                            4.1 打包和壓縮和解壓

                                            Windows的壓縮文件的擴展名 .zip/.rarlinux中的打包文件:aa.tarlinux中的壓縮文件:bb.gzlinux中打包并壓縮的文件:.tar.gz

                                            Linux中的打包文件一般是以.tar結尾的,壓縮的命令一般是以.gz結尾的。而一般情況下打包和壓縮是一起進行的,打包并壓縮后的文件的后綴名一般.tar.gz。

                                            4.1.1 tar

                                            最常用的打包命令是 tar,使用 tar 程序打出來的包我們常稱為 tar 包,tar 包文件的命令通常都是以 .tar 結尾的。生成 tar 包后,就可以用其它的程序來進行壓縮了,所以首先就來講講 tar 命令的基本用法。

                                            tar 命令的選項有很多(用 man tar 可以查看到),但常用的就那么幾個選項,下面來舉例說明一下:

                                             tar -cf all.tar *.jpg

                                            登錄后復制

                                            這條命令是將所有 .jpg 的文件打成一個名為 all.tar 的包。-c 是表示產生新的包,-f 指定包的文件名。

                                             tar -rf all.tar *.gif

                                            登錄后復制登錄后復制

                                            這條命令是將所有 .gif 的文件增加到 all.tar 的包里面去,-r 是表示增加文件的意思。

                                             tar -uf all.tar logo.gif

                                            登錄后復制登錄后復制

                                            這條命令是更新原來 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思。

                                             tar -tf all.tar

                                            登錄后復制登錄后復制

                                            這條命令是列出 all.tar 包中所有文件,-t 是列出文件的意思。

                                             tar -xf all.tar

                                            登錄后復制登錄后復制

                                            這條命令是解出 all.tar 包中所有文件,-x 是解開的意思。

                                            以上就是 tar 的最基本的用法。為了方便用戶在打包解包的同時可以壓縮或解壓文件,tar 提供了一種特殊的功能。這就是 tar 可以在打包或解包的同時調用其它的壓縮程序,比如調用 gzip、bzip2 等。

                                            4.1.1.1 tar調用

                                            gzip 是 GNU 組織開發的一個壓縮程序,.gz 結尾的文件就是 gzip 壓縮的結果。與 gzip 相對的解壓程序是 gunzip。tar 中使用 -z 這個參數來調用gzip。下面來舉例說明一下:

                                             tar -czf all.tar.gz *.jpg

                                            登錄后復制

                                            這條命令是將所有 .jpg 的文件打成一個 tar 包,并且將其用 gzip 壓縮,生成一個 gzip 壓縮過的包,包名為 all.tar.gz。

                                             tar -xzf all.tar.gz

                                            登錄后復制

                                            這條命令是將上面產生的包解開。

                                            4.1.1.2 tar 調用 bzip2

                                            bzip2 是一個壓縮能力更強的壓縮程序,.bz2 結尾的文件就是 bzip2 壓縮的結果。

                                            與 bzip2 相對的解壓程序是 bunzip2。tar 中使用 -j 這個參數來調用 gzip。下面來舉例說明一下:

                                             tar -cjf all.tar.bz2 *.jpg

                                            登錄后復制

                                            這條命令是將所有 .jpg 的文件打成一個 tar 包,并且將其用 bzip2 壓縮,生成一個 bzip2 壓縮過的包,包名為 all.tar.bz2

                                             tar -xjf all.tar.bz2

                                            登錄后復制

                                            這條命令是將上面產生的包解開。

                                            4.1.1.3 tar 調用 compress

                                            compress 也是一個壓縮程序,但是好象使用 compress 的人不如 gzip 和 bzip2 的人多。.Z 結尾的文件就是 bzip2 壓縮的結果。與 compress 相對的解壓程序是 uncompress。tar 中使用 -Z 這個參數來調用 compress。下面來舉例說明一下:

                                             tar -cZf all.tar.Z *.jpg

                                            登錄后復制

                                            這條命令是將所有 .jpg 的文件打成一個 tar 包,并且將其用 compress 壓縮,生成一個 uncompress 壓縮過的包,包名為 all.tar.Z。

                                             tar -xZf all.tar.Z

                                            登錄后復制

                                            這條命令是將上面產生的包解開。

                                            有了上面的知識,你應該可以解開多種壓縮文件了,下面對于 tar 系列的壓縮文件作一個小結:

                                            1) 對于.tar結尾的文件

                                            tar -xf all.tar

                                            登錄后復制

                                            2) 對于 .gz 結尾的文件

                                            gzip -d all.gzgunzip all.gz

                                            登錄后復制

                                            3)對于 .tgz 或 .tar.gz 結尾的文件

                                            tar -xzf all.tar.gztar -xzf all.tgz

                                            登錄后復制

                                            4) 對于 .bz2 結尾的文件

                                            bzip2 -d all.bz2bunzip2 all.bz2

                                            登錄后復制

                                            5) 對于 tar.bz2 結尾的文件

                                            tar -xjf all.tar.bz2

                                            登錄后復制

                                            6) 對于 .Z 結尾的文件

                                            uncompress all.Z

                                            登錄后復制

                                            7) 對于 .tar.Z 結尾的文件

                                            tar -xZf all.tar.z

                                            登錄后復制

                                            另外對于 Windows 下的常見壓縮文件 .zip 和 .rar,Linux 也有相應的方法來解壓它們:

                                            1) 對于 .zip

                                            linux 下提供了 zip 和 unzip 程序,zip 是壓縮程序,unzip 是解壓程序。它們的參數選項很多,這里只做簡單介紹,依舊舉例說明一下其用法:

                                             zip all.zip *.jpg

                                            登錄后復制

                                            這條命令是將所有 .jpg 的文件壓縮成一個 zip 包:

                                             unzip all.zip

                                            登錄后復制

                                            這條命令是將 all.zip 中的所有文件解壓出來。

                                            2) 對于 .rar

                                            要在 linux 下處理 .rar 文件,需要安裝 RAR for Linux。下載地址:http://www.rarsoft.com/download.htm,下載后安裝即可。

                                             tar -xzpvf rarlinux-x64-5.6.b5.tar.gz cd rar  make

                                            登錄后復制

                                            這樣就安裝好了,安裝后就有了 rar 和 unrar 這兩個程序,rar 是壓縮程序,unrar 是解壓程序。它們的參數選項很多,這里只做簡單介紹,依舊舉例說明一下其用法:

                                             rar a all *.jpg

                                            登錄后復制

                                            這條命令是將所有 .jpg 的文件壓縮成一個 rar 包,名為 all.rar,該程序會將 .rar 擴展名將自動附加到包名后。

                                             unrar e all.rar

                                            登錄后復制

                                            這條命令是將 all.rar 中的所有文件解壓出來

                                            4.2 擴展內容

                                            tar

                                            -c: 建立壓縮檔案 -x:解壓 -t:查看內容 shell-r:向壓縮歸檔文件末尾追加文件 -u:更新原壓縮包中的文件

                                            登錄后復制

                                            這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下面的參數是根據需要在壓縮或解壓檔案時可選的。

                                            -z:有gzip屬性的 -j:有bz2屬性的 -Z:有compress屬性的 -v:顯示所有過程 -O:將文件解開到標準輸出

                                            登錄后復制

                                            下面的參數 -f 是必須的:

                                            -f: 使用檔案名字,切記,這個參數是最后一個參數,后面只能接檔案名。

                                            登錄后復制

                                            # tar -cf all.tar *.jpg

                                            這條命令是將所有 .jpg 的文件打成一個名為 all.tar 的包。-c 是表示產生新的包,-f 指定包的文件名。

                                             tar -rf all.tar *.gif

                                            登錄后復制登錄后復制

                                            這條命令是將所有 .gif 的文件增加到 all.tar 的包里面去。-r 是表示增加文件的意思。

                                             tar -uf all.tar logo.gif

                                            登錄后復制登錄后復制

                                            這條命令是更新原來 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思。

                                             tar -tf all.tar

                                            登錄后復制登錄后復制

                                            這條命令是列出 all.tar 包中所有文件,-t 是列出文件的意思。

                                             tar -xf all.tar

                                            登錄后復制登錄后復制

                                            這條命令是解出 all.tar 包中所有文件,-x 是解開的意思。

                                            壓縮

                                            tar –cvf jpg.tar *.jpg       // 將目錄里所有jpg文件打包成 tar.jpg tar –czf jpg.tar.gz *.jpg    // 將目錄里所有jpg文件打包成 jpg.tar 后,并且將其用 gzip 壓縮,生成一個 gzip 壓縮過的包,命名為 jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg   // 將目錄里所有jpg文件打包成 jpg.tar 后,并且將其用 bzip2 壓縮,生成一個 bzip2 壓縮過的包,命名為jpg.tar.bz2 tar –cZf jpg.tar.Z *.jpg     // 將目錄里所有 jpg 文件打包成 jpg.tar 后,并且將其用 compress 壓縮,生成一個 umcompress 壓縮過的包,命名為jpg.tar.Z rar a jpg.rar *.jpg          // rar格式的壓縮,需要先下載 rar for linux zip jpg.zip *.jpg            // zip格式的壓縮,需要先下載 zip for linux

                                            登錄后復制

                                            解壓

                                            tar –xvf file.tar         // 解壓 tar 包 tar -xzvf file.tar.gz     // 解壓 tar.gz tar -xjvf file.tar.bz2    // 解壓 tar.bz2 tar –xZvf file.tar.Z      // 解壓 tar.Z unrar e file.rar          // 解壓 rar unzip file.zip            // 解壓 zip

                                            登錄后復制

                                            總結

                                            1、*.tar 用 tar –xvf 解壓 2、*.gz 用 gzip -d或者gunzip 解壓 3、*.tar.gz和*.tgz 用 tar –xzf 解壓 4、*.bz2 用 bzip2 -d或者用bunzip2 解壓 5、*.tar.bz2用tar –xjf 解壓 6、*.Z 用 uncompress 解壓 7、*.tar.Z 用tar –xZf 解壓 8、*.rar 用 unrar e解壓 9、*.zip 用 unzip 解壓

                                            登錄后復制

                                            五、查找命令

                                            5.1 grep

                                            grep命令是一種強大的文本搜索工具

                                            使用實例:

                                            ps -ef | grep sshd  查找指定ssh服務進程 ps -ef | grep sshd | grep -v grep 查找指定服務進程,排除gerp身 ps -ef | grep sshd -c 查找指定進程個數

                                            登錄后復制

                                            從文件內容查找匹配指定字符串的行:

                                            $ grep "被查找的字符串" 文件名

                                            登錄后復制

                                            例子:在當前目錄里第一級文件夾中尋找包含指定字符串的 .in 文件

                                            grep "thermcontact" /.in

                                            登錄后復制

                                            從文件內容查找與正則表達式匹配的行:

                                            $ grep –e "正則表達式" 文件名

                                            登錄后復制

                                            查找時不區分大小寫:

                                            $ grep –i "被查找的字符串" 文件名

                                            登錄后復制

                                            查找匹配的行數:

                                            $ grep -c “被查找的字符串” 文件名

                                            從文件內容查找不匹配指定字符串的行:

                                            $ grep –v "被查找的字符串" 文件名

                                            登錄后復制

                                            5.2 find

                                            find命令在目錄結構中搜索文件,并對搜索結果執行指定的操作。

                                            find 默認搜索當前目錄及其子目錄,并且不過濾任何結果(也就是返回所有文件),將它們全都顯示在屏幕上。另外,搜索公眾號編程技術圈后臺回復“1024”,獲取一份驚喜禮包。

                                            使用實例:

                                            find . -name "*.log" -ls  在當前目錄查找以.log結尾的文件,并顯示詳細信息。find /root/ -perm 600   查找/root/目錄下權限為600的文件 find . -type f -name "*.log"  查找當目錄,以.log結尾的普通文件 find . -type d | sort   查找當前所有目錄并排序 find . -size +100M  查找當前目錄大于100M的文件

                                            登錄后復制

                                            從根目錄開始查找所有擴展名為 .log 的文本文件,并找出包含 “ERROR” 的行:

                                            $ find / -type f -name "*.log" | xargs grep "ERROR"

                                            登錄后復制

                                            例子:從當前目錄開始查找所有擴展名為 .in 的文本文件,并找出包含 “thermcontact” 的行:

                                            find . -name "*.in" | xargs grep "thermcontact"

                                            登錄后復制

                                            5.3 locate

                                            locate 讓使用者可以很快速的搜尋某個路徑。默認每天自動更新一次,所以使用locate 命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。如果數據庫中沒有查詢的數據,則會報出locate: can not stat () `/var/lib/mlocate/mlocate.db’: No such file or directory該錯誤!updatedb即可!

                                            yum -y install mlocate 如果是精簡版CentOS系統需要安裝locate命令

                                            使用實例:

                                            updatedblocate /etc/sh 搜索etc目錄下所有以sh開頭的文件 locate pwd 查找和pwd相關的所有文件

                                            登錄后復制

                                            5.4 whereis

                                            whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬于原始代碼,二進制文件,或是幫助文件。

                                            使用實例:

                                            whereis ls    將和ls文件相關的文件都查找出來

                                            登錄后復制

                                            5.5 which

                                            which命令的作用是在PATH變量指定的路徑中,搜索某個系統命令的位置,并且返回第一個搜索結果。

                                            使用實例:

                                            which pwd  查找pwd命令所在路徑 which java  查找path中java的路徑

                                            登錄后復制

                                            六、su、sudo

                                            6.1 su

                                            Linux su命令用于變更為其他使用者的身份,除 root 外,需要鍵入該使用者的密碼。

                                            使用權限:所有使用者。

                                            語法

                                            su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

                                            登錄后復制

                                            參數說明

                                            • -f 或 —fast 不必讀啟動檔(如 csh.cshrc 等),僅用于 csh 或 tcsh

                                            • -m -p 或 —preserve-environment 執行 su 時不改變環境變數

                                            • -c command 或 —command=command 變更為帳號為 USER 的使用者并執行指令(command)后再變回原來使用者

                                            • -s shell 或 —shell=shell 指定要執行的 shell (bash csh tcsh 等),預設值為 /etc/passwd 內的該使用者(USER) shell

                                            • –help 顯示說明文件

                                            • –version 顯示版本資訊

                                            • – -l 或 —login 這個參數加了之后,就好像是重新 login 為該使用者一樣,大部份環境變數(HOME SHELL USER等等)都是以該使用者(USER)為主,并且工作目錄也會改變,如果沒有指定 USER ,內定是 root

                                            • USER 欲變更的使用者帳號

                                            • ARG 傳入新的 shell 參數

                                              實例

                                              變更帳號為 root 并在執行 ls 指令后退出變回原使用者

                                              su -c ls root

                                              登錄后復制

                                              變更帳號為 root 并傳入 -f 參數給新執行的 shell

                                              su root -f

                                              登錄后復制登錄后復制

                                              變更帳號為 clsung 并改變工作目錄至 clsung 的家目錄(home dir)

                                              su - clsung

                                              登錄后復制登錄后復制

                                              切換用戶

                                              hnlinux@runoob.com:~$ whoami //顯示當前用戶hnlinuxhnlinux@runoob.com:~$ pwd //顯示當前目錄/home/hnlinuxhnlinux@runoob.com:~$ su root //切換到root用戶密碼:root@runoob.com:/home/hnlinux# whoami rootroot@runoob.com:/home/hnlinux# pwd/home/hnlinux

                                              登錄后復制登錄后復制

                                              切換用戶,改變環境變量

                                              hnlinux@runoob.com:~$ whoami //顯示當前用戶hnlinuxhnlinux@runoob.com:~$ pwd //顯示當前目錄/home/hnlinuxhnlinux@runoob.com:~$ su - root //切換到root用戶密碼:root@runoob.com:/home/hnlinux# whoami rootroot@runoob.com:/home/hnlinux# pwd //顯示當前目錄/root

                                              登錄后復制登錄后復制

                                              su用于用戶之間的切換。但是切換前的用戶依然保持登錄狀態。如果是root 向普通或虛擬用戶切換不需要密碼,反之普通用戶切換到其它任何用戶都需要密碼驗證。

                                              su test:切換到test用戶,但是路徑還是/root目錄su - test : 切換到test用戶,路徑變成了/home/testsu : 切換到root用戶,但是路徑還是原來的路徑su - : 切換到root用戶,并且路徑是/rootsu不足:如果某個用戶需要使用root權限、則必須要把root密碼告訴此用戶。退出返回之前的用戶:exit

                                              登錄后復制登錄后復制

                                              6.2 sudo

                                              sudo是為所有想使用root權限的普通用戶設計的。可以讓普通用戶具有臨時使用root權限的權利。只需輸入自己賬戶的密碼即可。

                                              進入sudo配置文件命令:

                                              vi /etc/sudoer或者visudo

                                              登錄后復制

                                              案例:允許hadoop用戶以root身份執行各種應用命令,需要輸入hadoop用戶的密碼。hadoop ALL=(ALL) ALL

                                              案例:只允許hadoop用戶以root身份執行ls 、cat命令,并且執行時候免輸入密碼。配置文件中:hadoop ALL=NOPASSWD: /bin/ls, /bin/cat

                                              su root -f

                                              登錄后復制登錄后復制

                                              變更帳號為 clsung 并改變工作目錄至 clsung 的家目錄(home dir)

                                              su - clsung

                                              登錄后復制登錄后復制

                                              切換用戶

                                              hnlinux@runoob.com:~$ whoami //顯示當前用戶hnlinuxhnlinux@runoob.com:~$ pwd //顯示當前目錄/home/hnlinuxhnlinux@runoob.com:~$ su root //切換到root用戶密碼:root@runoob.com:/home/hnlinux# whoami rootroot@runoob.com:/home/hnlinux# pwd/home/hnlinux

                                              登錄后復制登錄后復制

                                              切換用戶,改變環境變量

                                              hnlinux@runoob.com:~$ whoami //顯示當前用戶hnlinuxhnlinux@runoob.com:~$ pwd //顯示當前目錄/home/hnlinuxhnlinux@runoob.com:~$ su - root //切換到root用戶密碼:root@runoob.com:/home/hnlinux# whoami rootroot@runoob.com:/home/hnlinux# pwd //顯示當前目錄/root

                                              登錄后復制登錄后復制

                                              su用于用戶之間的切換。但是切換前的用戶依然保持登錄狀態。如果是root 向普通或虛擬用戶切換不需要密碼,反之普通用戶切換到其它任何用戶都需要密碼驗證。

                                              su test:切換到test用戶,但是路徑還是/root目錄su - test : 切換到test用戶,路徑變成了/home/testsu : 切換到root用戶,但是路徑還是原來的路徑su - : 切換到root用戶,并且路徑是/rootsu不足:如果某個用戶需要使用root權限、則必須要把root密碼告訴此用戶。退出返回之前的用戶:exit

                                              登錄后復制登錄后復制

                                              七、下載與安裝 yum

                                              yum( Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。

                                              基於RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

                                              yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記。

                                              7.1 yum 語法

                                              yum [options] [command] [package ...]

                                              登錄后復制

                                              • options:可選,選項包括-h(幫助),-y(當安裝過程提示選擇全部為”yes”),-q(不顯示安裝的過程)等等。

                                              • command:要進行的操作。

                                              • package操作的對象。

                                                7.2 yum常用命令

                                                • 1.列出所有可更新的軟件清單命令:yum check-update

                                                • 2.更新所有軟件命令:yum update

                                                • 3.僅安裝指定的軟件命令:yum install

                                                • 4.僅更新指定的軟件命令:yum update

                                                • 5.列出所有可安裝的軟件清單命令:yum list

                                                • 6.刪除軟件包命令:yum remove

                                                • 7.查找軟件包 命令:yum search

                                                • 8.清除緩存命令:

                                                  • yum clean packages: 清除緩存目錄下的軟件包

                                                  • yum clean headers: 清除緩存目錄下的 headers

                                                  • yum clean oldheaders: 清除緩存目錄下舊的 headers

                                                  • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除緩存目錄下的軟件包及舊的headers

                                                    實例 1

                                                    安裝 pam-devel

                                                    [root@www ~] yum install pam-develSetting up Install ProcessParsing package install argumentsResolving Dependencies  <==先檢查軟件的屬性相依問題--> Running transaction check---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel--> Running transaction check---> Package pam.i386 0:0.99.6.2-4.el5 set to be updatedfilelists.xml.gz          100% |=========================| 1.6 MB    00:05filelists.xml.gz          100% |=========================| 138 kB    00:00-> Finished Dependency Resolution……(省略)

                                                    登錄后復制

                                                    實例 2

                                                    移除 pam-devel

                                                    [root@www ~] yum remove pam-develSetting up Remove ProcessResolving Dependencies  <==同樣的,先解決屬性相依的問題--> Running transaction check---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased--> Finished Dependency ResolutionDependencies Resolved============================================================================= Package                 Arch       Version          Repository        Size=============================================================================Removing: pam-devel               i386       0.99.6.2-4.el5   installed         495 kTransaction Summary=============================================================================Install      0 Package(s)Update       0 Package(s)Remove       1 Package(s)  <==還好,并沒有屬性相依的問題,單純移除一個軟件Is this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction  Erasing   : pam-devel                    ######################### [1/1]Removed: pam-devel.i386 0:0.99.6.2-4.el5Complete!

                                                    登錄后復制

                                                    實例 3

                                                    利用 yum 的功能,找出以 pam 為開頭的軟件名稱有哪些?

                                                    [root@www ~] yum list pam*Installed Packagespam.i386                  0.99.6.2-3.27.el5      installedpam_ccreds.i386           3-5                    installedpam_krb5.i386             2.2.14-1               installedpam_passwdqc.i386         1.0.2-1.2.2            installedpam_pkcs11.i386           0.5.3-23               installedpam_smb.i386              1.1.7-7.2.1            installedAvailable Packages <==底下則是『可升級』的或『未安裝』的pam.i386                  0.99.6.2-4.el5         basepam-devel.i386            0.99.6.2-4.el5         basepam_krb5.i386             2.2.14-10              base

                                                    登錄后復制


                                                    7.3 國內 yum 源

                                                    網易(163)yum源是國內最好的yum源之一 ,無論是速度還是軟件版本,都非常的不錯。

                                                    將yum源設置為163 yum,可以提升軟件包安裝和更新的速度,同時避免一些常見軟件版本無法找到。

                                                    安裝步驟

                                                    首先備份/etc/yum.repos.d/CentOS-Base.repo

                                                    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup1

                                                    登錄后復制

                                                    下載對應版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前請做好相應備份)

                                                    • CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo

                                                    • CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo

                                                    • CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo

                                                      wget http://mirrors.163.com/.help/CentOS6-Base-163.repomv CentOS6-Base-163.repo CentOS-Base.repo

                                                      登錄后復制

                                                      運行以下命令生成緩存

                                                      yum clean allyum makecache

                                                      登錄后復制

                                                      除了網易之外,國內還有其他不錯的 yum 源,比如中科大和搜狐。

                                                      中科大的 yum 源,安裝方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centos

                                                      sohu 的 yum 源安裝方法查看: http://mirrors.sohu.com/help/centos.htm

                                                      八. Linux 三劍客(awk,sed,grep)

                                                      awk、sed、grep更適合的方向:

                                                      • grep 更適合單純的查找或匹配文本

                                                      • sed 更適合編輯匹配到的文本

                                                      • awk 更適合格式化文本,對文本進行較復雜格式處理

                                                        8.1 awk

                                                        AWK 是一種處理文本文件的語言,是一個強大的文本分析工具。

                                                        之所以叫 AWK 是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

                                                        語法

                                                        awk [選項參數] 'script' var=value file(s)或awk [選項參數] -f scriptfile var=value file(s)

                                                        登錄后復制

                                                        選項參數說明:

                                                        • -F fs or —field-separator fs指定輸入文件折分隔符,fs是一個字符串或者是一個正則表達式,如-F:。

                                                        • -v var=value or —asign var=value賦值一個用戶定義變量。

                                                        • -f scripfile or —file scriptfile從腳本文件中讀取awk命令。

                                                        • -mf nnn and -mr nnn對nnn值設置內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴展功能,在標準awk中不適用。

                                                        • -W compact or —compat, -W traditional or —traditional在兼容模式下運行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴展都被忽略。

                                                        • -W copyleft or —copyleft, -W copyright or —copyright打印簡短的版權信息。

                                                        • -W help or —help, -W usage or —usage打印全部awk選項和每個選項的簡短說明。

                                                        • -W lint or —lint打印不能向傳統unix平臺移植的結構的警告。

                                                        • -W lint-old or —lint-old打印關于不能向傳統unix平臺移植的結構的警告。

                                                        • -W posix打開兼容模式。但有以下限制,不識別:/x、函數關鍵字、func、換碼序列以及當fs是一個空格時,將新行作為一個域分隔符;操作符 =不能代替^ 和 ^=;fflush無效。

                                                        • -W re-interval or —re-inerval允許間隔正則表達式的使用,參考(grep中的Posix字符類),如括號表達式[[:alpha:]]。

                                                        • -W source program-text or —source program-text使用program-text作為源代碼,可與-f命令混用。

                                                        • -W version or —version打印bug報告信息的版本。

                                                          基本用法

                                                          log.txt文本內容如下:

                                                          2 this is a test3 Are you like awkThis's a test10 There are orange,apple,mongo

                                                          登錄后復制

                                                          用法一:

                                                          awk '{[pattern] action}' {filenames}   # 行匹配語句 awk '' 只能用單引號

                                                          登錄后復制

                                                          實例:

                                                          # 每行按空格或TAB分割,輸出文本中的1、4項 $ awk '{print $1,$4}' log.txt --------------------------------------------- 2 a 3 like This's 10 orange,apple,mongo # 格式化輸出 $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt --------------------------------------------- 2        a 3        like This's 10       orange,apple,mongo

                                                          登錄后復制

                                                          用法二:

                                                          awk -F  #-F相當于內置變量FS, 指定分割字符

                                                          登錄后復制

                                                          實例:

                                                          # 使用","分割 $  awk -F, '{print $1,$2}'   log.txt --------------------------------------------- 2 this is a test 3 Are you like awk This's a test 10 There are orange apple # 或者使用內建變量 $ awk 'BEGIN{FS=","} {print $1,$2}'     log.txt --------------------------------------------- 2 this is a test 3 Are you like awk This's a test 10 There are orange apple # 使用多個分隔符.先使用空格分割,然后對分割結果再使用","分割 $ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt --------------------------------------------- 2 this test 3 Are awk This's a 10 There apple

                                                          登錄后復制

                                                          用法三:

                                                          awk -v  # 設置變量

                                                          登錄后復制

                                                          實例:

                                                           $ awk -va=1 '{print $1,$1+a}' log.txt --------------------------------------------- 2 3 3 4 This's 1 10 11 $ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt --------------------------------------------- 2 3 2s 3 4 3s This's 1 This'ss 10 11 10s

                                                          登錄后復制

                                                          用法四:

                                                          awk -f {awk腳本} {文件名}

                                                          登錄后復制

                                                          實例:

                                                           $ awk -f cal.awk log.txt

                                                          登錄后復制

                                                          運算符

                                                          運算符 描述
                                                          = += -= = /= %= ^= *= 賦值
                                                          ?: C條件表達式
                                                          \ \ 邏輯或
                                                          && 邏輯與
                                                          ~ 和 !~ 匹配正則表達式和不匹配正則表達式
                                                          < <= > >= != == 關系運算符
                                                          空格 連接
                                                          + – 加,減
                                                          * / % 乘,除與求余
                                                          + – ! 一元加,減和邏輯非
                                                          ^ * 求冪
                                                          ++ – 增加或減少,作為前綴或后綴
                                                          $ 字段引用
                                                          in 數組成員

                                                          過濾第一列大于2的行

                                                          $ awk '$1>2' log.txt    #命令#輸出3 Are you like awkThis's a test10 There are orange,apple,mongo12345

                                                          登錄后復制

                                                          過濾第一列等于2的行

                                                          $ awk '$1==2 {print $1,$3}' log.txt    #命令#輸出2 is123

                                                          登錄后復制

                                                          過濾第一列大于2并且第二列等于’Are’的行。另外,搜索公眾號Java架構師技術后臺回復“面試題”,獲取一份驚喜禮包。

                                                          $ awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt    #命令#輸出3 Are you123

                                                          登錄后復制

                                                          內建變量

                                                          變量 描述
                                                          $n 當前記錄的第n個字段,字段間由FS分隔
                                                          $0 完整的輸入記錄
                                                          ARGC 命令行參數的數目
                                                          ARGIND 命令行中當前文件的位置(從0開始算)
                                                          ARGV 包含命令行參數的數組
                                                          CONVFMT 數字轉換格式(默認值為%.6g)ENVIRON環境變量關聯數組
                                                          ERRNO 最后一個系統錯誤的描述
                                                          FIELDWIDTHS 字段寬度列表(用空格鍵分隔)
                                                          FILENAME 當前文件名
                                                          FNR 各文件分別計數的行號
                                                          FS 字段分隔符(默認是任何空格)
                                                          IGNORECASE 如果為真,則進行忽略大小寫的匹配
                                                          NF 一條記錄的字段的數目
                                                          NR 已經讀出的記錄數,就是行號,從1開始
                                                          OFMT 數字的輸出格式(默認值是%.6g)
                                                          OFS 輸出記錄分隔符(輸出換行符),輸出時用指定的符號代替換行符
                                                          ORS 輸出記錄分隔符(默認值是一個換行符)
                                                          RLENGTH 由match函數所匹配的字符串的長度
                                                          RS 記錄分隔符(默認是一個換行符)
                                                          RSTART 由match函數所匹配的字符串的第一個位置
                                                          SUBSEP 數組下標分隔符(默認值是/034)
                                                          $ awk 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}'  log.txtFILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS---------------------------------------------log.txt    2    1         5    1log.txt    2    2         5    2log.txt    2    3         3    3log.txt    2    4         4    4$ awk -F\' 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}'  log.txtFILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS---------------------------------------------log.txt    2    1    '    1    1log.txt    2    2    '    1    2log.txt    2    3    '    2    3log.txt    2    4    '    1    4# 輸出順序號 NR, 匹配文本行號$ awk '{print NR,FNR,$1,$2,$3}' log.txt---------------------------------------------1 1 2 this is2 2 3 Are you3 3 This's a test4 4 10 There are# 指定輸出分割符$  awk '{print $1,$2,$5}' OFS=" $ "  log.txt---------------------------------------------2 $ this $ test3 $ Are $ awkThis's $ a $10 $ There $

                                                          登錄后復制

                                                          使用正則,字符串匹配

                                                          # 輸出第二列包含 "th",并打印第二列與第四列$ awk '$2 ~ /th/ {print $2,$4}' log.txt---------------------------------------------this a

                                                          登錄后復制

                                                          ~ 表示模式開始。// 中是模式。

                                                          # 輸出包含 "re" 的行$ awk '/re/ ' log.txt---------------------------------------------3 Are you like awk10 There are orange,apple,mongo

                                                          登錄后復制


                                                          忽略大小寫

                                                          $ awk 'BEGIN{IGNORECASE=1} /this/' log.txt---------------------------------------------2 this is a testThis's a test

                                                          登錄后復制


                                                          模式取反

                                                          $ awk '$2 !~ /th/ {print $2,$4}' log.txt---------------------------------------------Are likeaThere orange,apple,mongo$ awk '!/th/ {print $2,$4}' log.txt---------------------------------------------Are likeaThere orange,apple,mongo

                                                          登錄后復制


                                                          awk腳本

                                                          關于 awk 腳本,我們需要注意兩個關鍵詞 BEGIN 和 END。

                                                          • BEGIN{ 這里面放的是執行前的語句 }

                                                          • END {這里面放的是處理完所有的行后要執行的語句 }

                                                          • {這里面放的是處理每一行時要執行的語句}

                                                            假設有這么一個文件(學生成績表):

                                                            $ cat score.txtMarry   2143 78 84 77Jack    2321 66 78 45Tom     2122 48 77 71Mike    2537 87 97 95Bob     2415 40 57 62

                                                            登錄后復制

                                                            我們的 awk 腳本如下:

                                                            $ cat cal.awk#!/bin/awk -f#運行前BEGIN {    math = 0    english = 0    computer = 0    printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"    printf "---------------------------------------------\n"}#運行中{    math+=$3    english+=$4    computer+=$5    printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5}#運行后END {    printf "---------------------------------------------\n"    printf "  TOTAL:%10d %8d %8d \n", math, english, computer    printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR}123456789101112131415161718192021222324

                                                            登錄后復制

                                                            我們來看一下執行結果:

                                                            $ awk -f cal.awk score.txtNAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL---------------------------------------------Marry  2143     78       84       77      239Jack   2321     66       78       45      189Tom    2122     48       77       71      196Mike   2537     87       97       95      279Bob    2415     40       57       62      159---------------------------------------------  TOTAL:       319      393      350AVERAGE:     63.80    78.60    70.00

                                                            登錄后復制


                                                            另外一些實例

                                                            AWK 的 hello world 程序為:

                                                            BEGIN { print "Hello, world!" }

                                                            登錄后復制

                                                            計算文件大小

                                                            $ ls -l *.txt | awk '{sum+=$5} END {print sum}'--------------------------------------------------666581

                                                            登錄后復制

                                                            從文件中找出長度大于 80 的行:

                                                            awk 'length>80' log.txt

                                                            登錄后復制

                                                            打印九九乘法表

                                                            seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'

                                                            登錄后復制

                                                            8.2 sed

                                                            Linux sed 命令是利用腳本來處理文本文件。

                                                            sed 可依照腳本的指令來處理、編輯文本文件。

                                                            Sed 主要用來自動編輯一個或多個文件、簡化對文件的反復操作、編寫轉換程序等。

                                                            語法

                                                            sed [-hnV][-e<script>][-f<script文件>][文本文件]

                                                            登錄后復制

                                                            參數說明

                                                            • -e<script>--expression=<script> 以選項中指定的script來處理輸入的文本文件。

                                                            • -f

                                                              或–file=以選項中指定的script文件來處理輸入的文本文件。文件>文件>

                                                            • -h或–help 顯示幫助。

                                                            • -n或–quiet或–silent 僅顯示script處理后的結果。

                                                            • -V或–version 顯示版本信息。

                                                              動作說明

                                                              • a :新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)~

                                                              • c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!

                                                              • d :刪除,因為是刪除啊,所以 d 后面通常不接任何咚咚;

                                                              • i :插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行);

                                                              • p :打印,亦即將某個選擇的數據印出。通常 p 會與參數 sed -n 一起運行~

                                                              • s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!

                                                                實例

                                                                在testfile文件的第四行后添加一行,并將結果輸出到標準輸出,在命令行提示符下輸入如下命令:

                                                                sed -e 4a\newLine testfile

                                                                登錄后復制登錄后復制

                                                                首先查看testfile中的內容如下:

                                                                $ cat testfile #查看testfile 中的內容  HELLO LINUX!  Linux is a free unix-type opterating system.  This is a linux testfile!  Linux test

                                                                登錄后復制

                                                                使用sed命令后,輸出結果如下:

                                                                $ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串  HELLO LINUX! #testfile文件原有的內容  Linux is a free unix-type opterating system.  This is a linux testfile!  Linux test  newline

                                                                登錄后復制

                                                                以行為單位的新增/刪除

                                                                將 /etc/passwd 的內容列出并且列印行號,同時,請將第 2~5 行刪除!

                                                                [root@www ~] nl /etc/passwd | sed '2,5d'1 root:x:0:0:root:/root:/bin/bash6 sync:x:5:0:sync:/sbin:/bin/sync7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown.....(后面省略).....

                                                                登錄后復制

                                                                sed 的動作為 ‘2,5d’ ,那個 d 就是刪除!因為 2-5 行給他刪除了,所以顯示的數據就沒有 2-5 行羅~ 另外,注意一下,原本應該是要下達 sed -e 才對,沒有 -e 也行啦!同時也要注意的是, sed 后面接的動作,請務必以 ‘’ 兩個單引號括住喔!

                                                                只要刪除第 2 行

                                                                nl /etc/passwd | sed '2d'

                                                                登錄后復制

                                                                要刪除第 3 到最后一行

                                                                nl /etc/passwd | sed '3,$d'

                                                                登錄后復制

                                                                在第二行后(亦即是加在第三行)加上『drink tea?』字樣!

                                                                [root@www ~] nl /etc/passwd | sed '2a drink tea'1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologindrink tea3 daemon:x:2:2:daemon:/sbin:/sbin/nologin.....(后面省略).....

                                                                登錄后復制

                                                                那如果是要在第二行前

                                                                nl /etc/passwd | sed '2i drink tea'

                                                                登錄后復制

                                                                如果是要增加兩行以上,在第二行后面加入兩行字,例如 Drink tea or … drink beer?

                                                                [root@www ~] nl /etc/passwd | sed '2a Drink tea or ......\> drink beer ?'1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologinDrink tea or ......drink beer ?3 daemon:x:2:2:daemon:/sbin:/sbin/nologin.....(后面省略).....

                                                                登錄后復制

                                                                每一行之間都必須要以反斜杠『 \ 』來進行新行的添加喔!所以,上面的例子中,我們可以發現在第一行的最后面就有 \ 存在。

                                                                以行為單位的替換與顯示

                                                                將第2-5行的內容取代成為『No 2-5 number』呢?

                                                                [root@www ~] nl /etc/passwd | sed '2,5c No 2-5 number'1 root:x:0:0:root:/root:/bin/bashNo 2-5 number6 sync:x:5:0:sync:/sbin:/bin/sync.....(后面省略).....

                                                                登錄后復制

                                                                透過這個方法我們就能夠將數據整行取代了!

                                                                僅列出 /etc/passwd 文件內的第 5-7 行

                                                                [root@www ~] nl /etc/passwd | sed -n '5,7p'5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6 sync:x:5:0:sync:/sbin:/bin/sync7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

                                                                登錄后復制

                                                                可以透過這個 sed 的以行為單位的顯示功能, 就能夠將某一個文件內的某些行號選擇出來顯示。

                                                                數據的搜尋并顯示

                                                                搜索 /etc/passwd有root關鍵字的行

                                                                nl /etc/passwd | sed '/root/p'1  root:x:0:0:root:/root:/bin/bash1  root:x:0:0:root:/root:/bin/bash2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh3  bin:x:2:2:bin:/bin:/bin/sh4  sys:x:3:3:sys:/dev:/bin/sh5  sync:x:4:65534:sync:/bin:/bin/sync....下面忽略

                                                                登錄后復制

                                                                如果root找到,除了輸出所有行,還會輸出匹配行。

                                                                使用-n的時候將只打印包含模板的行。

                                                                nl /etc/passwd | sed -n '/root/p'1  root:x:0:0:root:/root:/bin/bash

                                                                登錄后復制

                                                                數據的搜尋并刪除

                                                                刪除/etc/passwd所有包含root的行,其他行輸出

                                                                nl /etc/passwd | sed  '/root/d'2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh3  bin:x:2:2:bin:/bin:/bin/sh....下面忽略#第一行的匹配root已經刪除了

                                                                登錄后復制

                                                                數據的搜尋并執行命令

                                                                搜索/etc/passwd,找到root對應的行,執行后面花括號中的一組命令,每個命令之間用分號分隔,這里把bash替換為blueshell,再輸出這行:

                                                                nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'    1  root:x:0:0:root:/root:/bin/blueshell

                                                                登錄后復制

                                                                最后的q是退出。

                                                                數據的搜尋并替換

                                                                除了整行的處理模式之外, sed 還可以用行為單位進行部分數據的搜尋并取代。基本上 sed 的搜尋與替代的與 vi 相當的類似!他有點像這樣:

                                                                sed 's/要被取代的字串/新的字串/g'

                                                                登錄后復制

                                                                先觀察原始信息,利用 /sbin/ifconfig 查詢 IP

                                                                [root@www ~] /sbin/ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1.....(以下省略).....

                                                                登錄后復制

                                                                本機的ip是192.168.1.100。

                                                                將 IP 前面的部分予以刪除

                                                                [root@www ~] /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

                                                                登錄后復制

                                                                接下來則是刪除后續的部分,亦即:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

                                                                將 IP 后面的部分予以刪除

                                                                [root@www ~] /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'192.168.1.100

                                                                登錄后復制

                                                                多點編輯

                                                                一條sed命令,刪除/etc/passwd第三行到末尾的數據,并把bash替換為blueshell

                                                                nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'1  root:x:0:0:root:/root:/bin/blueshell2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh

                                                                登錄后復制

                                                                -e表示多點編輯,第一個編輯命令刪除/etc/passwd第三行到末尾的數據,第二條命令搜索bash替換為blueshell。

                                                                直接修改文件內容(危險動作)

                                                                sed 可以直接修改文件的內容,不必使用管道命令或數據流重導向!不過,由於這個動作會直接修改到原始的文件,所以請你千萬不要隨便拿系統配置來測試!我們還是使用文件 regular_express.txt 文件來測試看看吧!

                                                                regular_express.txt 文件內容如下:

                                                                [root@www ~] cat regular_express.txt runoob.google.taobao.facebook.zhihu-weibo-

                                                                登錄后復制

                                                                利用 sed 將 regular_express.txt 內每一行結尾若為 . 則換成 !

                                                                [root@www ~] sed -i 's/\.$/\!/g' regular_express.txt[root@www ~] cat regular_express.txt runoob!google!taobao!facebook!zhihu-weibo-

                                                                登錄后復制

                                                                :q:q

                                                                利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:

                                                                [root@www ~] sed -i '$a # This is a test' regular_express.txt[root@www ~] cat regular_express.txt runoob!google!taobao!facebook!zhihu-weibo-# This is a test

                                                                登錄后復制

                                                                由於 $ 代表的是最后一行,而 a 的動作是新增,因此該文件最后新增 # This is a test

                                                                sed 的 -i 選項可以直接修改文件內容,這功能非常有幫助!舉例來說,如果你有一個 100 萬行的文件,你要在第 100 行加某些文字,此時使用 vim 可能會瘋掉!因為文件太大了!那怎辦?就利用 sed 啊!透過 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修訂!

                                                                追加行的說明:

                                                                sed -e 4a\newLine testfile

                                                                登錄后復制登錄后復制

                                                                a 動作是在匹配的行之后追加字符串,追加的字符串中可以包含換行符(實現追加多行的情況)。

                                                                追加一行的話前后都不需要添加換行符 \n,只有追加多行時在行與行之間才需要添加換行符(最后一行最后也無需添加,添加的話會多出一個空行)。

                                                                man sed 信息:

                                                                Append text, which has each embedded newline preceded by a backslash.

                                                                登錄后復制

                                                                例如:

                                                                4 行之后添加一行:

                                                                sed -e '4 a newline' testfile

                                                                登錄后復制

                                                                4 行之后追加 2 行:

                                                                sed -e '4 a newline\nnewline2' testfile

                                                                登錄后復制

                                                                4 行之后追加 3 行(2 行文字和 1 行空行)

                                                                sed -e '4 a newline\nnewline2\n' testfile

                                                                登錄后復制

                                                                4 行之后追加 1 行空行:

                                                                #錯誤:sed -e '4 a \n' testfilesed -e '4 a \ ' testfile 實際上

                                                                登錄后復制

                                                                實際上是插入了一個含有一個空格的行,插入一個完全為空的空行沒有找到方法(不過應該沒有這個需求吧,都要插入行了插入空行干嘛呢?)

                                                                添加空行:

                                                                # 可以添加一個完全為空的空行sed '4 a \\'# 可以添加兩個完全為空的空行sed '4 a \\n'

                                                                登錄后復制

                                                                8.3 grep

                                                                Linux grep 命令用于查找文件里符合條件的字符串。

                                                                grep 指令用于查找內容包含指定的范本樣式的文件,如果發現某文件的內容符合所指定的范本樣式,預設 grep 指令會把含有范本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為 ,則 grep 指令會從標準輸入設備讀取數據。

                                                                語法

                                                                grep [-abcEFGhHilLnqrsvVwxy][-A<顯示列數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<范本樣式>][-f<范本文件>][--help][范本樣式][文件或目錄...]

                                                                登錄后復制

                                                                參數

                                                                • -a 或 —text : 不要忽略二進制的數據。

                                                                • -A<顯示行數> 或 —after-context=<顯示行數> : 除了顯示符合范本樣式的那一列之外,并顯示該行之后的內容。

                                                                • -b 或 —byte-offset : 在顯示符合樣式的那一行之前,標示出該行第一個字符的編號。

                                                                • -B<顯示行數> 或 —before-context=<顯示行數> : 除了顯示符合樣式的那一行之外,并顯示該行之前的內容。

                                                                • -c 或 —count : 計算符合樣式的列數。

                                                                • -C<顯示行數> 或 —context=<顯示行數>或-<顯示行數> : 除了顯示符合樣式的那一行之外,并顯示該行之前后的內容。

                                                                • -d <動作> 或 —directories=<動作> : 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep指令將回報信息并停止動作。

                                                                • -e<范本樣式> 或 —regexp=<范本樣式> : 指定字符串做為查找文件內容的樣式。

                                                                • -E 或 —extended-regexp : 將樣式為延伸的正則表達式來使用。

                                                                • -f<規則文件> 或 —file=<規則文件> : 指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式為每行一個規則樣式。

                                                                • -F 或 —fixed-regexp : 將樣式視為固定字符串的列表。

                                                                • -G 或 —basic-regexp : 將樣式視為普通的表示法來使用。

                                                                • -h 或 —no-filename : 在顯示符合樣式的那一行之前,不標示該行所屬的文件名稱。

                                                                • -H 或 —with-filename : 在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。

                                                                • -i 或 —ignore-case : 忽略字符大小寫的差別。

                                                                • -l 或 —file-with-matches : 列出文件內容符合指定的樣式的文件名稱。

                                                                • -L 或 —files-without-match : 列出文件內容不符合指定的樣式的文件名稱。

                                                                • -n 或 —line-number : 在顯示符合樣式的那一行之前,標示出該行的列數編號。

                                                                • -o 或 —only-matching : 只顯示匹配PATTERN 部分。

                                                                • -q 或 —quiet或–silent : 不顯示任何信息。

                                                                • -r 或 —recursive : 此參數的效果和指定”-d recurse”參數相同。

                                                                • -s 或 —no-messages : 不顯示錯誤信息。

                                                                • -v 或 —revert-match : 顯示不包含匹配文本的所有行。

                                                                • -V 或 —version : 顯示版本信息。

                                                                • -w 或 —word-regexp : 只顯示全字符合的列。

                                                                • -x —line-regexp : 只顯示全列符合的列。

                                                                • -y : 此參數的效果和指定”-i”參數相同。

                                                                  實例

                                                                  1、在當前目錄中,查找后綴有 file 字樣的文件中包含 test 字符串的文件,并打印出該字符串的行。此時,可以使用如下命令:

                                                                  grep test *file

                                                                  登錄后復制

                                                                  結果如下所示:

                                                                  $ grep test test* #查找前綴有“test”的文件包含“test”字符串的文件  testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行  testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行  testfile_2:Linux test #列出testfile_2 文件中包含test字符的行

                                                                  登錄后復制

                                                                  2、以遞歸的方式查找符合條件的文件。例如,查找指定目錄/etc/acpi 及其子目錄(如果存在子目錄的話)下所有文件中包含字符串”update”的文件,并打印出該字符串所在行的內容,使用的命令為:

                                                                  grep -r update /etc/acpi

                                                                  登錄后復制

                                                                  輸出結果如下:

                                                                  $ grep -r update /etc/acpi #以遞歸的方式查找“etc/acpi”  #下包含“update”的文件  /etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.)  Rather than  /etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of  IO.) Rather than  /etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update

                                                                  登錄后復制

                                                                  3、反向查找。前面各個例子是查找并打印出符合條件的行,通過”-v”參數可以打印出不符合條件行的內容。

                                                                  查找文件名中包含 test 的文件中不包含test 的行,此時,使用的命令為:

                                                                  grep -v test *test*

                                                                  登錄后復制

                                                                  結果如下所示:

                                                                  $ grep-v test* #查找文件名中包含test 的文件中不包含test 的行  testfile1:helLinux!  testfile1:Linis a free Unix-type operating system.  testfile1:Lin  testfile_1:HELLO LINUX!  testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.  testfile_1:THIS IS A LINUX TESTFILE!  testfile_2:HELLO LINUX!  testfile_2:Linux is a free unix-type opterating system.

                                                                  登錄后復制

                                                                  以上就是Linux命令大全的詳細內容,更多請關注www.92cms.cn其它相關文章!

分享到:
標簽:Linux 命令 大全
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定