shell變數,環境變數配置檔案,shell特殊符號cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符號
阿新 • • 發佈:2019-09-25
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下面的是系統層次檔案
- ~/ 下面的是使用者層次的