1. shell 简介
(1) shell 是什么?
Shell
是一个命令解释器,它为用户提供了一个向linux内核发送请求以运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止,甚至是编写一些程序. 主要的特点是直来直去 会用命令就会写脚本
简单而言SHELL 是一个能实现人机交互的命令解释器
(2) 如何查看linux 支持的shell 种类呢?
[hadoop@hadoop181 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[hadoop@hadoop181 ~]$
2. shell 脚本的执行方式 ?
shell 脚本分为
有执行权限的
和没有执行权限
的脚本
2.1 如何判断脚本是否有执行权限
ls 等相关命令, 下可以看到有权限的脚本颜色不一样,并且有x权限
2.2 有执行权限的启动方式
(1) 通过脚本的绝对位置
[hadoop@hadoop181 ~]$ /home/hadoop/apache-zookeeper/bin/zkServer.sh start
(2) 通过脚本的相对位置
[hadoop@hadoop181 ~]$ cd /home/hadoop/apache-zookeeper/
[hadoop@hadoop181 apache-zookeeper]$
[hadoop@hadoop181 apache-zookeeper]$
[hadoop@hadoop181 apache-zookeeper]$ bin/zkServer.sh start
2.3 没有执行权限的启动方式
(1) 通过 bash 命令 + 脚本的路径
[hadoop@hadoop181 bin]$ bash apache-zk-stop-all.sh
(2) 通过 sh 命令 + 脚本路径
[hadoop@hadoop181 bin]$ sh apache-zk-stop-all.sh
3. shell的基础bash
3.1 Bash基础功能
3.1.1 输入输出重定向
(1) 输入输出设备定义
(2) 输入输出重定向
(3) 输出重定向注意事项
- 错误输出的位置不能有空格
- 正确输出的位置需要有空格
(4) 输入重定向 (wc)
- 格式
# 格式 , 这东西其实不是很实用
wc [选项] [文件名]
- 选项说明
|选项| 描述 |
|–|--|
| -c | 统计字节数 |
| -w | 统计单词数 |
| -l | 统计行数 |
3.1.2 多命令顺序执行
(1) 多命令执行符 ;
- 多命令之间,顺序执行,命令之间没有任何逻辑联系
(2)多命令执行符&&
- 当命令1正确执行($?=0),命令2才会执行
- 当命令1执行错误($?!=0),命令2不会执行
(3)多命令执行符||
- 当命令1正确执行($?=0),命令2不会执行
- 当命令1执行错误($?!=0),命令2才会执行
3.1.3 行提取命令 grep
(1) 列出符合条件的行,并列出后续 的n行
grep -A n
(2) 列出符合条件的行,并列出前面的n行
grep -B n
(3) 统计找到的符合条件的字符串的次数
grep -c
(4)忽略大小写
grep -i
(5)输出行号
grep -n
(6)反向查找
grep -v
(6)标出颜色
grep --color=auto
3.1.4 通配符
(1) 通配符 ?
匹配任意一个字符
(2) 通配符 *
匹配 0 个 或任意多个字符,可以匹配任意类容
(3) 通配符 []
匹配中括号中任意一个字符, 中括号相当于一个数组
(4) 通配符 [-]
匹配中括号中任意一个字符,中括号相当于一个数组;
-
代表一个范围
[a-z]
就代表匹配一个小写字母
(5) 通配符 [^]
逻辑非, 表示匹配不是中括号内的一个字符
[^0-9]
就代表匹配不是一个数字的字符
(6) 通配符 [^0-9]
3.1.5 特殊符号
(1) 特殊符号 ''
在单引号中的特殊符号,无意义
(2) 特殊符号""
在双引号中的特殊符号,有意义
(3) 特殊符号 ``
反引号括起来的内容是系统命令,在bash中会先执行它,等价于
$()
(4) 特殊符号 $()
引用系统变量
(5) 特殊符号 ()
用于一串命令执行时,
()
中的内容会在子shell中执行
(6) 特殊符号 {}
用于一串命令执行时,
{}
中的命令会在当前shell中执行
(7) 特殊符号 []
用于变量的测试
(8) 特殊符号 #
注释一行文本
(9) 特殊符号 $
用于调用变量的值,例如$name得到name的值
(10) 特殊符号 \
转义字符
3.2 Bash快捷键
快捷键 | 作用 |
---|---|
ctrl + A | 将光标移动到命令行开头 |
ctrl + E | 将光标移动到命令行结尾 |
ctrl + C | 强制终止当前的命令 |
ctrl + L | 清屏, 相当于clear 命令 |
ctrl + U | 删除或剪切光标之前的命令 |
ctrl + K | 删除或剪切光标之后的命令 |
ctrl + Y | 粘贴 Ctrl + U 或 Ctrl + K 剪切的内容 |
ctrl + R | 在历史命令中搜索 |