Linux學習之路-基礎命令、管道、軟連接【3】---20171120

一、linux 簡單命令總結


1、基礎命令


ls 命令(list):列出指定目錄下的內容

       [root@Centos6~]#which ls
       alias ls='ls --color=auto'      別名
                          /bin/ls      物理地址

    ls [OPTION]... [FILE]...

常用參數:  -a  --all:顯示所有文件,包括.和..在內所有隱藏的文件

            -A  --almost-all:顯示所以文件,不包括.和..在內的

            -l  use a long listing format使用長格式,顯示屬性信息

            -h  --human-readable:對數值做單位換算

            -d  僅查看目錄自身屬性

            -R  recursive,目錄遞歸通過

            -r  reverse,降序(逆序)顯示

            -i  顯示文件的inode號碼

            -1  文件分行顯示

            -S  按從大到小排序

                –t  按mtime排序

                –u  配合-t選項,顯示並按atime從新到舊排序

                –U  按目錄存放順序顯示

                –X  按文件後綴排序


lscpu 命令 :查看計算機cpu信息


       [root@Centos6~]#lscpu
       Architecture:          x86_64
       CPU op-mode(s):        32-bit, 64-bit
       Byte Order:            Little Endian
       CPU(s):                2  ----->這是cpu的個數
       On-line CPU(s) list:   0,1 
       Thread(s) per core:    1
       Core(s) per socket:    1
       Socket(s):             2
       NUMA node(s):          1
       Vendor ID:             GenuineIntel
       CPU family:            6
       Model:                 42
       Model name:            Intel(R) Core(TM) i5-2435M CPU @ 2.40GHz   
       CPU MHz:               2394.609
       BogoMIPS:              4789.21
       L1d cache:             32K
       L1i cache:             32K
       L2 cache:              256K
       L3 cache:              3072


lsblk 命令 : 查看塊設備信息


      [root@Centos6~]#lsblk
      NAME     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sr0       11:0    1  3.7G  0 rom  /media/CentOS_6.9_Final
      sda        8:0    0  200G  0 disk     ----->  硬盤信息情況
      ├─sda1   8:1    0    1G  0 part /boot
      ├─sda2   8:2    0 48.8G  0 part /
      ├─sda3   8:3    0 19.5G  0 part /app
      ├─sda4   8:4    0    1K  0 part 
      └─sda5   8:5    0    2G  0 part [SWAP]


lsusb 命令 :查看usb設備


      [root@Centos6~]#lsusb
       Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
       Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
       Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
       Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
       Bus 002 Device 005: ID 0e0f:0008 VMware, Inc.


df  命令(report file system disk space usage) :查看磁盤使用狀態

            df [OPTION]... [FILE]...

            常用參數:-h:human-readable,單位換算,易於人讀

                      -l:查看本地磁盤文件系統

                      -i:查看inode使用情況而非blocks

       [root@Centos6~]#df -i
        Filesystem      Inodes  IUsed   IFree IUse% Mounted on
        /dev/sda2      3203072 134233 3068839    5% /
        tmpfs           125514      4  125510    1% /dev/shm
        /dev/sda3      1281120     13 1281107    1% /app
        /dev/sda1        65536     38   65498    1% /boot
        /dev/sr0             0      0       0     - /media/CentOS_6.9_Final


free 命令 :顯示系統中可用和已用內存的數量

       free [-b | -k | -m | -g | -h] [-o] [-s delay ] [-c count ] [-a] [-t] [-l] [-V]

       常用參數:-b開關顯示以字節爲單位的內存量

                 -k開關(默認設置)dis-以千字節播放

                 -m開關以兆字節顯示它

                 -g開關顯示它以千兆字節爲單位

                 -h開關顯示所有輸出字段自動縮放到最短(三數字)表示,包括單位。這使得這些值是可讀的

                 -l開關顯示詳細的低和高內存統計信息

         [root@Centos6~]#free -h
                        total       used       free     shared    buffers     cached
           Mem:          980M       427M       553M       424K        62M       178M
           -/+ buffers/cache:       186M       793M
           Swap:         2.0G         0B       2.0G


