Linux基礎知識--3.Linux目錄和文件相關命令和Linux基礎特性2

Linux基礎知識--3.Linux目錄和文件相關命令和Linux基礎特性(2)

Linux中有許多基本操作命令,一些基本的操作命令在Linux後期學習中發揮很大的作用,因此能熟練的理解,掌握和應用這些基本的命令是後期學習的關鍵。在這根據命令的使用情況進行以下分類:

    1.目錄管理命令;

    2.文本文件查看命令;

    3.文件的時間戳管理工具;

    4.文件管理命令;

    5.文本處理工具;

    6.系統管理命令;

在將上述基本命令講述完之後,再來看看Linux基礎特性(2)。Linux基礎特性將涉及到命令別名的設置、字符通配、快捷鍵等。接下來詳細的介紹這些內容;(自己理解,大神勿噴)

一.基本命令:

  1.目錄管理命令:

    Linux的目錄結構是樹狀目錄,目錄有相對目錄和絕對目錄。

    linux的絕對目錄是從/目錄開始寫起,到當前目錄的全稱,利用pwd命令就可以查看當前目錄的絕對目錄

    linux的相對目錄是相對於目前工作目錄的路徑。

    其中有一些特殊目錄如下:

    .表示當前目錄

    ..表示上一級目錄

    ~表示當前登錄用戶的家目錄

    cd命令:切換目錄命令

    pwd命令:顯示當前目錄

    tree命令:列出目錄的垂直結構:

      常用選項:

        -d:只顯示出目錄,不顯示目錄下的文件

        -L #:指定顯示出的層級數

        -P pattern:顯示出pattern匹配到的內容

    目錄的創建命令:mkdir

      命令格式:

        mkdir [OPTION]... DIRECTORY...

      常用選項:

        -p:創建目錄時如果父目錄不存在,則連父目錄一起創建   

        -v:詳細顯示創建目錄的過程

        eg:

        # mkdir -pv  /tmp/{kk,zz}/{a,c}
        mkdir: created directory `/tmp/kk'
        mkdir: created directory `/tmp/kk/a'
        mkdir: created directory `/tmp/kk/c'
        mkdir: created directory `/tmp/zz'
        mkdir: created directory `/tmp/zz/a'
        mkdir: created directory `/tmp/zz/c'

        -m MODE:創建目錄時,指定所創建目錄的權限

    刪除空目錄:rmdir(注意:刪除空目錄)

      命令格式:

        rmdir [OPTION]... DIRECTORY...

      常用選項:

        -p:連同上一級的空目錄一起刪除:

        -v:顯示刪除過程;        

        rmdir -pv /etc/kk/{a,c}
        rmdir: removing directory, `/tmp/kk/a'
        rmdir: removing directory, `/tmp/kk'
        rmdir: failed to remove directory `/tmp/kk': Directory not empty
        rmdir: removing directory, `/tmp/kk/c'
        rmdir: removing directory, `/tmp/kk'
        rmdir: removing directory, `/tmp'
        rmdir: failed to remove directory `/tmp': Directory not empty

      也可以用命令rm -rf DIRECTORY 刪除目錄,即使不是目錄不是空目錄也會刪除。但千萬不要執行

      rm -rf /* 這個命令,我想學習Linux的同學都知道這是什麼意思!!

     關於執行文件路徑的變量:$PATH

       用root用戶的身份查詢$PATH 路徑結果:   

    # echo $PATH
    /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bi
    n:/root/bin

     PATH變量的內容是由一堆目錄所組成的,每個目錄中間用冒號來隔開,每個目錄是由順序之分的

  2.文本文件查看類命令:

    文本文件查看類涉及的命令有:cat,tac,more,less,tail,head

    cat:從第一行顯示文件內容

      常用選項:

        -n:打印出行號

    tac:從最後一行開始顯示文件內容

    more:成頁顯示文件內容

     在more打開一個文件後,會有一些快捷翻頁按鍵:

        1.空格鍵:向下翻一頁

        2.Enter鍵:向下滾動一行

        3.b:向前翻一頁

        4./string:代表在more顯示的內容中,向下顯示string這個關鍵字

        5.q:退出more

    less:與more類似

      less的用法比more更有彈性,其中man手冊中的操作方法就是利用less命令,也有一些快捷鍵:

        1.空格,Ctrl+V,Ctrl+f,Ctrl+F:向文件尾部翻屏

        2.b Ctrl+B:向文件首部翻屏

        3.d Ctrl+D:向文件尾部翻半屏

        4.u Ctrl+U:向文件首部翻半屏

        5.Enter Ctrl+N e j  Ctrl+E Ctrl+J:向文件尾部翻一行

        6.y k Ctrl+y Ctrl+P:向文件首部翻一行

        7.q:退出

        8.#:跳轉至#行

        9.G到行尾,1G到行首

        等。詳細的選項查看man手冊使用方法。

    head:默認查看文件的前10行:

      命令格式:

        head [OPTION]... FILE...

      常用選項:

        -c #:查看文件的前#個字節

        -n #:查看文件的前#行

      實例:  

      #head -n 5 /etc/passwd
      root:x:0:0:root:/root:/bin/bash
      bin:x:1:1:bin:/bin:/sbin/nologin
      daemon:x:2:2:daemon:/sbin:/sbin/nologin
      adm:x:3:4:adm:/var/adm:/sbin/nologin
      lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


    tail:默認查看文件的後10行:

      命令格式:

        tail [OPTION]... FILE...

      常用選項:    

        -c #:查看文件的後#個字節

        -n #:查看文件的後#行

        -f:一直查看文件新追加的內容:例如查看日誌文件。按Ctrl+c退出

      實例:

     # tail -n 5 /var/log/messages 
     Aug 21 23:27:24 localhost bluetoothd[1542]: HCI dev 0 up
     Aug 21 23:27:24 localhost bluetoothd[1542]: Starting security manager 0
     Aug 21 23:27:24 localhost bluetoothd[1542]: Parsing /etc/bluetooth/serial
     .conf failed:
     No such file or directory
     Aug 21 23:27:24 localhost bluetoothd[1542]: ioctl(HCIUNBLOCKADDR): Invali
     d argument (22)
     Aug 21 23:27:24 localhost bluetoothd[1542]: Adapter /org/bluez/1528/hci0
     has been enabled

  3.文件的時間戳管理工具:

    每個文件在linux下面都會記錄三個主要修改時間:

      access time(atime):最近文件訪問時間,讀取文件的內容時,此時間就會發生修改,比如使用cat查看文件內容時。

      modification time(mtime):當文的內容更改時,就會更新這個時間,而不是文件的屬性或權限。

      change time(ctime):最近文件改變時間,改變文件元數據,像文件的權限與屬性被更改了,這個時間見就會發生變化。

    使用touch命令來修改時間戳或者創建一個不存在的文件:

      命令格式:

        touch [OPTION]... FILE...

      常用選項:

        -a:僅修改訪問時間(atime)

        -c:修改文件的時間,假如文件不存在則不創建文件。

        -m:修改mtime

        -d:使用指定的日期時間,而非現在的時間

      當我們去用命令cat 查看一個文件內容時,可用命令stat + filename 查看文件的access time 發生了變化同理,當我們用vim打開一文件內容並做相應的修改,則mtime也會發生改變,ctime和access也會隨之變化,當對一個文件進行修改權限和屬性時,文件的ctime會發生變化。如以下實例:

       有一個文件a.txt 三種初始時間戳爲:     

       # stat a.txt         
       File: `a.txt'
       Size: 49        Blocks: 8          IO Block: 4096  
        regular file
       Device: fd00h/64768dInode: 262164      Links: 1
       Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: ( 
          0/  root)
       Access: 2015-08-18 23:28:19.598932488 +0800
       Modify: 2015-08-18 23:28:04.483931823 +0800
       Change: 2015-08-18 23:28:04.486931725 +0800

       我們使用命令cat來查看文件內容如:cat a.txt。然後使用命令stat來查看a.txt的時間戳    

        # stat a.txt   (在這隻給出了時間戳信息)   
        Access: 2015-08-22 08:53:49.724189593 +0800
        Modify: 2015-08-18 23:28:04.483931823 +0800
        Change: 2015-08-18 23:28:04.486931725 +0800

      會發現只有Access的時間發生了改變,其他沒有發生變化。我們在修改文件的內容,來查看修改之後時間戳的變化:       

        # echo hello" > a.txt
        # stat a.txt        
        Access: 2015-08-22 08:53:49.724189593 +0800
        Modify: 2015-08-22 08:59:44.778186361 +0800
        Change: 2015-08-22 08:59:44.778186361 +0800

      會發現Modify時間發生改變,Change也發生改變。而atime沒有發生改變,是因爲我們沒有打開查看文件,只是通過命令echo向文件追加內容。假如我們使用vim打開文件並做相應的修改,則三種時間都會發生改變我們再用命令chmod修改文件的權限,查看文件a.txt的ctime是否改變:       

        # chmod +x a.txt   
        # stat a.txt     
        Access: 2015-08-22 09:00:25.013189719 +0800
        Modify: 2015-08-22 09:00:25.013189719 +0800
        Change: 2015-08-22 09:09:33.291184015 +0800

      命令執行後會發現文件a.txt的ctime發生了改變。

  4.文件管理命令:

    文件管理命令涉及到文件的複製、粘貼和刪除,分別是cp、mv、rm命令

    1.cp命令:

      命令使用格式:    

       cp [OPTION]... [-T] SOURCE DEST

   cp [OPTION]... SOURCE... DIRECTORY

   cp [OPTION]... -t DIRECTORY SOURCE...

     (1)cp SOURCE DESR

        如果目標文件不存在,將會新建DEST,並將SRC中的內容填充至DEST中

        如果目標文件存在:

            如果DEST是文件:將SOURCE中的內容覆蓋至DEST中,爲了數據的安全此時

        建議使用-i選項

            如果DEST是目錄:在DEST下新建與源文件同名的文件,並將SOURCE中的內容

        填充新的文件中

     (2)cp SOURCE...  DEST

        如果SOURCE爲多個文件:則DEST必須存在且爲目錄。其他情形均會出錯。

     (3)cp SOURCE DEST

        SOURCE 是目錄:此時要用-r選項:

            如果DEST不存在:則創建指定目錄,複製SRC目錄中的所有文件至DEST中;

            如果DEST不存在;

              如果是DEST是文件,報錯

              如果DEST是目錄:直接把SOURCE複製到DEST中.

      常用選項:

        -i:交互模式,提示覆蓋時會有所提示。

        -f:強制複製

        -r/-R:遞歸複製目錄及文件

        -d: --no-dereference --preserve=links複製符號連接

        -a/-dr|R:--preserve=all 遞歸複製並保存源文鍵的相關屬性

        -l:對源文件建立硬鏈接,而非複製源文件

        -s:對源文鍵建立軟連接,而非複製源文件

      實例:      

       # cp -r /etc/sysconfig/network-scripts/ /tmp/network/
       [root@localhost etc]# ls -l /tmp/network/
       total 204
       -rw-r--r-- 1 root root   158 Aug 22 10:12 ifcfg-eth1
       -rw-r--r-- 1 root root   254 Aug 22 10:12 ifcfg-lo
       lrwxrwxrwx 1 root root    20 Aug 22 10:12 ifdown -> ../../../sbin/ifdown
       -rwxr-xr-x 1 root root   627 Aug 22 10:12 ifdown-bnep
       -rwxr-xr-x 1 root root  5511 Aug 22 10:12 ifdown-eth
       -rwxr-xr-x 1 root root   781 Aug 22 10:12 ifdown-ippp
       -rwxr-xr-x 1 root root  4168 Aug 22 10:12 ifdown-ipv6
       [root@localhost ~]# cp -s a.txt c.rlink
       lrwxrwxrwx  1 root root     5 Aug 22 10:08 c.rlink -> a.txt
       [root@localhost ~]# cp -l a.txt c.link
       [root@localhost ~]# ll
       -rw-r--r--  1 root root    12 Aug 22 10:05 c.link

  5.文本處理命令:

    文本處理命令有wc、cut、sort、uniq

    wc命令:wc - print newline, word, and byte counts for each file

      命令格式:

        wc [OPTION]... [FILE]...

      常用選項:

        -l:顯示行數

        -w:顯示單詞數

        -c:顯示字符數

    sort命令:對文件內容進行排序

      命令格式:

        sort [OPTION]... [FILE]...

      常用選項:

        -r:逆序排列

        -n:按數值大小排序

        -f:忽略字符大小寫

        -k#:以指定字段爲標準進行排序

        -t#:指定分隔符

        -u:uniq:排序後去重。相同的只顯示一次

    cut命令:文本切割命令

      命令格式:

        cut OPTION... [FILE]...

      常用選項:

        -d:指定分隔符。默認爲空格

        -f#:選定定第#字段

          使用格式爲:

            -f#:

            -f#,#,..:離線的多個字段

            -f#-#:連續多個字段

        --output-delimiter=STRING:選定自己指定的分隔符

        eg:

        cut -d: -f1,7 /etc/passwd --output-delimiter="@"         
        root@/bin/bash
        bin@/sbin/nologin
        daemon@/sbin/nologin

    uniq命令     

    注意:連續且完全相同方爲重複:

      常用選項:

        -c:顯示每行重複的次數

        -d:只顯示重複的行

        -u:只顯示不曾重複的行

    

