Bash Shell特性
Bash Shell特性
jit-hakase 发表于3个月前
Bash Shell特性
  • 发表于 3个月前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

Bash Shell特性

shell变量

  • 常用环境变量和bash变量
    • $_ 上一条命令的最后一个参数
    • $TERM 终端环境类型
    • $SHELL shell类型
    • $HISTSIZE 命令历史条目数
    • $USER 用户名
    • $MAIL 邮箱路径
    • $PATH 命令搜索路径
    • $PWD 当前目录
    • $LANG 语言和编码
    • $HOME 家目录
    • $HOSTNAME 主机名
    • $HOSTTYPE 硬件架构
    • $HISTFILE 命令历史记录文件
    • $$ bash的PID
    • $? 上一个命令的状态码
    • $PS1 命令提示符
    • $PS2 多行命令提示符
    • $RANDOM 随机生成一个0-32767的整数

特性和历史

  • 命令输入快捷键
    • [TAB] 命令/文件 补全
    • [TAB][TAB] 列出所有 命令/文件 路径补全
    • Ctrl+c 终止当前命令
    • Ctrl+d 输入EOF(某些命令的退出符)
    • Ctrl+z 将当前命令暂停并调入后台
    • Ctrl+a 跳到命令行首
    • Ctrl+e 跳到命令行尾
    • Ctrl+u 删除光标至命令行首的内容
    • Ctrl+k 删除光标至命令行尾的内容
    • Ctrl+l 清屏(clear命令)
    • Ctrl+s 暂停屏幕输出
    • Ctrl+q 恢复屏幕输出
  • 命令历史操作
    • !string 执行命令历史中最近一个以指定字符串开头的命令
    • !$(Esc+.) 上一条命令的最后一个参数
    • !n 执行命令历史中的第n条命令
    • !-n 执行命令历史中的倒数第n条命令
    • !! 执行上一条命令

替换和别名

  • 命令别名
    • alias CMDALIAS='CMD' 设定命令别名
    • ualias CMDALIAS 取消命令别名
  • 命令结果替换
    • "" 双引号 弱引用 可以实现变量替换
    • '' 单引号 强引用 不能实现变量替换
    • 替换为命令结果的两种方式
      • $(CMD)
      • `COMMAND`
  • {} 花括号同级展开
    • ./t/{a,b,c} <=> ./t/a ./t/b ./t/c +./t/{a,b}{c,d} <=> ./t/ac ./t/ad ./t/bc ./t/bd
  • 符号替换
    • - 上一个工作目录
    • ~ 当前用户家目录
    • ~USER USER家目录
    • ~+ $PWD
    • ~- 上一个$PWD
    • ${!VAR} VAR的变量名 支持globbing
  • 算术展开
    • $((EXPRESSION)) 例: $((C#N)) C进制的N
    • $[EXPRESSION] 例: $[N1+N2] N1+N2的和
    • {N1..N2} 例: {1..10} 展开1~10的序列
  • 字符串替换
    • ${#STR} 求STRING的长度
    • ${STR:POS} 求从POS开始的子串
    • ${STR:POS:LEN} 求从POS开始长度为LEN的子串
    • ${STR#SUBSTR} 从左往右, 删除最短匹配$SUBSTR.
    • ${STR##SUBSTR} 从左往右, 删除最长匹配$SUBSTR.
    • ${STR%SUBSTR} 从右往左, 删除最短匹配$SUBSTR.
    • ${STR%%SUBSTR} 从右往左, 删除最短匹配$SUBSTR.
    • ${STR/OLD/NEW} 从左往右, 替换第一个$OLD$NEW.
    • ${STR//OLD/NEW} 替换所有$OLD$NEW.
    • ${STR/#OLD/NEW} 如果以$OLD开头, 替换为$NEW.
    • ${STR/%OLD/NEW} 如果以$OLD结尾, 替换为$NEW.

文件名通配(globbing)

  • 文件名通配符号
    • * 任意长度的任意字符
    • ? 任意单个字符
    • [] 匹配指定范围内的任意单个字符
    • [^] 匹配指定范围外的任意单个字符
  • 匹配字符组 ([A1-A2]匹配范围, A1, A2为任意字母或数字.)
    • [a-z] 匹配a-z
    • [A-Z] 匹配A-Z
    • [0-9] 匹配0-9 [a-zA-Z0-9] 匹配字母和数字
  • 特殊符号匹配
    • [[:space:]] 空白字符
    • [[:punct:]] 标点符号
    • [[:lower:]] 小写字母
    • [[:upper:]] 大写字母
    • [[:alpha:]] 大小写字母
    • [[:digit:]] 数字
    • [[:alnum:]] 数字和大小写字母

多命令和重定向

  • 命令连用
    • \ 单行命令延续
    • ; 分步执行命令
    • && 同时执行命令
    • || 上一个命令执行失败时执行命令 && || 相当于if else控制流程结构
  • 重定向
    • < 重定向标准输入
    • << EOF 重定向大段标准输入(EOF结尾)
    • &gt; 重定向标准输出[覆盖方式]
    • &gt;> 重定向标准输出[追加方式]
    • 2> 重定向错误输出(覆盖方式)
    • 2>> 重定向错误输出(追加方式)
    • &> 重定向标准输出和错误输出(覆盖方式)
    • &>> 重定向标准输出和错误输出(追加方式) set -C 禁止对已经存在文件使用覆盖重定向 >|(强制覆盖) set +C 关闭上述功能
  • 管道 将前一个命令的输出作为后一个命令的输入 格式: CMD1 | CMD2 | CMD3 | ...

配置文件

  • 主要配置文件
    • /etc/profile 全局配置文件
    • /etc/profile.d/*.sh 全局配置执行脚本
    • ~/.bashrc 个人配置文件
    • ~/.bash_profile 个人配置文件(不常用)
    • ~/.bash_history 命令历史文件
    • ~/.bash_logout 注销时执行的文件
    • /etc/bashrc 设置一些属性(redhat系列才有)
  • 其他相关
    • /etc/sysconfig/i18n 语言和编码配置文件
    • /etc/man.config 设置man page的搜索路径的文件
    • /etc/issue 登陆显示信息的文件
    • /etc/motd 远程连接登陆显示信息的文件
    • /etc/inputrc 输入特性文件
  • 配置文件调用顺序
    • 登录式
      • /etc/profile
      • /etc/inputrc
      • /etc/profile.d/*.sh
      • /etc/sysconfig/i18n
      • ~/.bash_profile
      • ~/.bashrc
      • /etc/bashrc
    • 非登录式
      • ~/.bashrc
      • /etc/bashrc
      • /etc/profile.d/*.sh
      • /etc/sysconfig/i18n
标签: linux
  • 点赞
  • 收藏
  • 分享
粉丝 0
博文 23
码字总数 29680