bash常用功能
Posted hjnzs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash常用功能相关的知识,希望对你有一定的参考价值。
1、历史命令
[root@centos7 ~]# history [选项] [历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文件,则放入默认历史命令保存文件~/.bash_history 中
2、历史命令使用
- 使用上、下箭头调用以前的历史命令
- 使用“!n”重复执行第 n 条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字串”重复执行最后一条以该字串开头的命令
[root@centos7 ~]# !sys
systemctl restart vsftpd
- 使用“!$”重复上一条命令的最后一个参数
3、命令别名
1)设置别名
[root@centos7 ~]# alias 别名=“命令”
[root@centos7 ~]# alias vi="vim"
为了让这个别名永久生效,可以把别名写入环境变量配置文件“~/.bashrc,~/.bash_profile”,只针对当前用户
2) 查看别名
[root@centos7 ~]# alias # 直接执行,显示已经设置的别名命令
alias cp='cp -i'
alias egrep='egrep --color=auto'
....
3)取消别名
[root@centos7 ~]# unalias vi
4、Bash 常用快捷键
快捷键 作用
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 恢复屏幕输出
5、输入输出重定向
1)标准输入输出
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
2) 输出重定向
标准输出重定向 覆盖:正确命令 > 文件 追加:正确命令 >> 文件
标准错误输出重定向 覆盖:正确命令 2> 文件 追加:正确命令 2>> 文件
正确和错误输出到同一个文件中 覆盖:命令 &> 文件 追加:正确命令 &>> 文件
正确和错误输出到不同文件中 命令 1>>文件1 2>>文件2
6、多命令顺序执行
多命令执行符 格式 作用
; 命令 1 ;命令 2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令 1 && 命令 2 当命令 1 正确执行($?=0),则命令 2 才会执行 当命令 1 执行不正确($?≠0),则命令 2 不会执行
|| 命令 1 || 命令 2 当命令 1 执行不正确($?≠0),则命令 2 才会执行 当命令 1 正确执行($?=0),则命令 2 不会执行
示例:
ping 100.100.100.100 -c1 &> /dev/null && echo "100.100.100.100 is ok " || echo "100.100.100.100 is error"
7、管道符
1)、字符串查找命令 grep
grep [选项] "搜索内容" 文件名
选项:
-A 数字: 列出符合条件的行,并列出后续的 n 行
-B 数字: 列出符合条件的行,并列出前面的 n 行
-c: 统计找到的符合条件的字符串的次数
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
--color=auto 搜索出的关键字用颜色显示
示例:
[root@centos7 ~]# grep -c "/bin/bash" /etc/passwd #查找当前系统可以登录的用户数
2)、文件查找命令 find,支持通配符
[root@centos7 ~]# find . -name "*.sh" # 查找当前目录下,以sh结尾的文件
3)、管道符 ,将前一个命令结果交给后一个命令进行处理 |
[root@centos7 script]# find . -name "*.sh" | wc -l #查找当前目录下,以sh结尾的文件,并且统计个数
8、通配符
通配符 作用
? 匹配一个任意字符
* 匹配 0 个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。例如:[123]代表一定匹配一个字符,或者是 1,或者是 2,或者是 3。
[-] 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一 个小写字母。
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一 个不是数字的字符
9、bash中的其他符号
'' 单引号。在单引号中所有字符当作普通字符串处理,所见所得。
"" 双引号。在双引号中所有字符当作普通字符串处理,所见所得。但是“$”、“`”和“” 是例外。
`` 反引号。反引号括起来的内容是系统命令,在 Bash 中会先执行它。和$() 作用一样,不过推荐使用$(),
() 用于一串命令执行时,()中的命令会在子 Shell 中运行
{} 用于一串命令执行时,{}中的命令会在当前 Shell 中执行。也可以用于变量变形与替换。
[] 用于变量的判断,一般与for,if等条件语句连用
# 在 Shell 脚本中,#开头的行代表注释。
$ 用于调用变量的值,如需要调用变量 name 的值时,需要用$name 的方式 得到变量的值。
转义符,跟在之后的特殊符号将失去特殊含义,变为普通字符。如$将 输出“$”符号,而不当做是变量引用
示例
1)、单引号与双引号
[root@centos7 script]# name=zs
[root@centos7 script]# echo "$name"
zs
[root@centos7 script]# echo '$name'
$name
2)小括号与大括号的区别
()执行一串命令时,需要重新开一个子 shell 进行执行 ;{}执行一串命令时,是在当前 shell 执行
()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
()最后一个命令可以不用分号;{}最后一个命令要用分号;
{}的第一个命令和左括号之间必须要有一个空格;()里的各命令不必和括号有空格
以上是关于bash常用功能的主要内容,如果未能解决你的问题,请参考以下文章