运算符

替换运算符 ${varname:-word} 变量存在,则返回varname;不存在则返回word ${varname:=word} 存在,返回;不存在,置为word,并返回 ${varname:?message} 不存在,返回消息 ${varname:+word} 存在,返回word;不存在,返回null 模式匹配运算符 ${varname # pattern} 匹配开头,删除匹配最短部分,返回剩余 path=/home/prince/desktop/long.file.name ${path#/*/} prince/desktop/long.file.name ${varname ## pattern} 匹配开头,删除匹配最长部分,返回剩余 ${varname % pattern} 匹配结尾,删除匹配最短部分,返回剩余 ${varname %% pattern} 匹配结尾,删除匹配最长部分,返回剩余 ${varname /pattern/string} 只替换第一个匹配项 ${varname //pattern/string} 变量中pattern换为string

输入输出

0> 标准输入 STDIN_FILENO; 1> 标准输出 STDOUT_FILENO; 2> 标准错误 STDERR_FILENO /dev/null 只写 /dev/zero 0流 /dev/tty 强制显示 ” 强引用,显示原文 “” 弱引用,显示替代内容 “ 显示bash执行其中命令的结果

特殊字符意义

~ 主目录 ` 命令替换 # 脚本中注释 $ 变量表达式 & 后台 * 字符串通配 ( 启动子shell ) 停止子shell \ 转义 | 管道 [ 开始字符集通配符号 ] 结束字符集通配符号 { 开始命令块 } 结束命令块 ; shell命令分隔符 < 输入重定向 > 输出重定向 / 路径名目录分隔符 ? 匹配单个字符 ! 管道行逻辑NOT

Shell变量

变量类型:内建变量、环境变量、外部变量 常见环境变量 HOME PATH HISTSIZE LOGNAME HOSTNME SHELL 路径名 LANG LANGUAGE MAIL 指向监视文件 PS1 基本提示符 PS2 附属提示符 COLUMNS 命令编辑模式下可使用命令行的长度 EDITOR 默认的行编辑器 VISUAL 默认的可视编辑器 FCEDIT 命令 HISTFILE HISTFILESIZE 最大行数 IFS 定义shell使用的分隔符 MAILCHECK shell检查MAIL文件的周期 MAILPATH 功能类似MAIL,可以用一组文件,冒号分隔,每个文件后跟一个?和发给用户的消息 TERM 终端类型 TMOUT shell自动退出的时间 PROMPT_COMMAND 指定主命令提示符前应执行的命令 PS3 select的命令提示符 PS4调试命令提示符(+) MANPATH 寻找手册页路径,冒号分隔 LD_LIBRARY_PATH 寻找库的路径,以冒号分隔