博客作業1

一、linux 常用文件管理命令有哪些?其常用使用方法及相關實例演示

1、文件操作命令

(1).pwd

      功能:顯示當前目錄

      實例:

?    #pwd

(2).cd

          功能:改變當前目錄

          實例:

?            # cd  /usr/sbin (進入/usr/sbin)

?            # cd   ../u1 (進入父目錄下面的u1目錄)

?            # cd   ..(返回父目錄)

?            #cd    (進入用戶主目錄)

?            #cd  ~ (進入用戶主目錄)

(3).mkdir 

          功能:建立目錄

          格式:mkdir  [參數]  <目錄名>

          參數: -m  屬性值:指定目錄的屬性 (r、w、x或4、2、1)

                 -p        :循環建立目錄

          實例:

?        # mkdir   d1                 (在當前目錄下建立d1子目錄)

?        # mkdir  -p /d1/d2  /d1/d3  /d1/d4(同時在/d1目錄中建立d2,d3,d4子目錄)

?        # mkdir  –p  /d1/d2           (在/d1目錄中建立d2子目錄,先建d1)

(4).rmdir

              功能:刪除空目錄

              格式:rmdir  [參數]  <目錄名>

              參數:-p:循環刪除 

              實例:

?            # rmdir  a1        (刪除當前目錄下的a1子目錄)

?            # rmdir  /etc/a2     (刪除/etc下a2子目錄)

?            # rmdir  -p  /a1/a2  

(5).ls

               功能:顯示目錄中的文件及子目錄的名稱

               格式:ls     [參數]  [文件名]

               參數:-a:   顯示所有文件(包括隱含文件,以“.”開頭的文件為隱含文件)

                     -l:    以長格式顯示文件名及目錄名(顯示文件的詳細信息)

                     -F:    顯示文件名,同時顯示類型

                     -R:   顯示目錄中所有文件及子目錄中的文件結構

                     -t:    按照修改時間排序顯示

                     -s:    顯示文件的大小,以block為單位

                     -S:    按照文件大小排序顯示  

                     -m:   分列顯示文件名

               實例:

?                 # ls                 

?                 # ls /bin/             

?                 # ls grub.conf         查找當目錄下是否存在grub.conf

?                 # ls   -l             

?                 # ls  –help          顯示ls的詳細的幫助信息

?                 # ls  -a

(6).cp 

              功能:復制文件

              格式:cp   [參數]   <源路徑>  <目標路徑>  

              參數:-f:文件在目標路徑中存在時,則直接覆蓋

              -i:文件在目標路徑中存在時, 提示是否覆蓋

              -r:復制指定中所有內容和結構

              -b:生成覆蓋文件的備份

              -a:保持文件原有屬性

               實例:

?            # cp  /etc/*   /a1/      把/etc下的所有文件復制到a1目錄中

?            #cp  /bin/ls   /dir1      /bin/ls文件到/目錄取名為dir1

?            #cp  -f  /sbin/*  /exe/   直接將/sbin下的所有文件到/exe目錄中

?            #cp  -r  /soft  /abc/ 

(7).rm 

          功能:刪除文件

          格式:rm  [參數]   <文件名>

          參數:-f:                    不提示確認刪除

                -i:                    提示確認刪除

                -r:                    遞歸刪除

          實例:

?             # rm  /m1/f1          刪除/m1目錄下的f1

?             # rm  –f   /m1/*       刪除m1目錄下的所有文件

?             #rm  -rf  /m1        強制刪除一個目錄

(8).mv

          功能:移動文件、重命名文件

          格式:mv?。蹍担?<源路徑>  <目標路徑>

          參數:-i:     如果存在文件重名則提示是否覆蓋

                -b:     建立覆蓋文件的備份

                -f:     如果存在文件重名則直接覆蓋

    

          實例: 

?             # mv   /m1/f1     /m2/   移動/m1目錄下f1文件到/m2目錄下

?             # mv    f1   f2          將當前目錄下的f1文件改名f2

?             # mv   -f  /d1/*  /d2/    移動/d1中的所有文件到/d2目錄中

(9).file

          功能:檢測文件類型

          格式:file  [參數]  <文件名>

          參數: -z:檢測壓縮包文件

          -L:跟隨符號鏈接

          實例:

?           # file    /etc/lilo.conf

?           #file    -z  1.gz

(10).顯示文本文件內容

          1) cat

               格式:cat  [參數]  <文件名>

               參數:-n   顯示行號

                     -b   顯示行號,但空白行不顯示行號

            實例:

?                 #cat   /etc/inittab