二.Linux基礎特性二:

 1.命令別名(alias)

    alias:顯示當前shell進程所有可用的命令別名

    定義別名:

      alias NAME='VALUE'

      在命令模式下定義的別名,僅對當前shell進程有效, 要想永遠有效需要修改配置文件

      對當前用戶有效:~/.bashrc

      對多有用戶有效:/etc/bashrc

      然後重新讀取配置文件,就會立即生效:source ~/.bashrc

    撤銷別名:

      unalias name

    如果在沒有撤銷別名時,要執行原命令用:/COMMAND

  2.glob:字符通配:

    man 7 glob

    bash 中用於實現文件名通配的通配符有:

      *、?、[]

      *:任意長度的任意字符

      ?:任意單個字符

      []:匹配指定範圍內的任意單個字符

      [^]:匹配指定範圍之外的字符

      專用字符集合:

        [:digit:]:任意數字,相當於0-9

        [:lower:]:任意小寫字母

        [:upper:]:任意大寫字母

        [:alpha:]:任意大小寫字母

        [:alnum:]:任意數字或字母

        [:space:]:空格字符

        [:punct:]:標點符號

   練習:

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

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

  2.顯示/etc/目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄

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

  3.顯示/etc/目錄下,以非字母開頭,後面跟了一個字母及其其他任意長度任意字符的文件或目錄

    ls -d /etc/[^[:alpha:]][[:alpha:]]*

  4.複製/etc/目錄下,所有以m開頭,以非數字結尾的文件或目錄至/tmp/mageedu目錄中

    cp -a /etc/m*[^[:digit:]] /etc/mageedu

  5.複製/etc/目錄下,所有以.d結尾的文件或目錄至/tmp/mageedu目錄中;

    cp -a /etc/*.d  /tmp/magedu.com

  6.複製/etc/目錄下,所有以.conf結尾的文件,且m,n,r,p開頭的文件或目錄複製到/tmp/mageedu

    cp -a /etc/[mnrp]*.conf /tmp/mageedu.com


  3.bash的快捷鍵:   

    Ctrl+l:清屏:相當於命令clear

    Ctrl+a:跳轉到命令行的開始處

    Ctrl+e:跳轉到命令行的結尾處

    Ctrl+u:刪除命令行首至光標所在處的所有內容

    Ctrl+k:刪除光標所在處至命令行尾的所有內容

  4.bash的I/O重定向和管道

    程序是由指令和數據組成:程序執行時需要讀入數據和程序執行後把數據輸出

    數據的輸入和輸出一般是從鍵盤輸入數據,在屏幕上輸出數據

    讀入數據:Input,輸出數據:Output

    打開一個文件都有一個fd:file descriptor:內核來訪文件。文件描述符是非負數。打開現存文件或新文件時,內核會返回一個文件描述符。讀取文件也需要使用文件描述符來指定待讀寫的文件。

    標準輸入:0

    標準輸出:1

    標準錯誤輸出:2

    

    I/O重定向:就是改變標註輸入和輸出的位置。

    1.輸出重定向:COMMAND > NEW_POSITON  COMMAND >> NEW_POS

        >:覆蓋重定向,目標文件中的原有內容會被清楚

        >>:追加重定向,新內容將會追加至目標文件尾部

        set -C:禁止將內容覆蓋輸出至已有文件中。

            強制覆蓋:>|

        set +C:取消上述操作

        2>:覆蓋重定向錯誤輸出數據流:

        2>>:追加重定向錯誤輸出數據流            

            標準輸出和錯誤輸出各自定向至不同的位置:    

            COMMAD > /path/to/file.out 2> /path/to/error.out

            將標註輸出和錯誤輸出至同一個文件中:(有兩種方法:)

            &>:覆蓋重定向

            &>>:追加重定向

                1.COMMAND &> /path/to/file.out

                2.COMMAND > /path/to/file.out 2>&1

    2.輸入重定向:<

        實例:

        cat << EOF

        cat > /tmp/shell << EOF

    3.管道|:把上一個命令的執行結果當做下一個命令的執行參數

        tr命令:轉換或刪除字符:

            cat a.txt | tr 'a-z' 'A-Z'

        tee命令:

          tee [option].. [file]..

        把要內容顯示在屏幕上又保存到文件中

        # echo $PATH  | tr 'a-z' 'A-Z' | tee /tmp/path

    實例:   

    1.# head -n 5 /etc/passwd | tr 'a-z' 'A-Z'  > /tmp/passed.out

    2.# who | tail -n 2 | tr 'a-z' 'A-Z' > /tmp/who.out 



             

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章