cat 命令(concatinate):連接文件並在標準輸出上打印

       cat [OPTION]... [FILE]...

     常用參數 :  -A 顯示所有 相當於-vET

                  -b 非空的輸出行數

                  -E 顯示結束符,在每行的末尾顯示$

                  -n 對顯示出的行進行編號

                  -s 擠壓空白抑制重複空行輸出

                  -T 顯示標籤 顯示TAB字符爲^I

      如果沒有FILE,或者FILE是 - 讀取標準輸入

          [root@Centos6~]#cat /proc/swaps  -----> 查看虛擬內存信息
           Filename                                Type            Size    Used    Priority
           /dev/sda5                               partition       2097148 0       -1


echo 命令 :回顯命令、顯示字符

     [SHORT-OPTION]... [STRING]...

    常用參數: -n:不自動附加換行符;即都在一行顯示;

               -e:啓用轉義符,使能轉義符\;

                     \a 發出警告聲

                     \b 退格鍵

                     \c 最後不加上換行符號

                     \n 換行且光標移至行首

                     \r 回車,即光標移至行首,但不換行

                     \t 插入tab

                     \\插入\字符

                     \0nnn 插入nnn(八進制)所代表的ASCII字符

                          echo -e '\033[43;31;5mmagedu\033[0m'

                     \xHH插入HH(十六進制)所代表的ASCII字

                顯示變量,沒有賦值內容爲空

            [root@Centos6~]#echo $PATH
              /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
            [root@Centos6~]#echo $ABC
                                                    -----> $ABC 變量沒有賦值,所以爲空
            [root@Centos6~]#

                bash是弱類型的編程語言,不嚴格區分數據類型,意味着把所有數據統統當做字符串處理

                    字符串類型的數據可不加引號

                引號有三種類型:'' 、"" 、 ``

                    引號:字符串引用符號

                        '' 單引號:強引用;其內部的變量不會替換

                        "" 雙引號:弱引用;其內部的變量會被替換爲普通字符

                        `` 反引號:命令引用符號


who 命令 : 顯示登錄當前系統的用戶

           [OPTION]... [ FILE | ARG1 ARG2 ]

     常用參數:  -a  顯示詳細信息,相當於-b -d --login -p -r -t -T -u同時用的效果

                 -r  僅顯示運行級別

                 -b  僅顯示系統本次的啓動時間

           [L@Centos6/root]$who -a
                    system boot  2017-11-20 18:30
                    run-level 3  2017-11-20 21:06                   last=5
           LOGIN      tty3         2017-11-20 18:30              2201 id=3
           LOGIN      tty2         2017-11-20 18:30              2199 id=2
           LOGIN      tty4         2017-11-20 18:30              2204 id=4
           LOGIN      tty5         2017-11-20 18:30              2206 id=5
           LOGIN      tty6         2017-11-20 18:30              2208 id=6
                      tty1         2017-11-20 21:06              2250 id=:0    term=0 exit=0
                      pts/0        2017-11-20 21:06                 0 id=/0    term=0 exit=0
           root     + tty1         2017-11-21 02:14 05:58        4562
           root     + pts/0        2017-11-21 02:15   .          4596 (192.168.27.1)


命令:顯示登錄的用戶及正在執行的命令

         [options] user [...]

     常用參數: -f --from:只顯示從哪來的

               -i --ip-addr:只顯示ip地址,不顯示主機名

            [root@Centos6~]#w
             08:09:11 up 13:39,  2 users,  load average: 0.00, 0.00, 0.00
             USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
             root     tty1     -                 02:14    5:54m  0.05s  0.05s -bash
             root     pts/0    192.168.27.1      02:15    0.00s  0.32s  0.04s w


whoami 命令:顯示當前有效的用戶ID(su命令切換用戶時可用)

            [L@Centos6/root]$whoami
             L