?                 #cat  -n  /d1/f1  /d1/f2 >txt1

         2)more

                 格式:more   [參數] <文件名>

                 實例:

?                 # ls|more                 將ls的顯示結果輸入到more中

?                 # more   /etc/rc.d/rc    顯示/etc/rc.d/rc文件的內容

                   說明:可以用回車鍵向下換行,空格鍵向下換頁

                    按Q鍵退出more

       3 )less

           實例:

?                #ls|less                    將ls的顯示結果輸入到less中

?                #less  /var/named/localhost.zore

                    說明:Page up /Page Down鍵上下滾動、Q鍵退出

      4)head、tail

                   實例: 

?                   # head  -20     /a1    顯示a1中前20行

?                   # tail   -20     /a1   顯示中a1后20行

      5)cut

                功能:顯示文件中指定數目的字符、字節或字段

                格式:#cut  參數  數字  文件

                參數:-c   以字符為單位

                      -b  以字節為單位

                      -f   以字段為單位

                      -d  指定分隔符

                實例:

                     #cut  -c 3  /etc/passwd

                     #cut  -f  1-6  -d :/etc/passwd

                     #cut  -b  -8  /etc/passwd

(11).搜索文件

      1) find

               格式:find   查找路徑   查找條件

               條件:-name “文件名”:查找指定名稱文件

                     -lname “文件名”:查找指定文件所有的接文件

                     -user  用戶名:查找指定用戶擁有的文件

                     -group 組名:查找指定組擁有的文件

                     -links  n:查找擁有n個鏈接的文件

                     -mtime n:查找在N天前被修改過的文件

                     -atime  n:查找在N天前被訪問過的文件

                     -type  d/f/b/l/p:查找指定類型的文件

                     -s n[bcwkMG]:查找指定大小的文件

                     -empty:查找為空的文件

                     -perm  mode:查找指定屬性的文件

                     -exec command {}\; 查找指定的文件并執行指定的命令

                     -newer 文件名  查找比指定文件新的文件

               實例:

?                 # find   /   -name   “named*”

?                 # find   /   -user   root

?                 #find   ./  -type d -exec chmod 755 {} \;

?                 #find . –empty

?                 #find . -perm 644

?                 #find . -newer oldfile  ! -newer newfile

          2) whereis

                 功能:查找二進制可執行、手冊及源文件

                 實例:# whereis   umount

          3) locate

                 功能:在資料庫中查找指定的文件

                 格式:#locate [參數] 文件名

                 參數:

                    – u /-U  建立資料庫,-u 會由根目錄開始,-U 則可以指定開始位置

                    -e  <目錄1…>  排除指定目錄在尋找范圍之外

                    -l  <0/1>    設置安全級別,1啟用安全模式,0關閉安全模式

                    -f  <文件類型> 在資料庫中排除特定類型文件排除在外

                    -n 至多顯示n個輸出

                    -r 使用正規運算式做尋找的條件

                    -o 指定資料庫存的名稱。 

                    -d 指定資料庫的路徑

               實例:

                   #locate -u 

                   #locate chdrv 

                   #locate -n 100 a.out 

         4) which

               功能:查找指定命令文件

               格式:#which  文件名

               實例:#which  mount

