边学习边整理
历史命令
history
history #查看历史命令
history -c #清空历史命令,不建议清空命令
history -w /tmp/my_bash_history #保存至/tmp/my_bash_history文件中,默认保存在~/.bash_history
本次登录操作的命令不会保存至~/.bash_history
logout时,才会写入history
在环境变量配置文件中/etc/profile中,HISTSIZE = 1000,默认保存1000条
修改后,重新登陆才可以生效
上下箭头
!n
重复执行第n条命令
!!
重复执行上一条命令
!字串
重复执行以此字符串开头的最后一条命令
tab键命令补全
文件或者目录
两次tab键可以显示以输入字符串开头的所有命令
命令别名
alias vi='vim' #别名=‘原命令’
alias #查看别名
vim /root/.bashrc #修改环境变量文件中写入,别名永久生效
unalias vi #删除别名
不要和原始命令名重复,否则会覆盖原命令执行结果
命令执行顺序:
执行用绝对路径或相对路径执行的命令
别名
bash内部的命令
执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
常用快捷键
快捷键 | 作用 |
---|---|
ctrl+A | 把光标移动到命令行开头 |
ctrl+E | 把光标移动到命令行行尾 |
ctrl+C | 强制终止当前命令 |
ctrl+L | 清屏=clear |
ctrl+U | 删除或剪切光标之前的命令 |
ctrl+K | 删除或剪切光标之后的内容 |
ctrl+Y | 粘贴ctrl+U或ctrl+K剪切的内容 |
ctrl+R | 在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索 |
ctrl+D | 退出当前终端 |
ctrl+Z | 暂停,并放入后台 |
ctrl+S | 暂停屏幕输出 |
ctrl+Q | 恢复屏幕输出 |
输入输出重定向
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
输出重定向
输出重定向,改变输出方向,输出到文件中
类型 | 符号 | 作用 |
---|---|---|
标准输出重定向 | 命令>文件 | 以覆盖的方式,把命令的正确输出到指定的文件或者设备中 |
标准输出重定向 | 命令>>文件 | 以追加的方式,把命令的正确输出指定到文件或设备中 |
标准错误重定向 | 错误命令 2>文件 | 覆盖方式 |
标准错误重定向 | 错误命令 2>>文件 | 追加方式 |
正确输出和错误输出同时保存 | 命令 > 文件 2>&1 | 覆盖方式,命令执行结果都保存到同一个文件中 |
正确输出和错误输出同时保存 | 命令 >> 文件 2>&1 | 追加方式 |
正确输出和错误输出同时保存 | 命令 &> 文件 | 覆盖方式 |
正确输出和错误输出同时保存 | 命令 &>> 文件 | 追加方式 |
正确输出和错误输出保存到不同文件 | 命令>>文件1 2>>文件2 | 结果正确,追加到文件1,结果错误,追加到文件2 |
ls &>/dev/null #相当于不保存任何结果,也不在显示屏输出
输入重定向
wc -c 文件名 #统计字节数
wc -w 文件名 #统计单词数
wc -l 文件名 #统计行数
wc #统计键盘输入,行数/单词书/字符数
wc < 文件名 #统计该文件的上述三个参数
wc << 符号 #将符号之间的输入进行统计
多命令顺序执行
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1;命令2 | 顺序执行,没有逻辑关联 |
&& | 命令1 && 命令给2 | |
|| | 命令1||命令2 | 逻辑或,命令1不正确,命令2执行;命令1正确执行,命令2不执行 |
使用场景:
#复制分区或者整个硬盘
#if=源文件或者源设备
#of=目标文件或目标设备
#bs=一次输入输出的字节数,一个数据块
#count=指定输入输出多少个数据块
dd if=输入文件 of=输出文件 bs=字节数 count=个数
date;dd if=/tmp/test of/tep/test1 bs=1k count =100;date
date;dd if=/dev/zero of/tep/test2 bs=1k count =1000;date #创建一个1M文件大小
./configure && make && make install
命令 && echo yes || echo no #判断该命令是否正确执行
管道符
命令1 | 命令2 #命令1的的正确输出作为命令2的此操作对象
ll -a /etc/ | more #分屏显示
netstat -an | grep "ESTABLISHED" #只显示ESTABLISHED的内容
grep -i "搜索内容" 文件 #在文件中搜索响应的内容的行,-i忽略大小写
grep -n "text" filename #输出行号
grep -v "text" filename #反向查找
grep --color=auto "text" filename #关键字显示颜色
通配符
? | 匹配一个任意字符 |
* | 匹配0个或者任意多个任意字符 |
[] | 任意一个字符。[abc],只能匹配中括号中一个字符 |
[-] | |
[^] | 匹配任意一个字符。取反[^a-z]代表任意一个不是小写字母的字符 |
其它
‘’ | 在单引号中的所有特殊符号都没有特殊含义,$、`空格 |
“” | 双引号中特殊符号没有特殊含义,但以下符号除外:$、`、\ |
`` | 反引号,其内容为系统命令,在bash中会先执行它 |
$() | 引用系统命令 |
# | 脚本中代表注释 |
$ | 调用变量的值 |
\ | 转义符 |
name = haha #变量赋值
echo $name #打印haha
echo name #打印name
echo '$name' #打印$name
echo "$name" #打印haha
echo '$(date)' #打印$(date)
echo "$(date)" #打印date返回值
abc=`date` #反引号
echo &abc #打印date的返回值
echo $(date) #打印当前时间