shell基础
shell是一个命令解释器,主流shell是bash
linux内etc/shells内由主要支持的shell类型
shell执行方式
echo [选项] [输出内容]#输出命令
-e 支持反斜线控制的字符转换
echo -e "\e[1;31m abcd \e[0m"#进行颜色输出
\e[1;#进行颜色输出
\e[0m#结束颜色输出
30m = 黑色 31m = 红色 32m = 绿色 33m = 黄色
34m = 蓝色 35m = 洋红 36m = 青色 37m = 白色
控制字符 | 作用 |
---|---|
\\ | 输出\本身 |
\a | 输出警示音 |
\b | 退格键,也就是向左删除键 |
\e | ESCAPE键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符,也就是Tab键 |
\v | 垂直制表符 |
a | |
\0nnn | 按照八进制ASCII码表输出字符,其中0为数字零,nnn是三位八进制 |
\xhh | 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数 |
\c | 取消输出行末的换行符,和“-n”选项一致 |
第一个脚本
#!/bin/Bash
#不是命令,标识自己是shell脚本,表明以下命令是shell命令
#The first program
echo -e "Mr.liu is the most honest man"
脚本执行
赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
通过Bash调用执行脚本
bash hello.sh
将window的代码转换为linux的执行代码
dos2unix 文件名
bash的基本功能
历史命令与命令补全
history [选项] [历史命令保存文件]
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件
~/.bash_history
历史命令默认保存1000条,可以在/etc/profile中修改
使用上下箭头调用以前的历史命令
使用"!n"重复执行第n条命令
使用"!!"重复执行上一条命令
使用"!字串"重复执行最后一条以该字串开头的命令
可以使用Tab键补全
命令别名与常用快捷键
命令别名
alias 别名='原命令' #设置别名,命令行定义只会临时生效
alias #查询别名
命令执行顺序
1.第一顺序执行用绝对路径或者相对路径执行的命令
2.第二顺序是别名
3.第三顺序执行Bash的内部命令
4.第四顺序执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
#永久生效
vi /root/.bashrc
unalias 别名
常用快捷键
快捷键 | 作用 |
---|---|
ctrl+A | 光标移动到开头 |
ctrl+E | 光标移动到结尾 |
ctrl+C | 强制终止当前命令 |
ctrl+L | 清屏和clear命令类似 |
ctrl+U | 删除或剪切光标前的命令 |
ctrl+K | 删除或剪切光标后的命令 |
ctrl+Y | 粘贴 |
ctrl+R | 在历史命令中查看 |
ctrl+D | 退出终端 |
ctrl+Z | 暂停,并放入后台 |
ctrl+S | 暂停屏幕输出 |
ctrl+Q | 恢复屏幕输出 |
输入输出重定向
1.标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/sdtout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
2.输出重 定向
类型 | 符号 | 作用 |
---|---|---|
标准输出重定向 | 命令 > 文件 | 以覆盖的方式,将命令的正确输出到指定文件或则设备 |
命令 >> 文件 | 以追加的方式,把命令的正确输出到指定文件或设备 | |
标准错误输出命令重定向 | 错误命令 2> 文件(‘2’与’>'中间不能有空格,以下相同) | 以覆盖的方式,将命令的错误输出到指定文件或则设备 |
错误命令 2>> 文件 | 以追加的方式,把命令的错误输出到指定文件或设备 | |
正确输出和错误输出同时保存 | 命令 > 文件 2>&1 | 以覆盖的方式,将命令的输出到指定文件或则设备 |
命令 >> 文件 2>&1 | 以追加的方式,把命令输出到指定文件或设备 | |
命令 &>文件 | 以覆盖的方式,将命令的输出到指定文件或则设备 | |
命令 &>>文件 | 以追加的方式,把命令输出到指定文件或设备 | |
命令>>文件1 2>>文件2 | 以追加的方式,把命令正确输出到指定文件1或设备1,把命令的错误输出到指定文件2或设备2 |
ls &>/dev/null #丢入垃圾箱
3.输入重定向
命令<文件 把文件作为命令的输入
wc [选项] [文件名]#统计命令 ctrl + D 退出
-c 统计字节数
-w 统计单词数
-l 统计行数
多命令顺序执行与管道符
1.多命令顺序执行
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1 ; 命令2 | 多个命令顺序执行,命令之间没有任何逻辑联系 |
&& | 命令1 && 命令2 | 逻辑与,当命令1正确执行,则命令2才执行,当命令1执行不正确,则2不执行 |
|| | 命令1 || 命令2 | 逻辑或,当命令1执行不正确,2执行,当1正确,2不执行 |
dd if=输入文件 of=输出文件 bs=字节数 count=个数
#复制命令,可以复制文件,特殊文件,分区,硬盘都可以,当成磁盘拷贝对待
输入文件 指定源文件或源设备
输出文件 指定目标文件或目标设备
字符数 指定一次输入/输出多少字节,即把这些字节看作一个数据块
个数 指定输入/输出多少个个数数据块
dd if=/dev/zero of=/root/testfile bs=1k count=100000
2.管道符
命令1 | 命令2
#命令1的正确输出作为命令2的操作对象,1必须正确
grep [选项] "搜索内容"
-i 忽略大小写
-n 输出行号
-v 反向查找
--color=auto 搜索出的关键字用颜色显示
通配符与其他特殊符号
1.通配符
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意字符,例,[abc]代表一定匹配一个字符,可以是a或b或c |
[-] | 匹配中括号中任意字符,-代表一个范围,例,[a-z],代表匹配一个小写字母 |
[^] | 逻辑非,代表匹配不是中括号内的一个字符,例,[()0-9]代表匹配一个不是数字的额字符(中括号中两边无括号) |
2.特殊符号
符号 | 作用 |
---|---|
‘’ | 单引号,在此内的符号无特殊意义 |
“” | 双引号,在此内的符号有特殊意义,"$"、"`“和”"分别有“调用变量的值”、“引用命令”和“转义符”的特殊含义 |
`` | 反引号,反引号括起来的命令是系统命令,在Bash中会先执行他,和$(作用相同 |
$() | 和反引号相同 |
# | 注释 |
$ | 用于调用变量的值,如变量a,需要$a的方式来得到变量 |
\ | 转义符,跟在\之后的特殊号将失去特殊含义,变成普通字符,如$将输出“$”符号,而不是当作变量引用 |