(12).grep

               功能:在文本文件中查找匹配的字符串

               格式:#grep  [參數] “字符串”  文件

               參數: -?   同時顯示匹配行上下的?行

                    -b   在匹配行前面打印該行所在的塊號

                    -c   只打印匹配的行數,不顯示匹配的內容

                    -f File 從文件中提取模板,空文件中包含0個模板,所以什么都不匹配

                    -h   當搜索多個文件時,不顯示匹配文件名前綴

                    -I   忽略大小寫差別

                    -q   取消顯示,只返回退出狀態。0則表示找到了匹配的行

                    -l   打印匹配模板的文件清單

                    -L   打印不匹配模板的文件清單

                    -n   在匹配的行前面打印行號

                    -s   不顯示關于不存在或者無法讀取文件的錯誤信息

                    -v   反檢索,只顯示不匹配的行

                    -w   如果被\<和\>引用,就把表達式做為一個單詞搜索

              正則表達式元字符:

                              ^ 

                                錨定行的開始 如:'^grep'匹配所有以grep開頭的行

                              $ 

                                錨定行的結束 如:'grep$'匹配所有以grep結尾的行

                              . 

                                匹配一個非換行符的字符 如:'gr.p'匹配gr后接一個任意字符,然后是p

                              * 

                                匹配零個或多個先前字符 如:'*grep'匹配所有一個或多個空格后緊跟grep的行。 .*一起用代表任意字符

                             [] 

                                匹配一個指定范圍內的字符,如'[Gg]rep'匹配Grep和grep 

                             [^] 

                                匹配一個不在指定范圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行

                            \(..\) 

                                標記匹配字符,如'\(love\)',love被標記為1

                            \< 

                              錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行 

                            \> 

                              錨定單詞的結束,如:'grep\>'匹配包含以grep結尾的單詞的行 

                           x\{m\} 

                              重復字符x,m次,如:'0\{5\}'匹配包含5個o的行

                           x\{m,\} 

                              重復字符x,至少m次,如:'o\{5,\}'匹配至少有5個o的行

                           x\{m,n\} 

                              重復字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5–10個o的行

                           \w 

                              匹配文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個或多個文字或數字字符,然后是p

                           \W 

                              \w的反置形式,匹配一個或多個非單詞字符,如點號句號等

                           \b 

                              單詞鎖定符,如: '\bgrepb\'只匹配grep

                            + 

                            匹配一個或多個先前的字符。如:'[a-z]+able',匹配一個或多個小寫字母后跟able的串,如loveable,enable,disable等。

                            ? 

                             匹配零個或多個先前的字符。如:'gr?p'匹配gr后跟一個或沒有字符,然后是p的行。

                           a|b|c 

                              匹配a或b或c。如:grep|sed匹配grep或sed

                           () 

                             分組符號,如:love(able|rs)ov+匹配loveable或lovers,匹配一個或多個ov。

                          x{m},x{m,},x{m,n} 

                             作用同x\{m\},x\{m,\},x\{m,n\}

                 實例:

?                   # ls -l | grep '^a' 

                         通過管道過濾ls -l輸出的內容,只顯示以a開頭的行。

?                   # grep 'test' d* 

                         顯示所有以d開頭的文件中包含test的行。

?                   # grep 'test' aa bb cc 

                         顯示在aa,bb,cc文件中匹配test的行。

?                   # grep '[a-z]\{5\}' aa 

                          顯示所有包含每個字符串有5個連續小寫字符的字符串的行。

?                   # grep 'w\(es\)t.*\1' aa 

                          如果west被匹配,則es就被存儲到內存中,并標記為1,然后搜索任意個字符(.*),這些字符后面緊跟著另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用"\"號進行轉義,直接寫成'w(es)t.*\1'就可以了。

   (13).文件壓縮操作

               1)gzip(*.gz)

                     功能:對單個文件壓縮

                     格式:gzip  [參數]  壓縮(解壓縮)文件名

                     參數:  -d:用于解壓縮

                             -t:檢驗壓縮文件是否損壞

                             -l:顯示壓縮文件壓縮比例

                             -r :遞歸式地查找指定目錄并壓縮其中的所有文件或者是解壓縮

                            -num: 用指定的數字 num 調整壓縮的速度,-1 或 –fast 表示最快壓縮方法(低壓縮比)    

                     實例:

?                        # gzip    /a1

?                        # gzip    -d  /a1.gz

?                        # gzip    -dv   /*.gz

?                        #gzip     -r  /www

               2)zip

                       功能:壓縮文件

                       格式:#zip  [參數]  文件或目錄名

                                -d   從壓縮文件內刪除指定的文件。

                                -F   嘗試修復已損壞的壓縮文件。

                                -t<mmddyy>   把壓縮文件的日期設成指定的日期。

                                -u   更換較新的文件到壓縮文件內。

                                -v   顯示指令執行過程或顯示版本信息。

                                -z   替壓縮文件加上注釋。

                                -<壓縮效率>   壓縮效率是一個介于1-9的數值。

                                -P 口令    利用指定口令加密壓縮包

                                -m       添加文件到ZIP壓縮包中

                        實例:

                              #zip  abc.zip  f1   f2  f3

                              #zip  -r –P 123  soft.zip  /soft/

                              #zip  -d  soft.zip  soft/wb

                              #zip  –u  soft.zip   abc.log

                              #zip  -m  soft.zip   install.log

                3)unzip

                      功能: 解壓縮zip文件

                      格式: #unzip [.zip文件]

                           -l  顯示壓縮文件內所包含的文件。

                           -P   <密碼>   

                           -d   <目錄>指定文件解壓縮后所要存儲的目錄。

                      實例:

                            #unzip  f1.zip  -d  /f1

                            #unzip –l  f1.zip

                4)tar(*.tar)

                        功能:為文件或目錄創建備份 

                        格式:tar  [參數]   文件/目錄名

                        參數:-t:列出壓縮包中的文件(*.tar)

                              -x:解壓縮(*.tar)

                               -z:使用gzip的壓縮文件

                               -c:創建壓縮包

                               -f:指定文件名

                               -j:使用bzip的壓縮文件

                               -v:顯示操作信息

                               -C:指定解壓路徑(默認路徑為當前路徑)

                               -r: 向壓縮包添加文件

                               -u:更新壓縮包中的文件

                               -k:還原文件過程中,遇到相同文件不覆蓋

                               -m:還原文件過程中,修改文件的時間為當前時間

                       實例:

