设置环境变量:
① export 变量名=变量值 #设置环境变量
② 变量名=变量值 #设置环境变量
export 变量名
set #显示当前shell所有变量
env #查看环境变量
unset 变量名 #删除变量
常用环境变量:
PATH变量:系统查找命令的路径
echo $PATH #查看PATH的值
PATH="$PATH":/root/sh #将/root/sh目录加到PATH变量中(临时生效)
PS1变量:命令提示符变量
当前语系查询:
locale #查询当前语系(en_US.UTF-8/zh_CN.UTF-8)
LANG:定义系统主语系的变量
LC_ALL:定义整体语系的变量
/etc/sysconfig/i18n #语系配置文件
位置参数变量:
$n #n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要大括号包含,如${10}
$* #这个变量代表命令行中所有参数,$*把所有的参数看成一个整体
[email protected] #这个变量也代表命令行所有参数,不过[email protected]把每个参数区分对待
$# #这个变量代表命令行所有参数个数
预定义变量:
$? #最后一次执行的命令的返回状态,上一个命令正确执行变量值为0,上一个命令执行不正确变量值为非0
$$ #当前进程的进程号(PID)
$! #后台运行的最后一个进程的进程号(PID)
接收键盘输入:
read [选项] [变量名]
-p:提示信息
-t:秒数,指定等待时间
-n:字符数,接收指定字符数就会执行
-s:隐藏输入的数据,适用于机密信息输入
read -p "please input your name:" -t 30 name
echo $name
declare声明变量类型:
declare [+/-][选项] 变量名
-:给变量设定类型属性
+:取消变量的类型属性
-a:将变量声明为数组型
-i:将变量声明为整数型
-x:将变量声明为环境变量
-r:将变量声明为只读变量
-p:显示指定变量的被声明的类型
数值运算:
① aa=11;bb=22;dd=$(expr $aa + $bb);echo $dd #dd为33
② aa=11;bb=22;dd=$(($aa+$bb));echo $dd #dd为33
③ aa=11;bb=22;dd=$[$aa+$bb];echo $dd #dd为33
环境变量配置文件:
~/.bash_logout #注销时执行的配置文件
~/.bash_history #历史命令保存文件
/etc/issue #本地终端登录信息显示文件
/etc/motd #本地登录、远程登录,只有登录成功便会显示此文件内容
正则表达式:
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配,grep、awk、sed、等命令可以支持正则表达式
通配符用来匹配符合条件的文件名,通配符是完全匹配,ls、find、cp、这些命令不支持正则,可用通配符
*:前一个字符匹配0次或任意多次
.:匹配除了换行符外任意一个字符
^:匹配行首,例如^hello匹配以hello开头的行
$:匹配行尾
[ ]:匹配括号中任意一个字符,只匹配一个字符
[^ ]:匹配除中括号的字符以外的任意一个字符
\{n\}:表示其前面的字符恰好出现n次,例如[0-9]\{4\}匹配4位数字
\{n,\}:表示前面的字符出现不小于n次,例如[0-9]\{2,\}表示两位及以上数字
\{n,m\}:表示前面的字符至少出现n次,最多出现m次[a-z]\{6,8\}匹配6到8位的小写字母
字符截取命令:
cut命令:
cut [选项] 文件名
-f 列号:提取第几列
-d 分隔符:按照指定分隔符分割列(默认分隔符tab键)
grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":" #查询系统中的普通用户
cut -d ":" -f 1,3 /etc/passwd
awk命令:
awk ‘条件1{动作1}条件2{动作2}...‘ 文件名
df -h | awk ‘{print $1 "\t" $3}‘ #截取第一和第三列
cat /etc/passwd | grep /bin/bash | awk ‘BEGIN{FS=":"}{print $1 "\t" $3}‘
#FS为指定分割符
sed命令:(对文件进行追加、插入、替换、删除、显示)
字符处理命令:
sort [选项] 文件名 #排序命令
-f:忽略大小写
-n:以数值型进行排序,默认使用字符串型排序
-r:反向排序
-t:指定分割符,默认分隔符为制表符
-k n[,m]: 按照指定的字段范围排序,从第n字段开始,m字段结束(默认到行尾)
sort -n -t ":" -k 3,3 /etc/passwd #按照第3个字段以数值型排序
wc [选项] 文件名
-l:只统计行数
-w:只统计单词数
-m:只统计字符数
wc -l /etc/passwd #统计行数