Shell功能
初次体验终端,系统会出现一个提示符,而提示符的形式分多种
提示符分类 | 解释 |
---|---|
# | 表示当前用户为系统超级管理员用户,即root用户,拥有最高权限 |
$ | 表示当前用户为普通用户,只有一定的管理权限 |
而对于Ubuntu,默认登录用户为普通用户,所以$为默认提示符。在提示符后面,用户向系统输入各种正确的指令,操作系统会根据命令的要求进行相应的工作,直到用户注销。此期间完成对用户输入命令的解释工作机制就是Shell。
Linux此类系统由外到内,从上到下分为5层,即用户层、应用层、Shell层、内核(Kernal)、硬件层。而Shell负责将它之上的应用层或用户层的命令传递给它之下系统的内核层,操作系统做出反应,再经由它传递反馈给应用层或用户层。
一、Shell命令基本格式
格式: command -options [argument]
command #表示Shell命令的名称。
-options #表示选项,同命令不同选项用以完成不同具体功能。
[argument] #Shell命令的参数,有些Shell可以不带参数运行。
二、Shell常用特殊符号
在Shell中经常使用一些特殊符号,有文件扩展符,或通配符。
常用符号 | 释义 |
---|---|
* | 通用符号/可以表任意一个字符(包括空字符)组成的字符串 |
? | 功能类似于“ * ”,但只能表示单个字符,不能表示由多个字符组成的字符串 |
[ ] | 指定范围/用来指定被显示内容的范围 |
! | 排除符号/用来指定被屏蔽显示内容的部分,需要与“[ ]”符号联合使用 |
; | 分隔符号/用于一行输入多个命令时,分隔各个命令 |
` | 命令替代符/这个符号总是成对出现,他们包含的内容在Shell中表示一条命令,并且会被执行 |
# | 注释符号/以“ # ”开头的一行被当做注释处理 |
三、深入Shell体验
1.自动命令补全
繁杂的命令难于完全被用户记忆,为方便用户操作,Shell提供自动补全功能。
用户在使用命令或者输入文件名是不需要输入完整信息,按Tab键 系统会自动补全最符合的名称;
如有多个符合,系统将发出警报,再按Tab键 则会显示所有与之匹配的命令或者文件名。
2.自动输入历史命令
为了提高效率,Linux将当前用户输入的历史命令将自动地保存在某一个文件中,保存的命令数目是由环境变量HISTSIZE决定的。
用户可以利用方向键中的上、下键选择曾经输入的历史命令;
也可以输入 history 命令查看所有保存在临时文件中的历史命令。
3.Shell命令别名机制
由于目前计算机系统主要由Windows和Linux占统治地位,许多用户也对Windows和DOS系统命令熟悉,而对于计算机系统而言,很多工作原理是相同的或者相近的,因而Linux提供Shell命令的别名。通过该功能将原有Linux命令取Windows命令相同的别名。
>命令:alias
>示例:alias mynet=ifconfig //将ifconfig命令 取别名 mynet
4.重定向
输出重定向符号有“>”和“>>”;而输入重定向符为“<”。
“>”将输入的信息直接写入目标文件或设备中,并覆盖掉之前的内容;
“>>”将输入的信息以追加的方式写入,即写在目标文件或设备的现有内容之后,不会对现有内容产生影响。
使用重定向输出时,如果目标文件不存在,系统会自动创建。重定向输入的内容不通过键盘,而是来自于某一个文件或者设备。
>示例:ls -l > test //将“ls -l”命令的结果输出到当前目录下的文件 test 中,如果 test 文件不存在,将创建
5.管道
Linux中管道是一种使用频繁的通信机制。管道是一种特殊的文件,可以进行读和写的操作,因此它可以搭建起两个文件之间的通信的桥梁。
Shell的使用中,管道用符号“|”表示,其应用十分广泛,可以将多个简单的命令集合在一起,用以运行复杂的功能。
>示例:ls -l | grep test //管道连接两个命令,将“ls -l”的输出作为“grep”命令的输入,该操作目的是查看当前目录下文件名为 test 的文件的详细信息