?                            # tar -cvf  all.tar *.jpg

?                            # tar -uvf all.tar logo.gif

?                            # tar -rf all.tar *.gif

?                            # tar  -cvfz    etc.tar.gz   /etc

?                            #tar  -xvf  all.tar  

?                            # tar  -xzvf    etc.tar.gz  -C /soft

                              注:除以上的壓縮工具外,還有compress(uncompress)、bzip2(unbzip2)

     (14).ln

                   功能:建立鏈接文件

                   格式:ln  [參數]  <源文件>  <鏈接文件>

                   參數:-s:建立軟鏈接文件

                         -i:提示是否覆蓋目標文件

                         -f:直接覆蓋已存在的目標文件

                   實例:

?                    # ln  /etc/abc  /abc

?                    # ln  -s  /a1     /etc/a1

     (15). touch

                   功能:創建空文件或修改文件的時間

                  格式:#touch  [參數]  文件名

                   參數:-r  修改文件的時間為指定文件的日期時間

                         -d <yymmdd>  指定文件日期時間為yymmdd

                         -t <yymmddhhmm> 指定文件日期時間為yymmddhhmm

                         -c  不創建指定的文件

                  實例:

                       #touch   /f1  /f2

                       #touch  -r  /f1  /f2

                       #touch -d "6:03pm 05/06/2000" file 

   (16). sort

                   功能:對文本文件進行排序

                   格式:sort  [參數]  [文件]

                   參數:-o  文件名  將排序結果保存到指定文件中

                         -u   去除重復行

                   實例:

                         #sort  /etc/passwd

                         #sort  –o  /etc/oldpass  /etc/passwd

  (17). paste

                 功能:合并文本文件

                 實例:#paste  f1  f2>f3

  (18). cmp

                功能:比較兩個文件是否有差異

                格式:#cmp  [參數]  文件1 文件2

                參數:-l   顯示不同的字節位置

                      -s   不顯示不同之處,只顯示返回狀態

                實例:#cmp  f1  f2

                      #cmp  -l  f1  f2

   (19). diff

                功能:顯示文件的不同之處

                格式:#diff  [參數]  文件1  文件2

                參數:-c   顯示全文,并標出不同之處

                      -u   合并顯示,并標出不同之處

                實例:#diff  f1   f2

                      #diff  -c  f1  f2

   (20). wc

                功能:統計文件中的行數、單詞數、字符數

                格式:#wc  [參數]  文件名

                參數:-c  統計字符數

                      -w  統計單詞數

                      -l  統計行數

                實例:#wc  /etc/passwd

                      #wc  -c  /etc/passwd 

                  注:1.命令自動補齊

                      按TAB鍵進行自動擴充

2.命令歷史記錄

   Linux系統采用.history文件存放命令歷史記錄,以下是與歷史記錄相關的操作:

    !  n:調用正序第n個命令

  !!  :調用上一條命令

  history:查看命令歷史記錄

    history  -c:清除歷史記錄

    history  -w 文件名:保存歷史記錄到指定的文件中

3.命令重定向

   “>”:將命令輸出結果保存到指定文件中,如果文件不存在先建立,存在就覆蓋

   “>>”:將命令輸出結果保存到指定文件中,如果文件不在存先建立,存在就覆蓋

   “<”:把文件內容輸入指定命令

   “<<”:將一對分隔之間的正文輸入給指定命令

       實例:#ls > abc.txt

             #ls /etc >>abc.txt

             #wc < /etc/passwd

             #wc <<!

4.命令管道(前一個命令的輸出作為后一個命令的輸入)

        實例:ls|more

5.命令替換(取指定命令的結果)

        實例:# cat   `ls abc`

6.多個命令執行順序

   “;”:順序執行多個命令

   “||”:前后命令的執行存在“邏輯或”關系,只有||前面的命令執行失敗后,它后面的命令才被執行

   “&&”:前后命令的執行存在“邏輯與”關系,只有&&前面的命令執行成功后,它后面的命令才被執

   實例:# ls  /etc;cd  /etc

         #ls /d1/f1||touch  f1

