1、自动补全
shell提供自动补全功能,按一次Tab补全,两次列出所有匹配项。
2、查看历史命令
- history命令
- 键盘上下键,可逐条查看命令行历史记录
3、命令替换
命令替换有两种方式:反引号` (esc下面的按键) 和$()
作用:将命令字符替换为命令的执行结果。
例:
ls 命令的作用是显示当前文件路径下的文件名
那么,它的执行结果就是:当前文件路径下的文件名,即为`ls`
这时我们将其与echo联用
此时,两个命令作用相同。
使用$()也是一样:
4、重定向
shell默认接收用户输入到终端的命令,在执行后打印错误信息和输出结果。
标准输入文件标识符 0
标准输出文件标识符 1
标准错误文件标识符 2
4.1、输入重定向
命令 0<文件名/路径 #0可被省略
#以下这段命令为例
wc -l < /usr/share/hwdata/oui.txt
wc -l 作用:统计文件中的行数
将/usr/share/hwdata/oui.txt中的内容,作为wc命令的输入,即统计/usr/share/hwdata/oui.txt文本中的行数。
4.2、输出重定向
命令 1>文件名/路径 #1可被省略
#以下这段命令为例
cat 文件1 > 文件2
将文件1中的内容以覆盖的形式打印到文件2中,若想保留文件2的内容,可用>>,将文件1中的内容追加到文件2中。
(cat:打印文件内容)
4.3、错误重定向
命令 2>文件名/路径 #2不可被省略
将错误信息重定向到文件中。
也可用>>,将错误信息追加到文件中。
5、管道
符号“|”,可将多个简单命令连接起来,使一个命令的输出,作为另一个命令的输入。
格式:
命令1 | 命令2 | 命令3
以ls命令和grep命令为例:
ls -l /etc | grep init #搜索并打印/etc目录下,包含关键字符init的行
将ls -l /etc 的输出(/etc目录下的文件),作为grep的输入,即在/etc目录下的文件中搜索包含init的行。
6、shell中的变量
shell提供了一些变量,这些变量可以保存路径名、文件名或数值等,shell中常用的变量有四种:本地变量、环境变量、位置变量、特殊变量。
6.1、本地变量
相当于C语言中的局部变量,只在本shell中有效,退出本shell后将被销毁。
如果变量未被指定,将被赋值为空字符串。在使用变量时,要在变量前加上“$”符号。
还可以连续输出多个变量
使用read命令,作用和(scanf/gets)相似。
从标准输入中读取变量值。
-p #设置输入提示信息
read -p "please input an int number:" ADD
删除变量(unset)
echo $ADD
unset ADD #删除本地变量ADD
echo $ADD
6.2、环境变量
环境变量一般用来存储路径列表。用export定义的环境变量只在本shell和其子shell中有效,shell重启后将丢失。
格式:
export 变量名=变量值
export是环境变量的关键字,用于声明该变量为环境变量。
例
export APP=/usr/local
查看所有环境变量(env)
env
unset 变量名
删除环境变量(unset)
6.3、位置变量
用于接收传入shell脚本的参数,故位置变量也称为位置参数。
格式:
$n #用于接收传递给shell脚本的第n个参数
6.4、特殊变量
用来查看脚本的运行信息。
常用特殊变量:
$# 传递脚本的参数数量
$* 和$@ 传递到脚本的所有参数
$? 命令退出状态,0正常退出,非0异常退出
$$ 表示进程的PID
7、shell中的符号
7.1、单引号
可将它中间的字符还原成字面意义,屏蔽shell元字符。
例,
'$NUM' #NUM为本地变量。
NUM=100
echo $NUM
echo '$NUM'
7.2、双引号
具有屏蔽功能,但不会屏蔽$、\、``符号
例,
NUM=100
echo $NUM
echo "$NUM"
7.3、反引号
进行命令替换
例,
date #显示系统时间
echo "Today is `date`"
7.4、通配符
* #与0个或多个字符匹配
? #与任何单个字符匹配
[] #与[]中的任一字符匹配
[!] #与[]外的任一字符匹配
1、*
例,列出/etc目录下的以sys开头的所有文件,
ls -d /etc/sys* #-d选项,只对目标目录本身处理,不做递归处理。
匹配以sys开头的所有文件。
2、?
每次只能匹配一个字符。
例,查找/etc目录下文件名是由两个字符组成的文件
ls -d /etc/??
ls -d ?? #在/etc路径下
3、[]
表示与[]中任一字符匹配,通常是一个范围。
例,在/etc目录下,列出以f~h开头,以.conf结尾的文件
ls /etc/[f-h]*.conf
4、[!]
表示除了[]里面的字符,与其它任一字符匹配。
例,查找以y开头,不以.conf结尾的文件
ls -d /etc/y*[!conf]