-
/etc/shells 系统shell列表文件
-
启动文件
- 命令 文件名 典型用途
- sh .profile 设置搜索路径,终端环境
- bash .bashrc .bash_profile .profile 设置环境变量
- .profile 环境变量 启动程序 HISTSIZE=1000 命令历史数
- .bashrc 函数 命令别名
- .bash_history
- csh/tcsh .login .cshrc .tcshrc
-
改变登录bash chsh
-
输出 echo printf
-
输入 read
-
执行方式
- ./文件 打开子shell执行文件命令
- bash [-x] 文件 开子进程
- source 文件 . 文件 不开子进程
-
#注释行
-
#!内核执行所需
-
变量
- 变量赋值不用$,访问值时用$,赋值时=两边不留空格,双引号括起来的变量被值替换
- {}标记变量开始和结束,变量名区分大小写,所有bash变量的值变量不区分类型,统一为字符串
- 变量默认全局变量,局部变量用local声明
- set所有变量
- env环境变量
- 环境变量自动导入bash变量空间
- export 变量 将一个shell变量提升为环境变量
- unset
-
默认变量
- $0调用文件名
- $1第一个命令行参数$2$3…
- $#参数个数(不包括$0)
- $*全部参数(不包括$0)
- $$进程PID号
- $?命令执行后返回状态
-
执行命令 ``和$()等效,将内容按shell命令执行并用输出替换这个字符串
-
stty -echo 不显示输入(输入密码)
-
stty echo 显示输入
-
数值运算
- 小数运算 bc命令
- “数字 运算符 数字” | bc
- 小数位的长度可采用scale=N
-
整数运算
- expr命令 expr 数字 运算符 数字 运算符 ±*/% *
- $((数字运算符数字)) $[数字运算符数字] $((表达式))将表达式强制进行数值计算
- let 数字一元运算符
- expr或[]、[]、[]、(())方式只进行运算,并不会改变变量的值;而let命令可以直接对变量值做运算再保存新的值
-
布尔运算
- &&且
- ||或
- test 表达式 [ 表达式 ] []test命令快捷方式 表达式两边至少要留一个空格
- 字符串 数值
- x = y x -eq y
- x != y x -ne y
- x < y x -lt y
- x <= y x -le y
- x > y x -gt y
- x < y x -ge y
- -n x x不为空
- -z x x为空
- 文件
- -d file file存在且是目录
- -e file file存在
- -f file file存在且是普通文件
- -r file 用户有file读权限
- -s file file存在且不为空
- -w file 用户有file写权限
- file1 -nt file2 file1比file2新
- file1 -ot file2 file1比file2旧
-
选择结构
if [] ;then
elif [] ;then
else
fiif []
then
elif
then
else
ficase 变量 in
1)
命令;;
2)
命令;;
...
*)
命令;;
esac
-
循环结构
for 变量 in 值一 值二 ... ;do
donefor 变量 in 值一 值二 ...
do
donefor ((i=0; i<=$count; i+=1)); do
done数字序列
{值一..值二}
seq 值一 步长 值二while []
do
donewhile read line; do
doneuntil []
do
done
-
函数
function name(){
}Name(){
}
-
跳转
breakcontinueexit [状态值默认0]shift
-
子串截取的三种用法:
- ${var:起始位置:长度}
- expr substr “$var” 起始位置 长度
- echo $var | cut -b 起始位置-结束位置
-
路径分割:
- 取目录位置:dirname “字符串”
- 取文档的基本名称:basename “字符串”
-
子串替换的两种用法:
- 只替换第一个匹配结果:${var/old/new}
- 替换全部匹配结果:${var//old/new}
-
字符串掐头去尾:
- 从左向右,最短匹配删除:${变量名#*关键词}
- 从左向右,最长匹配删除:${变量名##*关键词}
- 从右向左,最短匹配删除:${变量名%关键词*}
- 从右向左,最长匹配删除:${变量名%%关键词*}
-
${var:-word}判断变量是否存在,决定是否给变量赋初始值。
-
建立数组的方法:
- 格式1,整体赋值:数组名=(值1 值2 … … 值n)
- 格式2,单个元素赋值:数组名[下标]=值
-
查看数组元素的方法:
- 获取单个数组元素:${数组名[下标]}
- 获取所有数组元素:${数组名[@]}
- 获取数组元素个数:${#数组名[@]}
- 获取连续的多个数组元素:${数组名[@]:起始下标:元素个数}
- 获取某个数组元素的长度:${#数组名[下标]}
- 截取数组元素值的一部分:${数组名[下标]:起始下标:字符数}
-
数组example=(aa ‘bb cc’ dd)
-
${example[subscript]}访问数组,下标从0开始,下标和@指整个数组
-
*KaTeX parse error: Expected '}', got '#' at position 2: {#̲example[*]}和{#example[@]}表示数组元素的个数
-
命令不会读取配置文件.profile .bash_profile,不读取环境变量,%表示命令字段的换行