Shell 基础
一、Shell 概述
1、Shell是什么
2、Shell 的两种主要语法
>>> Shell 的两种主要语法类型有 Bourne 和 C,这两种与方法彼此不兼容。Bourne 家族主要包括 sh、ksh、Bash(大部分Linux应用)、psh、zsh;
C 家族主要包括:csh(大部分Uinx应用)、tcsh。
>>> Linux 和 Uinx 大部分命令通用
>>> vi /etc/shells 查看支持的 shell 版本。
>>> 切换 Shell
二、脚本执行方式
1、echo 输出命令
>>> echo [选项] [输出命令]
# 输出命令有空格时加上双引号。
选项:
-e : 支持反斜线控制的字符转换
控制字符 作用
\a 输出警告音
\b 退格键,也就是向左删除键
\n 换行符
\r 回车键
\t 制表符,也就是Tab键
\v 垂直制表符
\0nnn 按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数
\xhn 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数
![](https://images2017.cnblogs.com/blog/1295451/201802/1295451-20180202133347968-1718412874.png)
>>> [root@localhost ~] # echo -e "\e[1;31m 嫁人就要嫁凤姐\e[0m"
2、第一个脚本
>>> [root@localhost ~] # vi hello.sh
#!/bin/bash (必须写,调用其他语言时用)
# The first program (注释)
3、脚本执行
(1):赋予执行权限,直接运行
>>> chmod 755 hello.sh (赋予可执行权限)
>>> ./hello.sh (本目录下执行这个文件)
(2):通过 Bash 调用执行脚本
>>> bash hello.sh
三、Bash 的基本功能
1、命令别名与快捷键
>>>[root@localhost ~] # ll = 'ls -l --color = auto'
别名 原名 颜色自动
(1):查看与设定别名
>>> [root@localhost ~] # alias
# 查看系统中所有的命令别名
>>>[root@localhost ~] # alias 别名= ‘原命令’
# 设定命令别名(临时设定,系统重启后消失)
(2):永久别名生效与删除别名
>>>[root@localhost ~] # vi ~/.bashrc
# 写入环境变量配置文件 (永久生效)
>>> [root@localhost ~] # source .bashrc
# 直接使永久命令生效
>>>[root@localhost ~] # unalias 别名
# 删除别名 (也是临时生效)
使环境变量立即生效
source 配置文件
如:#source /etc/profile
3、命令生效顺序
第一顺位执行用绝对路径或相对路径执行的命令。
第二顺位执行别名。
第三顺位执行Bash的内部命令。
第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
# 别名的优先级高于原名令(Bash 的内部命令)
# 自己设定的别名不应该跟系统中的原名冲突。
2、历史命令
(1):历史命令
>>>[root@localhost ~] # history [选项] [历史命令保存文件]
选项:
-c : 清空历史详细 (不建议清空历史命令)
-w : 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
>>> 历史命令默认会保存1000条,可以在环境变量配置文件 /etc/profile 中进行修改
(2):历史命令的调用
使用上、下箭头调用以前的历史命令
使用 “!n” 重复执行地 n 条历史命令
使用 “!!” 重复执行上一条命令
使用 “!字符串” 重复执行最后一条以该字符串开头的命令
3、输出重定向
1、标准输入输出
2、输出重定向
(1):[root@localhost ~] # 命令 >> 文件 (不覆盖原来命令)
(2):[root@localhost ~] # 错误命令 2>>文件 (不覆盖原来命令)
(3):[root@localhost ~] # 命令 >> 文件 2>&1
(4):[root@localhost ~] # 命令 >> 文件1 2>>文件2 (常用)
(5):[root@localhost ~] # ls &>/dev/null (null:黑洞,垃圾站)
# 啥也不输出
3、输入重定向
>>> [root@localhost ~] # wc [选项] [文件名]
选项: -c : 统计字节数
-w : 统计单词数
-l : 统计行数
命令 < 文件把文件做为命令的输入
命令 << 标识符
。。。
标识符把标识符之间内容作为命令的输入
>>> [root@localhost ~] # wc 标识符
4、管道符
(1)、多命令顺序执行
>>> [root@localhost ~] # 命令1 ; 命令2 (顺序执行)
>>> [root@localhost ~] # 命令1 && 命令2 (命令1正确执行,命令2才会执行)
(命令1 执行不正确,命令2不会执行)
>>> [root@localhost ~] # 命令1 || 命令2 (命令1 执行不正确,命令2才会执行)
(命令1 执行正确,命令2不会执行)
>>> [root@localhost ~] # 命令1 && 命令2 || 命令3
# 命令1 执行正确,就执行命令2,否则执行命令3
(2):管道符
>>> [root@localhost ~] # 命令1 | 命令2
# 命令1 的正确输出作为命令2 的操作对象
grep : 字符串查询命令
5、通配符
四、Shell 命令快捷键
其他控制键:
五、more 命令和 less 命令
1、more命令
more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一 页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。
(1).命令格式:
>>> [root@localhost ~] # more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
(2).命令功能:
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
(3).命令参数:
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
(4).常用操作命令:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
2、less指令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。 在 more 的时候,我 们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按 键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之 外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
(1).命令格式:
>>> [root@localhost ~] # less [参数] 文件
(2).命令功能:
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
(3).命令参数:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o 文件名 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
(4).常用操作命令:
/字符串 向下搜索“字符串”的功能
?字符串 向上搜索“字符串”的功能
n 重复前一个搜索(与 / 或 ? 有关)
N 反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown] 向下翻动一页
[pageup] 向上翻动一页