1.shell简介
- 命令从广义上是用户向系统内核发出的控制信号请求,是与之交互的文本流
- shell命令是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互
- shell脚本是集成了若干个命令并集合了控制语句的之后的几何体,交给shell批量执行
- Linux中的shell命令详见 Linux常用命令大全
1)执行流程
- 用户在命令行提示符下键入命令文本,开始与shell进行交互
- 之后。shell将用户的命令或者按键转化为内核所能理解的指令
- 控制操作系统做出响应,将命令传递到控制相关硬件设备
- 然后,shell将输出结构通过shell提交给用户
2)shell命令格式
-
通常一条命令包含三个要素:命令名称、选项、参数。命令名称是必须具备的,选项和参数都可能是可选项
-
$ command [options] argument1 argument1
- 注意
- shell提示符号中"$“表示为其他用户,”#"为超级用户
- command命令需要严格区分大小写
- options参数由"-"引导
- 注意
-
一条命令的三要素用空格隔开如
sudo apt-get install rxvt
-
若将多个命令在一行书写,用分号(;)将各个命令隔开如
sudo apt-get upgrade;sudo apt-get update
-
如果一条命令不能在一行写完,在行尾使用反斜杠(\)标明该条命令还未结束
-
使用TAB键可以补全命令,按两下TAB键可以查看同名命令或者文件;使用上下键,查看历史命令记录
2.shell中的特殊字符
1)通配符
- shell中的通配符:用于处理查找一组名称类型相同的文件,提高效率
通配符 | 含义 | 实例 |
---|---|---|
星号(*) | 匹配任意长度的字符串 | 用file_*.txt,匹配file_zhang.txt,file_le.txt,file_wang.txt等同类型文件 |
问号(?) | 匹配一个长度的字符 | 用file_?.txt,匹配file_1.txt,file_2.txt,file_3.txt文件 |
方括号([…]) | 匹配其中指定的一个字符 | 用file_[otr].txt,匹配file_o.txt,file_t.txt,file_r.txt特定字符 |
方括号([ - ]) | 匹配指定的一个字符范围 | 用file_[a-z].txt,匹配file_a.txt,file_b.txt,file_c.txt,… ,file_z.txt范围内的字符 |
方括号([^ …) | 除了其中指定的单个字符,均可匹配 | 用file_[ ^ otr ].txt,匹配除了file_o.txt,file_t.txt,file_r.txt特定字符以外的其他字符 |
操作应用如下图,这里创建了三个file类名文件
2)管道
-
shell中的管道可以将一些列命令连接起来,表示为第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又作为第三个命令的输入,以此类推,通常使用"|"符号连接命令管道
-
如下所示可以借助管道命令,将ls命令作为wc命令的输入,得到该目录下的文件数目
-
ls /usr/bin | wc -w
-
-
通过管道和grep命令的结合,可以查看文档和终端的信息,
-
ps -ef | grep bash
3)输入输出重定向
- 输入/输出重定向目的在于改变shell命令或者程序默认的标准输入/输出目标。重新定向到新的目标
- Linux中的默认的标注输入定义为从键盘输入,标准输出定义为从终端窗口输出
- 用于为当前操作改变输入或者输出,迫使某人特定命令的输入或者输出来源为外部文件
重定向符号 | 含义 | 实例 |
---|---|---|
>file | 将file文件重定向为输出源,新建模式 | ls /usr >lsoutput.txt,将ls /usr命令的执行结果,写到lsoutput.txt中去,如没有此文件将新建,若存在此文件,将覆盖 |
>>file | 将file文件重定向为输出源,追加模式 | ls /usr >>lsoutput.txt,将ls /usr命令的执行结果,追加到lsoutput.txt文件已有的内容之后 |
<file | 将file文件重定向为输入源 | wc < file1,将file1中的内容作为输入源传给wc命令 |
2>或&> | 将由命令产生的错误信息输入到文件中 | ls notexistfile.txt 2>err.log,使用ls命令查看一个不存在的文件名的时候,将系统错误信息提示保存在err.log文件中 |
使用举例
如下图为重定向输入
如下图为重定向新建和追加
如下图为重定向查看
4)命令置换
-
命令置换就是将一个命令的输出作为另一个命令的参数,如
-
ls `pwd` # 列出当前目录下的文件 echo "today is 'date'" # 写入当前时间
出作为另一个命令的参数,如
-
ls `pwd` # 列出当前目录下的文件 echo "today is 'date'" # 写入当前时间