7.命令別名

   實例:#alias  [別名=’命令’]

8.vi編輯器的使用

   (1).vi 定義

          Vi 是Unix/Linux系統中的一種文本編輯軟件

    (2).vi三種模式

?      命令模式:刪除字符、排版

?      插入模式:插入字符、刪除、修改字符

?      最后行模式:通過命令操作vi軟件

               進入vi

 

     (3).vi的使用

         1)啟動VI

             # vi  [參數]   [文件名]

          2)VI常用命令

?              移動光標

?                 左移一個字符:按h

?                 右移一個字符:按l

?                 下移一行:    按j

?                 上移一行:    按k

?                 移至行首:    按^

?                 移至行尾:    按$

?                 移至文件頂部:按H

?                 移至文件尾部:按L

?                 移至文件中部:按M

?                 前翻一屏:    按ctrl+f

?                后翻一屏:    按ctrl+b

?                前翻半屏:    按ctrl+d

?                后翻半屏:    按ctrl+u

?                移動光標到指定行:輸入:數字

?             插入文本

?               在光標右邊插入文本:          按a

?               在一行的結尾處添加文本:      按A

?               光標左邊插入文本:            按i

?               在行首插入文本:              按I

?               在光標所在行的下一行插入新行:按o

?                在光標所在行的上一行插入新行:按O

?            撤消和重復操作

?                撤消上一個操作:按u

?                撤消光標所在行的更改:按U

?            重復操作:輸入”.”

?            刪除文本

?                  刪除當前字符:    按x

?                  刪除一詞:        按dw

                 ? 刪除一行:        按dd(剪切)

?                  刪除行的部分內容:按D(刪除光標右的內容)或按d0(刪除光標左的內容)

?                  刪除到文件的結尾:按dG

?                  dL :刪除直到屏幕上最后一行的內容 

?                  dH :刪除直到屏幕上第一行的內容 

?                  dG :刪除直到工作緩存區結尾的內容(文尾)

?                  d1G :刪除直到工作緩存區開始的內容 (文頭

?                  :n,md: 從第n行開始刪除m行

?          復制和粘貼

?                復制一行內容:按yy

?                粘貼:   按p

?         查找和替換命令 

?                 /string:向前查找字符串

?                 ?string:向后查找字符串

?                       n:繼續上一次查找

?                shift+n:以與上一次相反的方向查找

?                    :%s/字符串1/字符串2/g:在全文中替換字符串1為字符串2

?                n,ms/字符串1/字符串2/g:替換n到m行中的字符串1為字符串2

?        保存和退出命令

?            :w:寫緩沖區

?            :w 文件名:把緩沖區寫入指定文件

?            :wq:保存退出

?            :q!:不保存退出

?            :wq!:保存退出,對擁有者忽略只讀權限

?            E!:取消自上次保存以來所做的修改

?             ZZ:保存退出

?         修改文本命令

?             cl :更改當前字符

?             cw :修改到某個單詞的結尾位置

?             c3w :修改到第三個單詞的結尾位置

?             cb :修改到某個單詞的開始位置

?             c0 :修改到某行的結尾位置

?              c):修改到某個語句的結尾位置

?            c4):修改到第四個語句的結尾位置 

?             c} :修改到某個段落的結尾位置 

?            c2{ :修改到當前段落起始位置之前的第2個段落位置 

?            ctc :修改當前行直到下一個字符c所出現位置之間的內容

?            C :修改到某一行的結尾

?            cc :修改當前行

?       會話定制命令

?           :set: 顯示vi變量

?           :set all:顯示所有可能的vi變量和它們當前的值

?           :set nu:顯示行號

?           :set nonu:隱藏行號

?           :set showmode:顯示當前操作模式

?           :set noshowmode:隱藏當前操作模式

?           :set ai:自動對齊

?           :set dir=目錄:設置緩沖區的位置

                    注:-可以vi設置信息保存在用戶主目錄的.exrc文件中

     (4 ).VI的高級應用

    1)編輯多個文件

             #vi  [-o]文件1  文件2 ………

?                  -o:同一窗口打開多個文件

?                    :next:編輯下一個文件

?                    :prev:編輯上一個文件

?                    :args:顯示所有打開的文件名稱

?                    Ctrl+ww :切換窗口

?                    :e  文件名:讀入另一文件

     2)高級復制

?                   :start,end  cp  dest:將start到end行的內容復制到dest行以下

?                    :start,end  m  dest:將start到end行的內容移動到dest行以下

?                   nY:將從光標所在行開始的n行內容暫存

?                :[m],[n]w<文件名>:把m到n內容另存到指定文件中

    3)其它高級應用