alias 命令:定義或顯示別名

         [-p] [name[=value] ... ]

         alias NAME='VALUE'

在命令行中定義的別名,僅對當前shell進程有效

如果想永久有效,要定義在配置文件中

        僅對當前用戶:~/.bashrc

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

           [L@Centos6/root]$alias
             alias l.='ls -d .* --color=auto'
             alias ll='ls -l --color=auto'
             alias ls='ls --color=auto'
             alias vi='vim'
             alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'


hash 命令 : 緩存表

系統初始hash表爲空,當外部命令執行時,默認會從PATH路徑下尋找該命令,找到後會將這條命令的路徑記錄到hash表中

當再次使用該命令時,shell解釋器首先會查看hash表,存在將執行之,

如果不存在,將會去PATH路徑下尋找。利用hash緩存表可大大提高命令的調用速率

    hash常見用法 : hash 顯示hash緩存

                      hash –l 顯示hash緩存,可作爲輸入使用

                      hash –p path name 將命令全路徑path起別名爲name

                      hash –t name 打印緩存中name的路徑

                      hash –d name 清除name緩存

                      hash –r 清除緩存

           [L@Centos6/root]$hash
            hits    command
              2    /usr/bin/who
              1    /usr/bin/whoami
              1    /usr/bin/man
              1    /usr/bin/info

備註:在別人機器上做了壞事別忘記清空hash表


history 命令 :已用過的命令歷史列表

         [-c] [-d offset] [n]

       history -anrw[filename]

       history -psarg[arg...]

         常用參數:-c: 清空命令歷史

                   -d offset: 刪除歷史中指定的第offset個命令

                    n: 顯示最近的n條歷史

                   -a: 追加本次會話新執行的命令歷史列表至歷史文件

                   -r: 讀歷史文件附加到歷史列表

                   -w: 保存歷史列表到指定的歷史文件

                   -n: 讀歷史文件中未讀過的行到歷史列表

                   -p: 展開歷史參數成多行,但不存在歷史列表中

                   -s: 展開歷史參數成一行,附加在歷史列表後

