天天看點

shell基礎知識shell基礎知識

shell基礎知識

1.shell簡介

  • shell是系統跟計算機硬體互動時使用的中間媒體,它隻是系統的一個工具。在shell和計算機硬體還有一層東西那就是–系統核心,系統核心在系統中就像大腦至于人類一樣的作用,shell則更像是人類的五官。
  • 使用者直接面對的不是計算機硬體而是shell,使用者把指令告訴shell,然後shell再傳輸給系統核心,接着核心再去支配計算機硬體去執行各種操作
  • centOS預設安裝的shell版本是bash
  • 記錄指令曆史:

    • 我們執行過的指令Linux都會記錄,預設是1000條曆史指令,這些指令儲存在使用者家目錄的.bash_history檔案中
    • !符号是與指令曆史有關的一個特殊字元。
    • !!:連續兩個!表示執行上一條指令
    • !n:這裡的n是數字,表示執行指令曆史中的第n條指令
    • ![字元串]:表示執行以字元串内容開頭的指令
  • 别名:

    • alias是bash所特有的功能之一。

      可以通過alias将一個常用并且很長的指令去另外一個比較簡單的指令

      若不想用了,可以通過unalias指令解除别名功能

    • 指令格式:alias [指令别名] = [‘具體的指令’](注意有引号)
  • 通配符

    • 在bash下,可以使用*來比對零個或多個字元,用?比對一個字元
  • 輸入/輸出重定向

    • 輸入重定向用于改變指令的輸入,輸出重定向用于改變指令的輸出
    • 輸入重定向的指令是 < ,輸出重定向的指令是 > ,追加重定向的指令是 >>
    • 例子:echo“123” > 1.txt
  • 管道符

    • 管道符 | ,它用于将前一個指令的輸出作為後一個指令的輸入。
    • 例:cat /etc/passwd|wc -l
  • 作業控制

    • 當運作程序時,你可以使它暫停(ctrl+z),然後使用fg指令恢複,或是利用bg指令使它到背景運作,或者是按(ctrl+c)來使它終止
    • 在進行作業控制時,可以通過指令jobs來檢視被暫停的或者是在背景運作的任務
  • 變量

    • 環境變量PATH是shell預設的一個值。通常shell預設的變量都是大寫的

      PATH代替了所有常用指令的絕對路徑的設定。

    • 定義:變量就是使用 一個較簡單的字元串來代替某些具有特殊意義的設定以及資料。
  • 指令env

    • 使用指令env可列出系統預設的全部系統變量
    • 常見的環境變量:
      • HOSTNAME:表示主機的名稱
      • SHELL:表示目前使用者的shell類型
      • HISTSIZE:表示曆史記錄數
      • MAIL:表示目前使用者的郵件存放目錄
      • PATH:該變量決定了shell将到哪些目錄中尋找指令或程式
      • PWD:表示目前目錄
      • LANG:這是與語言相關的環境變量,多語言環境可以修改此環境變量
      • HOME:表示目前使用者的家目錄
      • LOGNAME:表示目前使用者的登入名。
  • 指令set

    • set指令與env指令類似,也可以輸出環境變量,同時也能顯示使用者自定義的變量
      shell基礎知識shell基礎知識
    • 自定義變量隻能在目前的shell中生效,使用bash在打開一個shell後,之前預設的變量會不存在。如果想讓設定的環境變量一直生效?
      • 一是允許系統内所有使用者登入後都能使用該變量。具體的操作方法是在/etc/profile檔案的最後一行加入export [預設自定義變量],然後允許source /etc/profile就可以生效了
      • 二是僅允許目前使用者使用該變量。具體的操作方法是在主使用者目錄下的.bashrc檔案的最後一行加入export [預設自定義變量],然後允許source 。bashrc就可以生效了
    • 若想取消某個變量隻要輸入 unset 變量名 即可

系統環境變量與個人環境變量的配置檔案

  • /etc/profile:這個檔案預設了幾個重要的變量,例如PATH,USER,LOGNAME,MAIL等
  • /etc/bashrc:這個檔案主要預設umask以及PS1。這個PS1是我們在輸入指令時前面的那串字元。例:[[email protected] ~] #。
    shell基礎知識shell基礎知識
    \u是使用者,\h是主機名,\w是指目前目錄,$是指字元#
  • 隐藏檔案:
    • .bash_profile:該檔案定義了使用者的個人化路徑與環境變量的檔案名稱
    • .bashrc:該檔案包含專屬自己的shell和bash資訊
    • .bash_history:該檔案用于記錄指令曆史
    • .bash_logout:當退出shell時,會執行該檔案。可以在該檔案中存放一些清理的工作

Linux shell中的特殊符号

  • *:代表零個或多個任意字元
  • ?:代表一個任意的字元
  • #:注釋符号
  • \:脫義字元,這個字元會将後面的特殊字元還原為普通字元
  • |:管道符:将前面指令的輸出作為後面指令的輸入
  • 指令cut:

    • 作用:用來截取某一個字段
    • 指令格式:cut -d ‘分割字元’ [-cf] n(數字)
    • 參數選項:
      • -d:後面跟分隔字元,要用單引号括起來
      • -c:後面接的是第幾個字元
      • -f:後面接的是第幾個區域(列)
        shell基礎知識shell基礎知識
  • 指令sort:

    • 作用:用作排序。
    • 指令格式:sort [-t 分隔符] [-kn1,n2] [-nru]
    • 參數選項:
      • -t:後面跟分隔字元。
      • -n:表示使用純數字排序
      • -r:表示反向排序
      • -u:表示去重複
      • -kn1,n2:表示由n1區間排序到n2區間
  • 指令wc:

    • 作用:wc指令用于統計文檔的行數,字元數或詞數
    • 參數選項:
      • -l:統計行數
      • -m:統計字元數
      • -w:統計詞數
  • 指令uniq:

    • 作用:用來删除重複的行。
    • 參數選項:
      • -c:用來統計重複的行數,并把行數寫在前面
    • 在使用uniq前,必須先給檔案排序,否則不管用
  • 指令tee:

    • tee指令後面跟檔案名,作用類似于重定向 >
  • 指令tr:

    • 作用:用于替換字元,常用來處理文檔中的特殊符号。
    • 指令格式:tr [被替換字元] [替換字元]
    • 參數選項:
      • -d:表示删除某個字元,後面跟要删除的字元
      • -s:表示删除重複的字元
  • 指令split:

    • 作用:用來切割文檔
    • 參數選項:
      • -b:表示依據大小來分割文檔,機關為byte。

        split -b 切割大小 切割檔案 (目标檔案名)

      • -l:表示依據行數來分割文檔

        split -l 行數 切割檔案 (目标檔案名)

  • 特殊符号

    • 符号$可作為變量前面的辨別符
    • 符号;作為指令與指令之間的分隔符,可以在一行運作多個指令

      command1 ;command2,不管command1是否成功都執行command2

    • 符号~表示使用者的家目錄
    • 符号&:若想把一條指令放到背景執行,則需要加上符号&
    • 符号[]:中括号内為字元組合,代表字元組合中的任意一個
    • 符号&&:command1 && command2,不管command1成功後執行command2,否則不執行
    • 符号||:command1 && command2,不管command1成功後不執行command2,否則執行command2

以上資料均處于《跟阿銘學linux》,若需轉載請附上出處

繼續閱讀