Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。和其他Unix shell 一样,它支持文件名替换(通配符匹配)、管道、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史命令,是从csh和ksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展。
补全
命令补全:
最左侧给出的开头字符串如果能唯一标识某命令文件,则直接补全;否则再次敲tab键给出列表。
路径补全:
按给出的路径逐一匹配每个文件或文件夹,若唯一标识则补全,否则再次敲tab键给出列表。
快捷键
Ctrl+c #终止前台运行的程序
Ctrl+d #退出/关机 等同于命令exit
Ctrl+l #清屏
Ctrl+a #光标移动到命令行最前端
Ctrl+e #光标移动到最后端
Ctrl+u #删除光标前所有字符
Ctrl+k #删除光标后所有字符
Ctrl+r #搜索历史命令,利用关键词
命令历史
shell进程会在其会话中保存此前用户提交执行过的命令
history #调出历史命令
命令历史文件保存在家目录下的 .bash_history 文件中
$HISTSIZE 记录shell进程可以保留的命令历史的条数
$HISTFILE 持久保存命令历史的文件
$HISTFILESIZE 命令历史文件的大小
用法:
history -c #清空命令历史
history -d 3 #删除第三条历史命令
history -r #从文件中读取历史到命令历史列表
history -w #把列表里的命令追加到历史文件中
history 5 #显示最近的5条命令
!5 #再次执行历史列表中第5条命令
!! #再次执行上一条命令
!ip #再次执行最近以ip开头的命令
调用上条命令的最后参数:
ls /etc/sysconfig
cd !$ #直接进入sysconfig文件夹
命令别名
用alias命令来为其他命令设置别名
alias #查看所有可用别名的定义
alias xiaotaiyang='ls' #定义ls的别名为xiaotaiyang
unalias xiaotaiyang #撤销别名xiaotaiyang
type -a xiaotaiyang #查看xiaotaiyang的原命令
定义永久别名:
编辑/etc/bashrc,添加alias xiaotaiyang=‘ls’
vi /etc/bashrc
alias xiaotaiyang='ls' #重启虚拟机后生效
重要符号
符号 | 名称 | 作用 |
---|---|---|
竖线 | 管道符 | 将一个程序的输出直接连接到另一个程序的输入 |
. | 当前目录 | 例如:ls . 展示当前目录文件 |
… | 上一级目录 | 例如:cd … 回到上级目录 |
; | 命令分割符 | 多个命令顺序执行,用分号分割 |
`` | 命令替换 | 命令替换 |
‘’ | 强引用 | 不做变量替换 |
“” | 弱引用 | 实现变量和命令的替换 |
* | 通配符 | 通配 |
{} | 扩展 | 扩展或构件代码块 |
输入输出重定向
标准输入:stdin 0
标准输出:stdout 1
标准错误:stderr 2
标准输出重定向
1> 1>> > >>
标准错误重定向
2> 2>>
混合输出
&>
2>&1
命令行通配符
符号 | 作用 |
---|---|
* | 任意长度任意字符 |
? | 任意单个字符 |
[] | 指定范围内的任意单个字符 |
[^] | 指定范围外的任意单个字符 |
[[:upper:]] | 所有大写字母 |
[[:lower:]] | 所有小写字母 |
[[:alpha:]] | 所有字母 |
[[:digit:]] | 所有数字 |
[[:space:]] | 所有空白字符 |
[[:punct:]] | 所有标的符号 |
[ ^ [:punct:]] | 所有标的符号之外 |
例:
[1-9],[a-z],[A-Z],[a-z0-9]