?           :X 輸入口令:以口令加密保存

?           :ctrl+s:鎖定VI(ctrl+q解鎖)

?           :r !<命令>:執行指定命令,并將命令結果插入到當前文件中

?           :J:合并上下兩行

9. 定義一個目錄補全

        通過選項 -d,可以定義一個僅包含目錄名的補全參數。在下面的例子中,為 ls 命令定義了補全。

              $ ls

               countfiles.sh dir1/ dir2/ dir3/

              $ complete -d ls

              $ ls[TAB][TAB]

                dir1/ dir2/ dir3/

               如上,連按下 TAB 僅會顯示目錄名。

10. 定義一個后臺任務名補全

補全功能也能夠以任務名作為補全參數。選項 -j 可以定義任務名作為傳遞給命令的參數,如下:

       $ jobs

        [1]-Stoppedcat

        [2]+Stoppedsed'p'

       $ complete -j ./list_job_attrib.sh

       $ ./list_job_attrib.sh [TAB][TAB]

     catsed

        關于后臺任務,你可以參考 Linux 后臺任務中的例子了解如何管理后臺任務。

11. 帶有前綴和后綴的補全

補全功能可以為實際的補全內容定義前綴和后綴。在下面的例子中,為 list_job_attrib.sh 定義了補全內容的前綴和后綴。

      $ jobs

         [1]+Stoppedcat

       $ complete -P '">'-S '<"'./list_job_attrib.sh

       $ ./list_job_attrib.sh [TAB][TAB]

       $ ./list_job_attrib.sh ">cat<"

12. 帶有排除的文件名和目錄名補全

假如腳本運行完成后,輸出目錄如下:

     $ cd output/

     $ ls

       all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt

      parser_mod.tmp extract.o

如上,如果你想要 ls 命令的補全忽略 .tmp 和 .o 文件:

      $ export FIGNORE='.tmp:.o'

      $ complete -f -d ls

       $ cd output

       $ ls[TAB][TAB]

           all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt

       FIGNORE 是一個環境變量,它包含了自動補全所需要排除的文件名后綴。

13. 通過 IFS 變量分割字符串得到補全值

    可以通過 -W 選項定義補全值列表,然后通過 IFS 環境變量進行切分。切分結果會展開變量并作為補全顯示。

    $ export IFS=" "

    $ complete -W "bubble quick"./sort_numbers.sh

    $ ./sort_numbers.sh [TAB][TAB]

     bubble quick

  如上所述,字符串通過 IFS 分隔符進行切分后,內嵌的變量會被展開為變量值,所以可以如下使用變量:

    $ echo $SORT_TYPE1

      bubble

    $ echo $SORT_TYPE2

       quick

    $ complete -W "$SORT_TYPE1 $SORT_TYPE2"./sort_numbers.sh

    $ ./sort_numbers.sh [TAB][TAB]

      bubble quick

14. 寫個函數來生成補全

    你可以引入一個函數來定義補全。使用 -F 選項將函數名傳給 complete 命令,執行函數生成補全內容。例如,函數如下:

  _parser_options()

    {

        local curr_arg;

         curr_arg=${COMP_WORDS[COMP_CWORD]}

        COMPREPLY=( $(compgen -W '-i –incoming -o –outgoing -m –missed'– $curr_arg ));

     }

  在上述函數中:

     COMPREPLY : 該數組控制連按下 TAB 后顯示的結果

      COMP_WORDS : 該數組包含命令行輸入的單詞

     COMP_CWORD : COMP_WORDS 數組的索引,使用它來區分命令行可以訪問的單詞位置

      compgen : -W 基于 $current_arg 提供可能的補全及其參數

      該函數放在 parser_option 文件中,并通過 source 命令引入:

 $ source parser_option

 將該函數和你的 parser.pl 腳本關聯起來:

   $ complete -F _parser_options ./parser.pl

   $ ./parser.pl [TAB][TAB]

    -i –incoming -o –outgoing -m –missed

     如上,parser.pl 的選項是由函數 _parser_options() 生成的。

    提示: 查看/etc/bash_completion 來了解更多的可編程補全函數。

15. 當第一個規則沒有生成結果時,就使用第二個

    如果定義的補全規則沒有生成匹配時,可以使用 -o 選項生成補全。

     $ complete -F _count_files -o dirnames ./countfiles.sh

     如上,為 ./countfiles.sh 定義了 _count_files 補全函數。 如果 the _count_files() 函數沒有生成任何匹配的話,就會觸發目錄補全。

     $ ls

         countfiles.sh dir1/ dir2/ dir3/

     $./countfiles.sh [TAB][TAB]

       dir1 dir2 dir3

