1. 程式人生 > >shell變數,環境變數配置檔案,shell特殊符號cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符號

shell變數,環境變數配置檔案,shell特殊符號cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符號

shell變數

  • 使用 env 命令可以檢視系統變數的資訊
  • 下面大寫字母的變數名稱就是系統的變數
  • 變數的值可能是 數字 也可能是 字串
  • env 可以檢視系統常用的環境變數

  • 除了系統的環境變數外,使用者還可以自定義一些變數
  • a = 111 表示為變數a賦值111,這樣就自定義了一個變數 a
  • echo $a 可以把 a 的值顯示出來
  • set 命令可以檢視系統內所有的變數,env只能檢視系統內建的變數
  • set |grep 111 就可以在系統所有變數裡面篩選出跟111有關的資訊
  • 可以看到,a=111 的資訊被查出來了
  • 也可以使用 set |less ,也就是用less來檢視set出來的變數資訊
  • 自定義變數只有set才能看到

  • 自定義變數規則,變數名稱可以使用 字母,數字,下劃線,首字元不能是數字
  • 變數的值如果含有特殊符號,需要用單引號括起來
  • 如圖,給變數 a 賦值 as$g ,這個值裡面含有 $ 符號,這就是特殊符號
  • 如果不用單引號括起來,會不生效
  • 如果變數值含有特殊符號如 $ ,空格 之類的就需要單引號括起來

  • 上圖,定義了變數 a=1 b=2
  • echo $a$b 就是按照命令順序同時顯示a與b的值
  • 結果就是 12
  • 上圖定義了變數 c ,值為 "a$bc"
  • 這裡因為值裡面有特殊符號 $ ,所以想生效要用單引號括起來
  • 但是這裡使用了雙引號,所以 $ 和 $後面的 bc 是不生效的
  • 所以實際賦予 c 的值只有 a

  • 如圖,對 c 重新賦值 "a$b"c
  • 這裡還是使用了雙引號,$b 會被當做命令來處理
  • $b 就是 b 的值的意思
  • 這裡首先 a會賦值給c,然後$b也就是b的值為2也會賦值給c
  • 最後是 c 會賦值給 c
  • 所以 c 的值就是 a2c

  • 所以如果想要多個變數一起賦值的話可以這樣寫
  • c="$a""$b" ,就是使用雙引號單獨把變數括起來
  • 如果使用單引號 '$a' ,那麼就會被識別為字串而不是命令
  • 用雙引號的話就可以被識別為命令
  • 所以想使用變數的話,可以單獨用雙引號把變數括起來

  • 使用 w 檢視使用者資訊
  • 看到有3個使用者連線
  • 使用 echo $SSH_TTY 可以知道當前使用者是哪一個
  • 下面的值是 /dev/pts/1 也就是 pts/1 就是當前使用者

  • 使用命令 yum install -y psmisc 安裝 psmisc 包
  • 安裝完成後,就可以使用 pstree 命令
  • 如圖,可以檢視當前所在的 bash
  • 因為使用了兩個虛擬終端進行連線,可以看到有兩條bash
  • 使用 bash 命令可以在當前shell下面再生成一個shell
  • 如圖,可以看到,在第一個bash後面又多了一層bash,這就是新生成的
  • 使用 pstree 命令就可以看到自己在哪一層 bash 下面

  • 區域性變數只能在當前的 bash 下面使用
  • 如果像上面一樣,生成多層的 bash
  • 其它層的 bash 是無法使用當前bash定義的區域性變數的
  • 如果希望所有層都可以使用一個變數
  • 就需要把這個變數定義為 全域性變數
  • 如圖,使用 export 就可以把 b 定義為全域性變數
  • 但是全域性變數只對 子bash 有效,也就是向下有效
  • 在一個 bash 裡面定義一個全域性變數,這個bash下面無論多少層bash,都是有效的
  • 但是如果這個bash上面還有bash,也就是 父bash,是無效的
  • 全域性變數對上層是無效的,只對下層有效

  • 如圖,這裡是兩條並列的sshd
  • 如果在第一個sshd後面的bash裡面定義一個全域性變數
  • 對第二個sshd裡面的bash是無效的
  • 兩個 sshd 之間是不互動的
  • 全域性變數只在同一條sshd裡面是有效的
  • 如果要退出一層bash,可以使用命令 exit
  • 這樣就可以退到上一層的bash裡面
  • 如果已經是最後一層,那麼就會之間退出登入狀態

  • 設定了一個變數,如果不想要了,想取消掉
  • 可以使用 unset + 變數名 就可以把變數取消掉
  • unset aming 就把變數 aming 取消掉了

環境變數配置檔案

  • 可以分兩個層次看以上檔案,etc下面的是系統層次檔案
  • ~/ 下面的是使用者層次的