快捷方法 : !n 執行history命令輸出對應序號n的命令

           !-n 執行history歷史中倒數第n個命令

           ctrl-r來在命令歷史中搜索命令

               (reverse-i-search)`’

           Ctrl+g:從歷史搜索模式退出

           使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令

           command !string:^ 從命令歷史中搜索以string 開頭的命令,並獲取它的第一個參數

           command !string:$ 從命令歷史中搜索以string 開頭的命令,並獲取它的最後一個參數

           command !string:n 從命令歷史中搜索以string 開頭的命令,並獲取它的第n個參數

           command !string:* 從命令歷史中搜索以string 開頭的命令,並獲取它的所有參數

           command !^ : 利用上一個命令的第一個參數做cmd的參數

           command !$ : 利用上一個命令的最後一個參數做cmd的參數

           command !* : 利用上一個命令的全部參數做cmd的參數

           command !:n : 利用上一個命令的第n個參數做cmd的參數

           command !n:^ 調用第n條命令的第一個參數

           command !n:$ 調用第n條命令的最後一個參數

           command !n:m 調用第n條命令的第m個參數

           command !n:* 調用第n條命令的所有參數

*命令歷史相關環境變量:

            $HISTSIZE:

                shell進程的緩衝區保留的歷史命令的條數;

            $HISTFILESIZE:

                命令歷史文件可保存的歷史命令的條數;

                默認均爲1000;

            $HISTFILE:存放當前用戶的命令歷史文件,默認爲~/.bash_history

                                     存放在/etc/profile 或~/.bash_profile

          $HISTTIMEFORMAT="%F %T" 顯示時間

                  [L@Centos6/root]$HISTTIMEFORMAT="%F %T"
                  [L@Centos6/root]$history
                      1  2017-11-21 08:11:22lsblk
                      23  2017-11-21 08:46:17HISTTIMEFORMAT="%F %T"
                      24  2017-11-21 08:46:20history

          $HISTIGNORE="str1:str2*:…" 忽略str1命令,str2開頭的歷史

  控制命令歷史的記錄方式:

        環境變量:HISTCONTROL

                  ignoredups默認,忽略重複的命令,連續且相同爲“重複”

                  [L@Centos6/root]$echo $HISTCONTROL
                    ignoredups

                  ignorespace忽略所有以空白開頭的命令

                  ignoreboth相當於ignoredups, ignorespace的組合

                  erasedups刪除重複命令

                export 變量名="值“


2、bash 特性

      bash的特性之一:命令別名

      bash的特性之二:命令歷史

        shell進程會保存期會話中用戶曾經執行過的命令;命令通過其“命令歷史”文件來持久保存此前執行過的命令;每個用戶都有其自己專用的命令歷史文件;

        shell登錄後會讀取命令歷史文件,把以前的舊命令都載入進來,而用戶登錄後執行的新命令會在該shell的緩衝區中;當shell正常退出時,會把緩衝區中的新命令追加到命令歷史文件中;

        意外退出可能不會保存歷史命令;本次登錄的進程運行過的命令保存在緩衝中,開機前的命令保存在命令歷史文件中;

   

        重複前一個命令,有4種方法:重複前一個命令使用上方向鍵,並回車執行

                                   按!! 並回車執行

                                 輸入!-1 並回車執行

                                 按Ctrl+p 並回車執行

      !:0 執行前一條命令(去除參數)

      Ctrl + n 顯示當前歷史中的下一條命令,但不執行

      Ctrl + j 執行當前命令

      !string 重複前一個以“string”開頭的命令

      !?string 重複前一個包含string的命令

      !string:p僅打印命令歷史,而不執行

      !$:p 打印輸出!$ (上一條命令的最後一個參數)的內容

      !*:p打印輸出!*(上一條命令的所有參數)的內容

      ^string刪除上一條命令中的第一個string

      ^string1^string2將上一條命令中的第一個string1替換爲string2

      !:gs/string1/string2將上一條命令中所有的string1都替換爲string2

      

 要重新調用前一個命令中最後一個參數:

      !$ 表示

      Esc, .(點擊Esc鍵後鬆開,然後點擊. 鍵)

      Alt+ .(按住Alt鍵的同時點擊. 鍵)

        

  bash特性之三:快捷鍵


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

      Ctrl + o 執行當前命令,並重新顯示本命令

      Ctrl + s 阻止屏幕輸出,鎖定

      Ctrl + q 允許屏幕輸出

      Ctrl + c 終止命令

      Ctrl + z 掛起命令

      Ctrl + a 光標移到命令行首,相當於Home

      Ctrl + e 光標移到命令行尾,相當於End

      Ctrl + f 光標向右移動一個字符

      Ctrl + b 光標向左移動一個字符

      Alt + f 光標向右移動一個單詞尾

      Alt + b 光標向左移動一個單詞首

      Ctrl + xx 光標在命令行首和光標之間移動

      Ctrl + u 從光標處刪除至命令行首

      Ctrl + k 從光標處刪除至命令行尾

      Alt + r 刪除當前整行

      Ctrl + w 從光標處向左刪除至單詞首

      Alt + d 從光標處向右刪除至單詞尾

      Ctrl + d 刪除光標處的一個字符

      Ctrl + h 刪除光標前的一個字符

      Ctrl + y 將刪除的字符粘貼至光標後

      Alt + c 從光標處開始向右更改爲首字母大寫的單詞

      Alt + u 從光標處開始,將右邊一個單詞更改爲大寫

      Alt + l 從光標處開始,將右邊一個單詞更改爲小寫

      Ctrl + t 交換光標處和之前的字符位置

      Alt + t 交換光標處和之前的單詞位置

      Alt + N 提示輸入指定字符後,重複顯示該字符N次

注意:Alt組合快捷鍵經常和其它軟件衝突


gnome-terminal

     應用程序->附件->終端

     支持多個“標籤”shell的圖形化終端模擬器

     Ctrl-Shift-n 創建新窗口

     Ctrl-Shift-q關閉當前窗口

     Ctrl-Shift-t 創建一個標籤頁

     Ctrl-Shift-w 關閉一個標籤頁

     Ctrl-PaUp/PgUn切換到下一個/前一個標籤頁

     Ctrl-Shift-c 複製選中的文本

     Ctrl-Shift-v 把文本粘帖到當前光標處


bash  I/O重定向和管道基礎特性

     程序:指令+數據

        讀入數據:Input

            可用於輸入的設備:文件;鍵盤設備、文件系統上的常規文件、網卡設備、鼠標、硬盤

        輸出數據:Output

            可用於輸出的設備:文件;顯示器、文件系統上的常規文件、網卡設備

     fd(file descriptor) :打開的文件都有一個fd: file descriptor (文件描述符)

 Linux給程序提供三種I/O設備

     標準輸入(STDIN)-0默認接受來自鍵盤的輸入

     標準輸出(STDOUT)-1默認輸出到終端窗口

     標準錯誤(STDERR)-2默認輸出到終端窗口

 I/O重定向:改變默認位置

                

    STDOUT(輸出)和STDERR(錯誤)可以被重定向到文件

       命令  操作符號  文件名

       支持的操作符號包括:

         >  把STDOUT重定向到文件

         2> 把STDERR重定向到文件

         &> 把所有重定向都輸入到指定文件中(包含錯誤、正確全部)

         >  文件內容會被覆蓋           COMMAND > /PATH/TO/SOMEFILE

         >> 原有內容基礎上,追加內容   COMMADN >> /PATH/TO/SOMEFILE

         2> 覆蓋重定向錯誤輸出數據流   COMMAND 2> /PATH/TO/SOMEFILE

         2>> 追加重定向錯誤輸出數據流  COMMAND 2>> /PATH/TO/SOMEFILE


        shell的功能開關

           set -C 禁止將內容覆蓋已有文件,但可追加

           >| file 強制覆蓋

           set +C 允許覆蓋


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

           COMMAND > /path/to/file.out2> /path/to/error.out


       合併標準輸出和錯誤輸出爲同一個數據流進行重定向

         &> 覆蓋重定向

         &>> 追加重定向

         COMMAND > /path/to/file.out2>&1 (順序很重要)

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


      1>&2    對的變成錯誤的

      2>&1    錯的變成正確的


      ( ) : 合併多個程序的STDOUT

             (cal2007;cal2008)> all.txt

命令 :創建新的文件或者情況文件內容

         > 符號可以創建新的文件,如果創建文件已存在,將把文件內容全部清空

         故創建新的文件這個符號要慎用,儘量用touch命令創建新的文件

         但在生產中,如果有大的文件存在,在刪除前可以先用 > 來清空在刪除文件


touch 命令 : 更改文件時間戳

     [OPTION]... FILE...

     常用參數:-a 僅改變atime和ctime

               -m 僅改變mtime和ctime

               -t 指定atime和mtime的時間戳  [[CC]YY]MMDDhhmm[.ss] 

               -c 如果文件不存在,則不予創建

            

stat 命令(display file or file system status) : 顯示文件或文件系統狀態

      顯示內容包括:文件路徑、文件大小、文件佔用block、每個IO block大小

                    文件類型、文件所在設備的主/次設備號

                    文件的inode、文件被硬鏈接次數

                    文件權限、文件的屬主UID、文件的屬組GID

                    環境(SELinux)

                    access time:atime,文件最近一次被訪問的時間;

                    modify time:mtime,文件最近一次被修改(內容)的時間(即數據);只要數據變了元數據一定會變

                    change time:ctime,文件最近一次改動的時間(元數據)

      stat [OPTION]... FILE...

                文件的數據組成部分:

                元數據(metadata):存放於文件系統中的inode裏;

                數據(data):存放在data blocks裏


cp 命令 (copy) :複製文件和目錄


            單源複製:cp [OPTION]... [-T] SOURCE DEST

            多源複製:cp [OPTION]... SOURCE... DIRECTORY:目標必須是目錄

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

                          SRC是文件:

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

                          如果目標存在:如果DEST是文件:將SRC中的內容覆蓋至DEST中,基於安全,建議爲cp命令使用-i選項

                                        如果DEST是目錄:在DEST下新建與原文件同名的文件,並將SRC中內容填充至新文件中


            常用參數: -i,--interactive:交互式複製,即覆蓋目標文件之前提醒用戶確認

                       -a,--archive:歸檔複製;備份時纔會使用;相當於-dR --preserve=all;

                       -f,force:強制覆蓋目標文件

                       -R,-r,--recursive:遞歸複製目錄及其內容

                       --backup=numbered 目標存在,覆蓋前先備份加數字後綴

                       -P,--no-dereference:複製鏈接文件本身,而非默認的複製鏈接文件指向的原文件內容

                       -d:相當於--no-dereference;複製鏈接本身(默認爲複製鏈接文件的原文件內容)

                       -u: --update 只複製源比目標更新文件或目標不存在的文件

                       -v: --verbose 

                       --preserve[=ATTR_LIST]:mode: 權限

                                         ownership: 屬主屬組

                                         timestamp

                                         links

                                         xattr

                                         context

                                         all

注意:僅管理員有權限複製時保留屬主和屬組屬性;

blob.png



mv 命令(move (rename) files) :  移動文件、文件夾或者重命名

                單源移動:mv [OPTION]... [-T] SOURCE DEST

                多源移動:mv [OPTION]... SOURCE... DIRECTORY

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


注意:原文件目錄與目標文件目錄相同時,爲rename;否則爲move

               不區分目錄和文件,直接move

               常用選項:

                      -i,--interactive:交互式複製,移動時,如果目標文件存在時提示用戶確定是否覆蓋(僅root用戶)

                      -f,force:強制移動(相當於先刪除原文件,在複製新文件過來),覆蓋前不提示


     rm 命令 (remove files or directories):刪除一切(跑路命令)

             [OPTION]... FILE...

             即能刪除文件又能刪目錄,但刪目錄時要用遞歸-r選項

             常用選項:

                 -r, -R, --recursive:遞歸刪除目錄及其內容

                 -f,force:強制刪除,不提示確認

                 -i,--interactive:交互式,提示確認


            rm -rf /*  自殺的方法( 最好玩的命令)


            建議在生產環境中,要自建回收站!禁用rm直接操作。

                     把rm定義爲mv的別名,可以刪除文件及目錄,但不可以加 -r 選項

         [root@Centos7~]#alias rm=`mv -t /app/recycle`


mkdir 命令 :創建目錄

         [OPTION]... DIRECTORY...

         常用參數:-p  存在不報錯,且可自動創建所需的各目錄

                   -v  --verbose:顯示創建過程

                   -m  --mode=MODE:直接給定目標目錄的權限


rmdir 命令 :(remove directory)只能刪除空目錄

        [OPTION]... DIRECTORY...

         常用參數: -p   遞歸刪除父空目錄

                    -v   顯示詳細信息

                  rm-r 遞歸刪除目錄樹




tree 命令 從標準輸入讀取並寫入標準輸出和文件-顯示目錄樹

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

     常用參數:-a  使用追加輸出重定向,而非默認的覆蓋輸出

                   -d  只顯示目錄

                   -L level:指定顯示的層級數目

                   -P pattern: 只顯示由指定pattern匹配到的路徑

                   -o filename:保存在文件中


     文件通配符bash 的特性  glob(globbing):

         man 7 golb 幫助文檔

         glob:文件名通配;在於快速引用多個符合條件的文件;文件名整體匹配度檢測;


         * 匹配零個或多個字符

         ? 匹配任何單個字符

         ~ 當前用戶家目錄

         ~mage 用戶mage家目錄

         ~+ 當前工作目錄

         ~- 前一個工作目錄

         [0-9] 匹配數字範圍

         [a-z] 字母

         [A-Z] 字母

         [wang] 匹配列表中的任何的一個字符

         [^wang] 匹配列表中的所有字符以外的字符

            []:匹配指定集合內的任意單個字符;

            [abc]:單個含有a或b或c;

            [a-z],[A-Z]:單個字母不區分大小寫;

            [0-9]:單個數字;

            [a-z0-9]:單個數字或字母;


  預定義的字符類:man 7 glob

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

  [:lower:]  任意小寫字母

  [:upper:]  任意大寫字母

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

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

  [:blank:]  水平空白字符

  [:space:]  水平或垂直空白字符

  [:punct:]  標點符號

  [:print:]  可打印字符

  [:cntrl:]  控制(非打印)字符

  [:graph:]  圖形字符

  [:xdigit:]  十六進制字符


tr 命令 :(translate or delete characters)替換、壓縮或刪除字符

          [OPTION]... SET1 [SET2]

          常用參數:-c  -C --complement:取字符集的補集,取代所有不屬於第一字符集的字符;

                    -d  --delete:刪除所有屬於第一字符集的字符,刪除所有屬於第一字符集的字符;

                    -s  --squeeze-repeats:把連續重複的字符以單獨一個字符表示,把連續重複的字符以單獨一個字符表示;

                    -t  --truncate-set1:將第一個字符集對應字符轉化爲第二字符集先刪除第一字符集較第二字符集多出的字符。

             使用 < 來重定向標準輸入,某些命令能夠接受從文件中導入的STDIN

                     tr‘a-z’‘A-Z’< /etc/issue 該命令會把/etc/issue中的小寫字符都轉換成寫寫字符

                     tr–d abc < /etc/fstab  刪除fstab文件中的所有abc中任意字符

                     cat > file

                     mage

                     wangxiaochun

                     按ctrl+d離開,可以使用文件來代替鍵盤的輸入

                     Cat > filea< fileb

             使用“<< 終止詞”命令從鍵盤把多行重導向給STDIN

           直到終止詞位置的所有文本都發送給STDIN

           有時被稱爲就地文本(heretext)

             mail-s"PleaseCall"[email protected]<<END

             >HiWang,

             >

             >Pleasegivemeacallwhenyougetin.Wemayneed

             >todosomemaintenanceonserver1.

             >

             >Detailswhenyou'reon-site

             >Zhang

             >END


管道(使用符號“|”表示)用來連接命令

         命令1 | 命令2 | 命令3 | …

       將命令1的STDOUT發送給命令2的STDIN,命令2的STDOUT發送到命令3的STDIN

       STDERR默認不能通過管道轉發,可利用2>&1 或|& 實現

       最後一個命令會在當前shell進程的子shell進程中執行用來

       組合多種工具的功能

         ls | tr 'a-z' 'A-Z'


tee 命令:從標準輸入讀取並寫入標準輸出和文件

         tee - read from standard input and write to standard output and files

              tee [OPTION]... [FILE]...

                  -a:使用追加輸出重定向,而非默認的覆蓋輸出;

                       COMMAND | tee /PATH/TO/SOMEFILE

                       使輸出即輸出到文件一份,又輸出到屏幕上一份;

          [root@Centos6/app]#which cat | tee /app/f1
           /bin/cat
          [root@Centos6/app]#cat f1
           /bin/cat


more 命令 :分頁查看文件

     more [options] file [...]

     -d: 顯示翻頁及退出提示


less 命令 :一頁一頁地查看文件或STDIN輸出

     less file[...]

     less命令是man命令使用的分頁器

     / 文本搜索文本

     n/N 跳到下一個或上一個匹配

         ls-l/etc|less


mail:通過電子郵件發送輸入

     用戶郵箱在/var/spool/mail/目錄下

         echo"testemail"|mail-s "test"[email protected]


lpr:把輸入發送給打印機

     echo"testprint"|lpr-Pprinter_name


- 符號 

示例:

將/home 裏面的文件打包,但打包的數據不是記錄到文件,而是傳送到stdout,經過管道後,

將tar -cvf-/home 傳送給後面的tar -xvf-, 後面的這個-則是取前一個命令的stdout,因此,

就不需要使用臨時file了

tar -cvf-/home | tar -xvf-



二、inode(index node)索引節點

    表中包含文件系統所有文件列表

    一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據)

    包括:文件類型,權限,UID,GID

          鏈接數(指向這個文件名路徑名稱個數)

          該文件的大小和不同的時間戳

          指向磁盤上文件的數據塊指針

          有關文件的其他數據


inode 表結構如圖:

blob.png


blob.png


inode 表如圖:

blob.png

cp和inode

    cp命令,分配一個空閒的inode號,在inode表中生成新條目,在目錄中創建一個目錄項,

            將名稱與inode編號關聯,拷貝數據生成新的文件


rm和inode 

    rm命令,鏈接數遞減,從而釋放的inode號可以被重用,把數據塊放在空閒列表中

            刪除目錄項,數據實際上不會馬上被刪除,但當另一個文件使用數據塊時將被覆蓋。


mv和inode

    如果mv命令的目標和源在相同的文件系統,作爲mv命令,用新的文件名創建對應新的目錄項

    刪除舊目錄條目對應的舊的文件名,不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動!

    如果目標和源在一個不同的文件系統,mv相當於cp和rm


硬鏈接

     指向同一個inode的多個文件路徑

     特性:

             a   目錄不支持硬鏈接

             b   硬鏈接不能跨文件系統;因爲不同文件系統的inode是獨立管理的,

                 編號也是從0開始的,所以不能跨文件系統引用文件的inode編號

             c   創建硬鏈接會增加inode引用計數;



       創建硬鏈接會增加額外的記錄項以引用文件,對應於同一文件系統上一個物理文件

       每個目錄引用相同的inode號,創建時鏈接數遞增

       刪除文件時:rm命令遞減計數的鏈接,文件要存在,至少有一個鏈接數

       當鏈接數爲零時,該文件被刪除

       不能跨越驅動器或分區

       語法:

           ln filename [linkname]

                    -v:verbose,顯示過程;

                    -s:創建符號鏈接;


軟鏈接(符號鏈接)

     指向一個文件路徑的另一個文件路徑;inode的號不同;

         特性:

            a   符號鏈接與原文件是兩個各自獨立的文件,各有自己的inode;對原文件創建符號鏈接不會增加inode引用計數

            b   支持對目錄創建符號鏈接,且可以跨文件系統;

            c   刪除符號鏈接文件,不影響原文件,但刪除原文件,符號鏈接文件指定的路徑即不存在,此時會變成無效的鏈接;

                ln -s src link_file

                   -v:verbose,顯示過程;

注意:符號鏈接文件的大小是其指向文件的路徑字符串的字節數;


軟和硬鏈接區別

  a  本質不同:

     硬鏈接是同一個文件,軟鏈接不是同一個文件

  b  刪除

     硬鏈接不影響,軟鏈接失效

  c  創建

     硬鏈接數加1,軟鏈接數不變

  d  跨分區

     硬鏈接不可以,軟鏈接可以

  e  目錄

     硬鏈接不可以爲目錄,軟鏈接可以


id 命令 :打印真實有效的用戶和組ID

 id [OPTION]... [USER]

       常用參數:-Z, - 上下文只打印當前用戶的安全上下文

                  -g,--group只打印有效的組ID

                  -G,--groups 打印所有組ID

                  -n,--name 打印一個名字,而不是一個數字,爲-ug

                  -r,--real用-ugG打印真實的ID而不是有效的ID

                  -u,--user 只打印有效的用戶ID

                  -z, - 零 使用NUL字符分隔條目,而不是空格;

         [root@Centos7/]#id L
          uid=1000(L) gid=1000(L) groups=1000(L)



個人總結內容雜亂,總結信息爲個人理解及老師課件內容,請勿見怪!!


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