JavaShuo
欄目
標籤
shell變量,環境變量配置文件,shell特殊符號cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符號
時間 2019-12-17
標籤
shell
變量
環境
配置文件
特殊符號
cut
命令
sort
uniq
tee
split
欄目
Unix
简体版
原文
原文鏈接
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下面的是系統層次文件
~/ 下面的是用戶層次的文件
通常不修改etc下面這兩個配置文件
若是有須要修改配置文件,能夠編輯用戶家目錄下面的配置文件,也就是~/下面的
如 .bash_profile
修改完配置文件後須要從新加載纔會生效,可使用 source + 配置文件名稱 從新加載
也可使用 . 代替 source
如圖, . .bash_profile == source .bash_profile
bashrc 幾乎全部配置文件都會調用這個配置文件
無論登不登陸,bashrc 都會被調用
用戶登陸時雖然調用profile,但實際上profile裏面仍是會調用bashrc
家目錄下的配置文件調用的時候也會調用bashrc
.bash_logout 配置文件能夠配置退出登陸的時候執行的命令
有一個系統變量叫作 PS1
這個變量存在於 /etc/bashrc 文件裏面,能夠用vim打開使用搜索 /PS1 找到
也可使用 echo $PS1 顯示出這個變量的值
如圖,變量值是 [\u@\h \w]$
其中, \u 是當前用戶名 , \h 是hostname
\W 是當前目錄名稱,$ 就是#的位置
PS1的值是能夠修改的
如圖,PS1的值修改成 '<\u@\h \w> $'
小寫 w 會顯示絕對路徑
賦值的時候,由於含有特殊符號 @,$等,因此要用單引號括起來
符號 $ 在root用戶會顯示爲#號,普通用戶就顯示爲$號
如圖,PS1還能夠設置顏色
執行shell腳本會使用 PS2 來顯示
shell特殊符_cut命令
星號 * 能夠表示 任意個任意字符
問號 ? 只表示一個字符,能夠是任意字符,*是多個
井號 # 表明註釋,一行前面寫#,這一行就會被系統忽略掉,不會執行
脫義字符能夠把系統裏面的特殊符號顯示爲字符串
例子,a=1, b=$a 這就把 a 的值賦給了 b
若是使用脫義符, b=$a ,那麼 b 的值就變成了 $a
也就是說把原本不能識別爲字符的 $ 變成了字符
管道符 | 配合 cut 命令使用,cut能夠截取字符串
第一段是顯示 passwd 的頭兩行
cat /etc/passwd |head -2 |cut -d ":" -f 1
首先cat命令的結果傳給了head命令
head命令的結果又傳給cut命令
cut 命令裏面,-d參數表明分隔符,這裏設置爲 ":"
表明使用 : 對head命令的結果進行分隔
參數 -f 表明段號,1就是取第一段數據
1,2 表明第一第二段數據
1-3 表明1到3段數據
還有一個參數 -c 能夠直接指定截取某個位置的字符
例如 cut -c 4 就表示截取第4個字符
sort_wc_uniq命令
sort 命令能夠對數據進行排序
排序順序是按照字符編碼裏面的id大小來排序的
如圖,passwd 裏面的數據按照 a-z 的順序進行了排序顯示
sort -n ,參數 -n 可使內容按照數字來排序
字母跟特殊字符所有算做 0 ,
因此首字符不是數字的數據行會出如今最前面
其它的數據按照數字大小來排序
sort -nr 參數 -r 能夠倒序排序
wc -l 能夠統計文件數據的行數
wc -m 能夠統計文件的字符數
參數 -m 會把換行符,空格等特殊字符的數量也統計在內
wc -w 能夠統計文件的詞數
詞數是按照空白字符來分隔的,好比換行符,空格之類的
uniq 命令能夠把數據內重複的數據去掉
好比1.txt裏面有數據 1 ,1 ,2 ,3
使用 uniq 1.txt 就能夠把重複的1去掉,只留下一個1
可是uniq有一個問題,就是隻能去除連續的重複數據
好比數據有 1,2,1,3 ,這裏uniq就不能把1去掉
由於這兩個1不是連續的,中間有2隔着,這樣uniq就沒法去重
因此通常使用uniq都須要先sort排序一下
這樣就可使重複的數據連續的排列,這樣uniq就能夠生效了
如圖,先sort而後經過管道符|傳給uniq命令
參數 -c 能夠統計重複的個數
圖中,1 的左邊是 2 ,表示1這個數據總共存在兩個相同的數據
左邊是1的數據,表示這個數據只有一個,沒有重複的
tee_tr_split命令
第一行 >a.txt 就能夠把空字符重定向到a.txt裏面,這樣就清空了a.txt
cat a.txt 什麼都沒顯示
第三行,sort 而後 uniq ,而後 tee a.txt
意思是把前面的結果重定向到 a.txt 並把重定向的內容顯示在下面
tee 命令就是能夠在重定向的同時,把內容顯示在下面
tee 命令還有一個參數 -a
sort2.txt |uniq -c |tee -a a.txt
能夠把前面的結果追加到 a.txt 裏面
tee命令原本是重定向並顯示結果,a參數能夠把重定向變爲追加
而後把追加的內容顯示在下面
tr 命令能夠替換字符
如圖,echo "aminglinux" |tr '[al]' '[AL]'
這樣就能夠把a與l變成大寫
第二行就是單個字符替換
第三行能夠把全部字母換成大寫
最後一行把全部字母替換成 1
spilt是用來切割文件的,把大文件切割成小文件
有兩種用法,一種是按大小切割,一種是按數據的行數切割
如圖 split -b 100M bigfile 就是按大小切割
按照每一份 100MB 的大小來切割文件
參數 -b 就是指定按大小切割的選項
100M 也能夠不寫單位,不過這樣的話,默認單位就是比特
不寫單位會按照默認單位比特來切割
參數 -l 就是指定切割方式按行來切割
1000 就表示每1000行數據切割成一份
默認的切割後的文件名都以 x 開頭
命令還能夠設置自定義文件名前綴
如圖,後面加上 abc
下面查看切割後的文件,能夠看到
下面3個文件都是以abc開頭
shell特殊符號下
如上圖,同一行寫多條命令的時候,使用分號 ; 來分隔
分號分隔以後,系統就能夠識別這是兩條命令
若是不分隔系統會覺得是一條命令
||表明或者,&&表明與
使用 || 的時候,若是前面執行結果爲true,後面就不執行了
若是前面爲 false 後面會繼續執行
使用 && 的時候,若是前面執行結果爲false,後面就不執行了
若是前面爲 true 後面纔會繼續執行
符號 || 和 && 是在命令之間使用的
相關文章
1.
shell特殊符號cut命令、sort_wc_uniq命令、tee_tr_split命令和shell特殊符號
2.
shell特殊符號cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號下
3.
shell特殊符號cut命令、 sort_wc_uniq命令、 tee_tr_split命令 、shell特殊符號
4.
shell特殊符號cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號
5.
shell特殊符號、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號下
6.
shell特殊符號cut命令sort_wc_uniq命令 tee_tr_split命令 shell特殊符號下
7.
shell特殊符號cut、sort_wc_uniq、tee_tr_split命令
8.
shell特殊符號cut命令,sort_wc_uniq命令,tee_tr_split命令
9.
8.10 shell特殊符號cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符號下
10.
shell特殊符號cut命令 sort_wc_uniq命令 tree_tr_split命令
更多相關文章...
•
Docker info 命令
-
Docker命令大全
•
Docker version 命令
-
Docker命令大全
•
Docker 清理命令
•
IDEA下SpringBoot工程配置文件沒有提示
相關標籤/搜索
特殊符號
命令
號令
一天一個shell命令
命令模式
下命令
命令行CMD
ANSYS命令流
zip命令
命令式
Unix
Docker命令大全
PHP 7 新特性
SQLite教程
命令
文件系統
插件
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
部署Hadoop(3.3.0)僞分佈式集羣
2.
從0開始搭建hadoop僞分佈式集羣(三:Zookeeper)
3.
centos7 vmware 搭建集羣
4.
jsp的page指令
5.
Sql Server 2008R2 安裝教程
6.
python:模塊導入import問題總結
7.
Java控制修飾符,子類與父類,組合重載覆蓋等問題
8.
(實測)Discuz修改論壇最後發表的帖子的鏈接爲靜態地址
9.
java參數傳遞時,究竟傳遞的是什麼
10.
Linux---文件查看(4)
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
shell特殊符號cut命令、sort_wc_uniq命令、tee_tr_split命令和shell特殊符號
2.
shell特殊符號cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號下
3.
shell特殊符號cut命令、 sort_wc_uniq命令、 tee_tr_split命令 、shell特殊符號
4.
shell特殊符號cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號
5.
shell特殊符號、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號下
6.
shell特殊符號cut命令sort_wc_uniq命令 tee_tr_split命令 shell特殊符號下
7.
shell特殊符號cut、sort_wc_uniq、tee_tr_split命令
8.
shell特殊符號cut命令,sort_wc_uniq命令,tee_tr_split命令
9.
8.10 shell特殊符號cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符號下
10.
shell特殊符號cut命令 sort_wc_uniq命令 tree_tr_split命令
>>更多相關文章<<