shell简介
概述
shell 既是一种命令语言,又是一种编程语言(shell脚本),其作为基于命令的语言,shell交互式的解释 和执行用户输入的命令;作为程序控制语言,shell中可以定义变量,传递参数,并提供了流程控制结构。
种类
shell的种类有很多 BSh, CSh, KSh, bash等
(可以通过命令“ ls/ bin/ *sh” 查看系统中安装的shell)
功能
Shell最重要的功能是命令解释,linux系统中所有可执行文件都可在shell执行。其中linux可执行那个文件可分为五类:
- linux命令:用来使系统执行某种操作的命令。存放在/bin和/sbin目录下
- 内置命令:存放在shell内部的命令的解释程序,可使用 “type 命令名”的方式查询其是否为内置命令。
- 实用程序:存放于/usr/bin, /usr/sbin, /local/bin等目录下的程序,如ls,which等。
- 用户程序:有用户编写的,经过编译可执行的程序。
- shell脚本:用shell编写的批处理文件。
解释过程如图:
shell应用技巧
输入/输出重定向
~~~~
Linux系统中将从终端输入数据称为标准输入,将打印数据到终端称为标准输出,并设置了3个标准文件,分别关联标准输入、标准输出以及标准错误输出信息,标准输入文件的编号为0,默认设备是键盘,标准输出文件的编号为1,默认设备是显示器;标准错误文件的编号为2 默认设备也是显示器。
~~~~
Shell默认从终端接收用户命令,并将命令执行过程中产生的错误与命令的执行结果打印到终端 但并非任何时候用户都希望使用默认设置,这种情况下,可使用重定向更改命令获取与信息输出的方向。
重定向 即使用用户指定的文件而非默认资源(键盘,显示器),来获取和接收文件。可分为三种
- 输入重定向
- 输出重定向
- 错误重定向
输入重定向
符号 “<”
格式: 命令<文件名
输出重定向
符号 “>”
格式: 命令>文件名
~~~~
使用>运算符时,输出的信息将以覆盖的方式打印到文件file中,若想保 留文件file中原有的内容,可使用运算符“>>”,该运算符将以追加的形式 将结果打印到file文件。
错误重定向
重定向标准错误信息使用运算符“>”和“>>”
格式 :命令2>文件名
说明:
①其中“2”代表标准错误文件的编号,实际上,输入重定向和输出重定向还可写为如下格式 :
命令0<文件名
命令1>文件名
只是当其文件编号0、1出现在重定向符号左侧时,可以被省略。
②可以使用运算符“&”通过文件编号引用文件,该运算符表示“等同于”,如“2>&1”则 示将标准错误重定向到标准输出中。
管道
在shell编程中,“|”被称为管道符号,用于连接两个命令,其格式如下:
命令1|命令2|…|命令n
管道可使前一个命令的输出作为后一个命令的输入,由此实现较为复杂的功能。
示例:Is - I/etc l grep init
命令连接符
shell提供了一些用于连接符号的符号,如“;”,"&&",“||”,用此可将多条shell命令进行连接,师这些指令顺序或根据指令执行结果,有选择的进行。
①使用“;”运算符间隔的命令,会按照先后次序依次执行。
②使用“&&”连接符连接的命令 ,其前后命令的执行遵循逻辑与关系,只有该连接符之前的命令执行成功后,它后面的命令才被执行。
③使用“||”连接符链接的命令,其前后命令的执行遵循逻辑或关系,只有该连接符之前的命令执行失败时,才会执行后面的命令。