shell脚本第一行写明解释器的路径: #!/bin/bash
运行脚本两种方式:使用bash命令运行shell文件,或授予脚本文件执行权限,可直接执行文件
shell启动时,一开始执行一组命令来定义提问文本、颜色等设置,命令存放在~/.bashrc中
登录shell放在~/.bash_profile
shell历史记录文件~/.bash_history
bash中每个命令或命令序列通过使用分号或换行符来分隔
echo用于终端打印
printf 用于终端打印
env 查看所有与终端相关的环境变量
cat /proc/$PID/environ 查看进程的环境变量 (PID设置成进程的ID,总是一个整数)
pgrep 进程名 获取进程的ID
变量赋值和变量相等操作要区分
变量赋值:var=value
变量相等操作: var = value
export 用来设置环境变量
export PATH="$PATH:/home/usr/bin"
或者
PATH="$PATH:/home/usr/bin"
export PATH
常用的环境变量有: PATH HOME PWD USER UID SHELL
获取变量长度的方法: ${#var}
数学运算使用 let (()) [] 方式,高级操作时使用expr,bc
使用let时,变量名之前不需要再添加$
no1=4;
no2=5;
let result=no1+no2
let支持++自加操作 --自减操作 let no1++ let no1-- let no1+=6 let no1-=6
[]操作符 []中也可以使用$前缀
result=$[no1 + no2] result=$[$no1 + 5]
使用(())时,变量名之前需要加$
result=$((no1 + 50))
expr用于基本算数操作时,不支持浮点数,支持整数
bc也是一个计算工具
stdin为 0 stdout为1 stderr2
> 输出文本重定向或保存到一个文件中 目标文件中内容会被清空
>> 文本追加到目标文件中
将错误和输出重定向: 1>out.txt 2>err.txt
将错误和输出重定向到一个文件 2>&1 out.txt 或者 &> out.txt
查看文件内容 cat tmp.txt
$?获取命令执行的状态码 echo $?
更改文件的权限: chmod 000 a.txt 给文件增加可执行权限: chmod +x a.out
在控制台显示输出并重定向到一个文件中覆盖原来文件: cat a.txt | tee out.txt
在控制台显示输出并重定向到一个文件,在原来的文件上追加内容: cat a.txt | tee -a out.txt
使用stdin作为命令参数。只需要将-作为命令的文件名参数即可:$ cmd1 | cmd2 | cmd -
将文件重定向,作为命令输入: cmd < file
将脚本内部的文本块进行重定向:cat<<EOF>log.txt与EOF之间的内容作为stdin的部分输入到log.txt中
cat<<EOF>log.txt
LOG FILE HEADER
EOF
创建自定义文件描述符: exec 3<input.txt #使用文件描述符3打开并读取文件input.txt
创建并使用自定义文件描述符过程:[追加模式很相似]
exec 3<input.txt
cat <&3
数组的声明:array_var=(1 2 3 4) 或 array_var[0]="test1" array_var[1]="test2"
输出数组内容: ${array_var[0]} 或index=1 ${array_var[$index]}
以清单形式打印所有值: ${array_var[*]}或${array_var[@]}
打印数组的长度(个数) ${#array_var[*]}
定义一个关联数组: declare -A ass_array
添加元素的方法: ass_array=([index1]=val1 [index2]=val2) 或 ass_array[index1]=val1 ass_array[index2]=val2
使用别名 alias
alias new_command=‘command sequeue‘ 例子:alias install=‘sudo apt-get install‘