-
Shell概述
- 接收输入的命令,是一个命令行解释器,把接收到的命令转为二进制传给内核,由内核调用硬件处理
- 解释执行的脚本语言,可以直接调用Linux系统命令,可以编写一些程序,方便运维人员使用
- Shell的分类
- Bourne Shell (sh,ksh,Bash,psh,zsh) Bash是Linux标准Shell
- C Shell (csh,tcsh) 语法与C语言类似
- 查看当前系统使用的Shell可以使用命令行:
echo $SHELL
- echo 输出命令
echo [选项] [内容]
-e:支持反斜线控制的字符转换
设置输出字体的颜色 31m=红色,32m=绿色,34m=蓝色,0m=重置
echo -e "\e[1;31m 我是红色的字体 \e[0m"
设置背景颜色 41m=红色,42m=绿色,43m=黄色,0m=重置
echo -e "\e[1;42m 我的背景颜色是绿色 \e[0m"
- 写一个脚本
vi hello.sh
:用vim编辑器写一个hello.sh文件
#!/bin/bash
: 位于首行,声明我这个文件是Linux的标准脚本,即声明使用Bash的命令解释器(不可省略)
#这是第一个shell脚本
:#代表注释
echo -e "\e[1;31m 我是红色的字体 \e[0m"
:wq
退出vim编辑器并保存
chmod 755 hello.sh
:修改文件权限
./hello.sh
:执行当前目录下的hello.sh脚本
- 命令的别名
alias
:查看系统中所有的命令别名
alias cp='cp -i'
:此时执行cp
时相当于cp -i
(临时生效,注销后则失效,永久生效需修改环境变量配置文件)
unalias
:删除别名 - 命令生效顺序 (先后依次排序如下)
- 绝对路径或相对路径执行的命令
- 执行别名
- 执行Bash内部命令
- 执行$PATH环境变量下定义的目录里的命令
- 常用快捷键
- ctrl+c:强制终止当前命令
- ctrl+z:把当前执行命令放入后台
- ctrl+a:光标移动到当前命令行的行首
- ctrl+e:光标移动到当前命令行的行尾
- ctrl+u:从当前光标位置删除命令行到行首
- ctrl+r:在历史命令中搜索
- ctrl+l:清屏相当于
clear
- history [选项] [历史命令保存文件]
-c:清空历史命令
-w:把缓存中的历史命令写入到历史命令保存文件中 默认为~/.bash_history - 历史命令的调用
- 按上下箭头
-
!!
:执行上一条命令 -
!字符串
:执行匹配最后一条以该字符串开头的命令 - 使用Tab键 进行命令和文件目录的补全,若当前匹配的有多个则再摁多一次,则会列出所有匹配的文件或目录
输出重定向:把原来应该输出到显示器的内容,输出到其他地方,一般输入到文件
文件描述符
0:标准输入
1:标准输出
2:标准错误输出标准输出重定向 只能保存正确命令的执行的结果
命令 > 文件:覆盖的方式输出到文件
命令 >> 文件:追加的方式输出到文件标准错误输出重定向 只能保存错误命令的执行的结果
错误命令 2> 文件:覆盖的方式输出到文件
错误命令 2>> 文件:追加的方式输出到文件
注意2>
之间没有空格,否则会报错正确输出和错误输出同时保存
命令 > 文件 2>&1
命令 >> 文件 2>&1
命令 &> 文件
命令 &>> 文件
命令 >> 文件1 2>> 文件2&>/dev/null
:系统黑洞可以当成垃圾站,就是执行命令不想看到结果输入重定向:wc [选项] [文件名]
选项
-c:统计字节数
-w:统计单词数
-l:统计行数-
例子:
执行wc
命令
输入:
asdf asdfg
再按ctrl+d
结束
wc < 文件
或wc 文件
:则是统计文件-
wc << 字符串
:当输入相同字符串时结束输入,进行统计
-
管道符
命令1 | 命令2 : 命令1的正确输出作为命令2的操作对象
-
通配符
?:匹配一个任意字符
*:匹配任何内容,0个或多个任意字符
[]:匹配中括号中的任意一个字符,[ab] 则匹配到的是a或b
[ - ]:-代表的是一个范围,[0-9]表示的就是匹配一个数字
[ ^ ]:匹配除了[]范围中的一个字符,[^a-z]表示匹配一个不是小写字母的字符
-
其他特殊符号
''
在单引号中,会认为是字符串
""
在双引号中,'$'被认为是调用变量,'`'被认为是引用命令,''被认为是转义符
$()
应用系统命令