二、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示

  bash命令執行狀態可用命令echo $?獲取,返回0表示執行成功,返回非0表示執行失敗

三、

     (1)cd /tmp

       touch a_c,a_d,b_c,b_d

     (2)mkdir /tmp/mylinux

         cd /tmp/mylinux

         cd /tmp/mylinux

         mkdir -p ./bin,./boot/grub,./dev,./etc/rc.d/init.d,./etc/sysconfig/network-scripts,./lib/modules,./lib64,./proc,./sbin,./sys,./tmp,./usr/local/bin,./usr/local/sbin,./var/lock,/var/log,./var/run

四、

    元數據就是數據的數據。

    1、任何文件系統中的數據分為數據和元數據。數據是指普通文件中的實際數據,而元數據指用來描述一個文件的特征的系統數據,諸如訪問權限、文件擁有者以及文件數據塊的分布信息(inode…)等等。在集群文件系統中,分布信息包括文件在磁盤上的位置以及磁盤在集群中的位置。用戶需要操作一個文件必須首先得到它的元數據,才能定位到文件的位置并且得到文件的內容或相關屬性。

   2、元數據管理方式

   元數據管理有兩種方式。集中式管理和分布式管理。集中式管理是指在系統中有一個節點專門司職元數據管理,所有元數據都存儲在該節點的存儲設備上。所有客戶端對文件的請求前,都要先對該元數據管理器請求元數據。分布式管理是指將元數據存放在系統的任意節點并且能動態的遷移。對元數據管理的職責也分布到各個不同的節點上。大多數集群文件系統都采用集中式的元數據管理。因為集中式管理實現簡單,一致性維護容易,在一定的操作頻繁度內可以提供較滿意的性能。缺點是單一失效點問題,若該服務器失效,整個系統將無法正常工作。而且,當對元數據的操作過于頻繁時,集中的元數據管理成為整個系統的性能瓶頸。

         分布式元數據管理的好處是解決了集中式管理的單一失效點問題,而且性能不會隨著操作頻繁而出現瓶頸。其缺點是,實現復雜,一致性維護復雜,對性能有一定影響。

         查看文件的元數據信息可用命令:

                                    ll [options] file命令

          linux下修改為念的時間戳信息可使用touch命令

                   功能:創建空文件或修改文件的時間

                  格式:#touch  [參數]  文件名

                   參數:-r  修改文件的時間為指定文件的日期時間

                         -d <yymmdd>  指定文件日期時間為yymmdd

                         -t <yymmddhhmm> 指定文件日期時間為yymmddhhmm

                         -c  不創建指定的文件

                  實例:

                       #touch   /f1  /f2

                       #touch  -r  /f1  /f2

                       #touch -d "6:03pm 05/06/2000" file

 五,如何定義命令的別名?如何在命令中引用另一個命令的結果

         定義命令的別名可以用alias命令

         命令中引用其他命令的執行結果可有以下幾種方式

         1. 符號:` `

            名稱:反引號,上分隔符

            位置:反引號(`)這個字符一般在鍵盤的左上角,數字1的左邊,不要將其同單引號(’)混淆

            作用:反引號括起來的字符串被shell解釋為命令行,在執行時,shell首先執行該命令行,并以它的標準輸出結果取代整個反引號(包括兩個反引號)部分

            舉例:

              $ echo `date` 

              Thu Mar 7 21:31:11 CST 2013

        2. $() 

          效果同` `

        3. 命令:xargs

             xargs是給命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。它把一個數據流分割為一些足夠小的塊,以方便過濾器和命令進行處理。通常情況下,xargs從管道或者stdin中讀取數據,但是它也能夠從文件的輸出中讀取數據。xargs的默認命令是echo,這意味著通過管道傳遞給xargs的輸入將會包含換行和空白,不過通過xargs的處理,換行和空白將被空格取代。

        $ date | xargs echo

        Thu Mar 7 21:47:12 CST 2013

       管道與xargs的區別:

       管道是實現“將前面的標準輸出作為后面的標準輸入”

       xargs是實現“將標準輸入作為命令的參數”

       4. find命令的-exec參數

           xargs:通過緩沖方式并以前面命令行的輸出作為參數,隨后的命令調用該參數

           若忽略 xargs 的 options 來看的話,

           cm1 | xargs cm2

      可以單純看成: cm2 `cm1`

      因此, find …. | xargs rm 也可作 rm `find …` 來處理. 然而, 若 find 的結果太多, 可能會超過rm 可能接受的最大argument數量而失敗.

            xargs優點:由于是批處理的,所以執行效率比較高(通過緩沖方式)

            xargs缺點:有可能由于參數數量過多(成千上萬),導致后面的命令執行失敗

            若換成 find …. -exec   rm {} \; 的話, 

            因為rm 是" 逐個 " item 去處理的, 則無此憂慮

六、顯示/var目錄下所有以1開頭,以一個小寫字母結尾,且中間至少出現一位數字的文件或目錄

   cd /var 

   ls -d /var/l*[0-9]*[[:lower:]]

七、顯示\etc目錄下,以非字母開頭,后面跟了一個字母以及其他任意長度的任意字符的文件或目錄。

     cd /etc

      ls -d /etc/[0-9]*[^0-9]

八、顯示/etc/目錄下,以非字母后面跟了一個字母以及其他任意長度的任意字符的文件或目錄

     cd /etc

     ls -d /etc/[^a-zA-Z][[:alpha:]]*

九、在/tmp目錄下創建以tfile開頭,后面跟當前日期時間的文件,文件名為file-2016-5-27-09-32-22

      touch /tmp/tfile-`date "+%Y-%d-%H-%M-%S"

十、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1中

      cp -r /etc/p*[^0-9] /tmp/mytest1

十一、復制/etc目錄下所有以.d結尾的文件或目錄到/tmp/mytest2目錄中

     cp -r /etc/*.d /tmp/mytest2

十二、復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件到/tmp/mytest3目錄中

     cp /etc/[l,m,n]*.conf /tmp/mytest3

原創文章,作者:moshangliu,如若轉載,請注明出處:http://www.www58058.com/18805

(0)
moshangliumoshangliu
上一篇 2016-06-23
下一篇 2016-06-23

相關推薦

  • N25-第二周作業

    N25-第二周作業 博客作業 1、linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 linux上處理目錄的常用命令: ls :列出目錄 cd :切換目錄 pwd:顯示當前工作路徑 mkdir:創建目錄 rm:刪除文件或目錄 rmdir:刪除空文件 mv:剪切、重命名文件、目錄 cp:復制文件或目錄 touch:創建空文件 ls:= li…

    Linux干貨 2017-02-08
  • 搜索引擎-網絡爬蟲

     通用搜索引擎的處理對象是互聯網網頁,目前網頁數量以百億計,搜索引擎的網絡爬蟲能夠高效地將海量的網頁數據傳下載到本地,在本地 形成互聯網網頁的鏡像備份。它是搜索引擎系統中很關鍵也很基礎的構件。 1. 網絡爬蟲本質就是瀏覽器http請求。      瀏覽器和網絡爬蟲是兩種不同的網絡客戶端,都以相同的方式來獲取網…

    Linux干貨 2015-11-18
  • Linux Basics-重定向與管道:第一部分

    Linux Basics-重定向與管道:第一部分 概述 本教程將介紹 Linux 中重定向標準 IO 流的基本技術。學習: 什么是重定向與標準 IO 流:標準輸入、標準輸出和標準錯誤 各種流和管道的實際應用   前提條件 你應該了解 Linux 基本知識以及擁有一個正常工作的 Linux 系統,在本文說明的實例中,我采用是CentOS 7 內核版本…

    Linux干貨 2016-10-29
  • 刪除三天前備份的腳本

    [root@scm-dzm testfolder]# ll total 4 drwxr-xr-x. 2 root root   6 Jul 14 00:53 20160722 drwxr-xr-x. 2 root roo…

    Linux干貨 2016-07-16
  • 網絡管理基礎-子網劃分及網絡配置練習

    1、某公司申請到一個C 類IP 地址,但要連接6 個的子公司,最大的一個子  公司有26 臺計算機,每個子公司在一個網段中,則子網掩碼應設為?  192.168.100.1 網絡位192.168.100 192.168.100.00000000 C類掩碼255.255.255.0 192.168.100. 000 00001  …

    Linux干貨 2016-09-05
  • 進程管理工具

    進程管理工具 kill man 7 signal 1) SIGHUP: 無須關閉進程而讓其重讀配置文件 kill -1 進程編號 2) SIGINT: 中止正在運行的進程;相當于Ctrl+c 9) SIGKILL: 殺死正在運行的進程 再生進程 kill -9 殺不掉 15) SIGTERM:終止正在運行的進程 kill -15/或不寫(默認) +進程編號。…

    Linux干貨 2016-09-11

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-06-23 14:07

    寫的很棒,可以關注一些排版的技巧,那樣會更完美

欧美性久久久久