1. 程式人生 > >【Shell】-- 基礎知識(2)

【Shell】-- 基礎知識(2)

命令別名 進程 ply exp ron -s 歷史 size 接收

1、Shell腳本運行方式

  創建Shell腳本文件,一般以.sh結尾(如:example.sh)

  Shell腳本運行方式如下:

  • 添加 ‘x’ 執行權限(相對或絕對路徑執行)
  • 使用bash或source(.)命令調用腳本文件

2、Bash的基本功能

  (1)、歷史命令history

     -c:清空歷史命令

    -w:將緩存中的歷史命令保存到配置文件當中(~/.bash_history)

    調用歷史命令的方法:

      ①、使用上、下鍵調用

      ②、使用“!n”重復執行第n條歷史命令

      ③、使用“!!”重復執行上一條命令

      ④、使用“!字符”重復執行最近一條以此字符開頭的命令

  (2)、命令別名alias

    格式:alias  別名=‘原命令’ [選項]

     例:alias ls=‘ls -l’

    配置文件:

      單個用戶:~/.bashrc

      所有用戶:/etc/bashrc

      (對此處兩個配置文件不太明白同學,可以理解為一個為全局變量,一個為局部變量。)

    不同類型的命令執行優先級:

      No.1、相對或絕對路徑的方式執行命令

      No.2、別名命令

      No.3、bash內置命令

      No.4、根據環境變量定義的目錄查詢到的命令

  (3)、Bash常用快捷鍵

    技術分享圖片

    技術分享圖片

3、輸入輸出重定向 

  (1)、Bash的標準輸入輸出

    設備    設備文件名    文件描述符   類型

    鍵盤    /dev/stdin       0      標準輸入

    顯示器   /dev/stdout      1      標準正確輸出

    顯示器   /dev/stderr       2      標準錯誤輸出

  (2)、輸出重定向

    技術分享圖片

  (3)、輸入重定向

    命令:wc 【選項】 【文件名】

        -c:統計字數(字符)

        -w:統計單詞數(字符串)

        -l :統計行數

    例如:

       wc < 文件(統計文件中的字數,單詞數,行數)

         技術分享圖片

       wc << 字符(統計從開始字符到結束字符中的單詞,字,行數)

          技術分享圖片

4、多命令順序執行

  技術分享圖片

5、管道符

  格式:命令1 | 命令2(將命令1的標準輸出作為命令2的標準輸入)

  xargs實現將命令1的標準輸出作為命令2的選項

   例如:

    echo “--help” | cat

      技術分享圖片

    echo “--help” | xargs cat

      技術分享圖片

6、通配符

  技術分享圖片

7、Bash中其他特殊符號

  技術分享圖片

  父Shell和子Shell(使用pstree查看)

    技術分享圖片

    使用Shell不影響父Shell,在()中執行的命令,在新開啟Shell中執行,不影響本Shell

8、變量

  (1)、變量規範

    可以由字母、數字和下劃線組成,但是不能以數字開頭,變量中間不能有空格。

  (2)、註意事項  

    v 在Bash中,變量的默認類型都是字符串型,如果需要進行數值運算,則需要轉換為數值型

    v 變量用等號鏈接值,等號左右兩側不能有空格

    v 變量若有空格,需要使用單引號或雙引號包括

    v 雙引號“”括起來的$、|、``都有特殊含義

    v 單引號括起來的都是普通字符

    v 如果需要增加變量值,進行變量值疊加,”$變量名”或”${變量名}”,eg:PATH=$PATH:/sh

    v 變量名建議大寫,易於區分

  (3)、變量分類

    v 用戶自定義變量

    v 環境變量

    v 位置參數變量

    v 預定義變量

  1. 用戶自定義變量

    a) 調用:

      echo $變量名

      例如:echo $PATH

    b) 查看:

      set [選項] ---- 直接回車顯示系統中所有變量

       -u 調用沒有聲明的變量時會報錯(建議使用)

       -x 命令執行前,先將命令輸出一次

    c) 刪除:

      unset 變量名

   2、環境變量

    a) 設置:

      export 變量名=值------(聲明~/.bash_profile)

      #export聲明的是環境變量

    b) 查看:

      env

      常用格式: env | grep 變量

      #set中包括env,env查詢環境變量,set查詢所有變量

    c) PS1變量:定義命令提示符

        技術分享圖片

PS1可支持以下選項:

        v \d:顯示日期,格式為“星期月日”?

        v \H:顯示完整的主機名。如默認主機名“localhost.localdomain”

        v \h:顯示簡寫主機名。如默認主機名“localhost”

        v \t:顯示24小時制時間,格式為“HH:MM:SS”

        v \T:顯示12小時制時間,格式為“HH:MM:SS”

        v \A:顯示24小時制時間,格式為“HH:MM”

        v \@:顯示12小時制時間,格式為“HH:MM am/pm”

        v \u:顯示當前用戶名

        v \v:顯示Bash的版本信息

        v \w:顯示當前所在目錄的完整名稱

        v \W:顯示當前所在目錄的最後一個目錄

        v \#:執行的第幾個命令

        v \$:提示符。如果是root提示符為“#”,如果是普通用戶提示符為“$”

  3、調用格式:

    d) LANG語系變量----定義主語系環境變量

i.查看Linux支持的語系

          locale –a | more

ii.當前使用可用語系

          locale

iii.查詢默認語系

          cat /etc/sysconfig/i18n

iv.修改桌面版中文為英文

  1. 將當前語系改為en_US,默認是zh_CN

     export LANG=en_US.UTF-8

  1. 執行命令進行文件名轉換

     xdg-user-dirs-gtk-update

  4、位置參數變量

    v $*顯示所有參數(作為整體接收)

    v $@顯示所有參數(分開接收)

    v $#顯示參數個數

  預定義變量

    技術分享圖片

    v $? 判斷上一條命令是否正常執行

      錯誤數值非0,正確的是0

    v $$ 當前進程的PID

    v $!最後一個後臺執行的命令的進程

註意事項:

    v 變量名可以自定義,如果不指定變量名,會把輸入保存入默認變量REPLY

    v 如果只提供了一個變量名,則整個輸入行賦予該變量

    v 如果提供了一個以上的變量名,則輸入行分為若幹字,一個接一個地賦予各個變量,而命令行上的最後一個變量取得剩余的所有值

  5、接受鍵盤輸入

    格式:read [選項] [變量名]

選項:-p “提示信息”:在read等待時輸入的信息

     -t 秒數 :read等待的秒數(到達秒數自動跳轉下一條)

     -n 字符數 :read最多能接收的字符數

    -s :隱藏輸入的信息

   註:若特殊選項不換行,使用\n控制轉換符

【Shell】-- 基礎知識(2)