Shell是什么
- Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
- Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
Shell的分类
- Bourne Shell:从1979年起Unix就开始使用Bourne Shell, Bourne Shell的主文件名就是sh。
- C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言类似而得名。
1、echo 输出命令
echo [选项] [输出命令]
选项: -e:支持反斜线控制的转义字符
[root@localhost ~]# echo -e "\e[1;31m 这里可以有颜色 \e[0m"
输出颜色
30m=黑色, 31m=红色, 32m=绿色,33m=黄色
34m=蓝色, 35m=洋红, 36m=青色,37m=白色
2、第一个脚本]
[root@localhost ~]# vi hello.sh
#!/bin/bash
#the first program
echo -e "\e[1;34m hello shell \e[0m"
Bash的基本功能
1、命令别名与快捷键
查看与设定别名
alias #查看系统中所有的命令别名
alias 新的命令='原命令 -选项/参数'
设定新别名
别名永久生效与删除别名
vi ~/.bsdhrc
写入环境变量配置文件
unalias 别名
删除别名
命令生效顺序
- 第一顺位执行用绝对路径或相对路径执行的命令。
- 第二顺位执行别名
- 第三顺位执行Bash的内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
常用快捷键
- ctrl+c 强制终止当前命令
- ctrl+l 清屏
- ctrl+a 光标移动到命令行首
- ctrl+e 光标移动到命令行尾
- ctrl+u 从光标所在位置删除到行首
- ctrl+z 把命令放入后台
- ctrl+r 在历史命令中搜索
2、历史命令
history [选项] [历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件~/.bash_history
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
历史命令的调用
- 使用上、下箭头调用历史命令
- 使用 "!n" 重复执行第n条历史命令
- 使用 "!!" 重复执行上一条命令
- 使用 "!字符串" 重复执行最后一条以该字符串开头的命令
命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,只要在输入命令或文件时,按“Tab”键就会自动补全。
3、输出重定向
1、标准输入输出
设备设备文件名文件描述符类型键盘/dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出
标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出输出到指定的文件或设备中
/dev/命令 >>文件以追加的方式,把命令的正确输出输出到指定的文件或设备中
标准错误输出重定向命令 2>文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备中
显示器错误命令 2>> 文件以追加的方式,把命令的错误输出输出到指定的文件或设备中
正确输出和错误输出同时保存命令 > 文件 2>1&1以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令 >> 文件 2>1&1以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令 &> 文件以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令 &>> 文件以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令 >> 文件1 2>> 文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中
3、输入重定向
[root@localhost ~]# wc [选项] [文件名]
选项:
-c统计字节数
-w统计单词数
-l统计行数
- 命令<文件 把文件作为命令的输入
- 命令 << 标示符
- ...
- 标识符把标识符之前内容作为命令的输入
4、管道符
1、多命令顺序执行
;命令1 ; 命令2多个命令顺序执行,命令之间没有任何逻辑关系
&& 命令1 && 命令2逻辑与 <br>当命令1正确执行,命令2才会执行<br>当命令1执行不正确,命令2不会执行
\ 命令1 \命令2 逻辑或<br>当命令1执行不正确,则命令2才会执行<br>当命令1正确执行,则命令2不会执行
2、管道符
- 命令格式:
- [root@localhost~]# 命令1 命令2
命令1的正确输出作为命令2的操作对象5、Shell中特殊符号
1、通配符
通配符作用? 匹配一个任意字符
*匹配0个或任意多个任意字符,也就是匹配任何内容
[]匹配中括号中任意一个字符。例如:[abc]代表一定匹配abc中一个字符
[-]匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母
[^]逻辑非,标示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符
2、Bash中其他特殊符号
符号作用'' 单引号。<br>在单引号中所有的特殊符号,如"$"和""(反引号)都没有特殊含义 ""双引号。<br>在双引号中特殊符号都没有特殊含义,但是"$"、"
"和"\"是例外,拥有”调用变量的值“、”引用命令“和”转义符“的特殊含义
``反引号。<br>反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错
$()和翻译好作用一样,用来引用系统命令。
$用于调用变量的值,如需要调用变量name的值时,需要用¥name的方式得到变量的值。
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通符号。如\$将输入"$"符号,而不当做是变量引用