shell是啥
1、腳本語言,可以用來編寫腳本。
shell script shell腳本(劇本),面向過程的語言。
腳本-->一條條命令的羅列。haproxy
2、翻譯,將用戶輸入的命令翻譯給計算機
默認:/bin/bash
支持命令別名
alias
# alias xx='ls --color=auto'定義
# unalias xx取消別名
通配符
{}# touch file{1..100}
*匹配任意0個或者多個字符,匹配所有。
[]括號中是字符集合,不管字符集合中有多少個字符,只匹配字符集合中的一個字符。[abc][abc] aa ab ac ba bb bc ca cb cc
# touch a{a,b,c,d}.txt
# ls a[abc].txt
[-]-表示範圍。[a-z][A-Z][0-9]
[^a-z] ^表示取反。
?匹配任意一個字符。# ls a?c.txt
其他字符
~當前用戶的家目錄
!最近一次執行過的歷史命令
#命令行中表示的是root用戶
$命令行中表示的是普通用戶,也表示一個變量,還可以調用變量。
%運算符號。取模運算-->取餘運算。
^[^a-z] ^表示取反。 vim中,定位光標到行首。 正則表達式元字符:以^後面跟著的字符開頭的行 grep 『^a』 a.txt
()開啟一個子進程
&後臺運行
\反斜槓。轉義字符(換行符)。
# echo \$\$
# cat /etc/sysconfig/\
> network-scripts/ifcfg-eth0
/表示根目錄;目錄分隔符
3、變量的功能
變量-->變化的量
常量-->固定的量
變量名=`命令`
mem_useage=`sffafsfdsfdsfdsfsdffa`
4、定義變量
變量名=值
可以把命令執行的結果賦值給變量 `cmd` $(cmd)
值可以是普通的字符串,但是如果字符串中有空格,需要使用引號(單、雙)引起來
如果值中有變量,需要解釋變量,我們需要使用雙引號
變量名,可以是字母、數字、下劃線,但是不允許使用數字開頭
5、調用變量
echo ${變量名}
6、刪除變量
unset 變量名
7、環境變量:
/etc/profile --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
/etc/profile /etc/bashrc全局系統變量文件(每一個用戶都要加載的文件)
~/.bash_profile ~/.bashrc用戶級別的系統變量文件(用戶與用戶之間的差異)
定義一個命令別名: qstat 輸出pid,ppid,tt,fname,並要求每一個用戶都能使用這個別名
alias qstat='ps -Ao pid,ppid,tt,fname'
8、查看用戶當前有哪些變量:
set既可以查看本地變量,又可以查看環境變量
env只能查看環境變量
本地變量:只能在當前shell中調用的變量
環境變量:不僅能在當前shell中使用,而且還可以在子shell中使用的變量
# abc=100定義本地變量
# export abc導成環境變量
# export b=100直接定義一個環境變量
cmake /usr/local/cmake/bin/cmake /bin /usr/bin/
$PATH執行命令的查找路徑
9、系統變量
$0腳本名
$1表示傳遞給腳本的第一個參數
$2表示傳遞給腳本的第二個參數
$@用"參數1","參數2","參數3"...這個形式顯示傳遞給腳本的所有參數
$*用"參數1,參數2,參數3"...這種形式顯示傳遞給腳本的所有參數
$#表示傳遞給腳本的參數的個數
$$表示當前shell的進程號
$?最近一次執行的命令的返回值