1.Shell是什么?
Shell是一种命令行解释器,为用户和操作系统之间通信提供了一种接口;也就是说,shell能够解释用户输入到计算机的命令,然后发送给操作系统进行处理,并将结果输出到屏幕,所以shell是操作系统的最外层,与用户进行对话。事实上,shell不只是一种解释器,还是一种脚本语言,与高级编程语言(C/C++等)不同,脚本语言经过编写后不需要做任何编译就可以运行。过程如下图所示:
2.Shell类型?
Shell有两大类,1)图形化界面shell;2)命令行shell(command line inference, CLI),实际工作主要还是这种方式。
目前CentOS和RedHat发行版中默认安装了多种shell,通过使用如下命令,查看安装的shell版本。目前很多linux系统默认使用bash shell,平时接触的基本是bash shell.
cat /etc/shells
3.Bash shell工作模式
有两种工作模式:1)交互式模式,就是用户在命令行终端通过键盘输入命令,等待其执行完后再输入下一条命令;2)脚本模式,就是设计一个脚本文件,在里面输入需要执行的linux命令,然后由bash shell执行。
针对一些简单的任务使用第一种模式;如果要处理复杂任务或者让工作自动化处理就要使用脚本模式,脚本模式效率很高,可以让工作变得“自动化”。
4.Shell脚本
Shell脚本就是把命令或程序语句(条件、循环等)写到文件中,然后执行文件中的代码并返回结果,这个文件称为shell脚本。Shell编程可以将linux命令组成逻辑,shell编程中的命令有时与C语言一样。
4.1 如下创建一个简单的shell脚本。解释下这个脚本:1)linux中,shell脚本的文件名是“*.sh”结尾;2)一个shell脚本第一行是“#!”开头,这是脚本的开始标记,用于告诉系统执行这个脚本需要使用的解释器,后面的“/bin/bash”表示解释器的位置;3)第2行中,脚本以“#”开头用于注释,用于告诉其他人程序的含义,便于后期维护;
4.2 运行shell脚本。第一种,在脚本所在目录中直接bash这个脚本,使用这种方式运行脚本,该脚本中第一行可以不需要“#!/bin/bash”,因为直接bash一个文件就是指定了使用bash shell来解释这个脚本,如下图所示:
第二种方式,给该脚本加上可执行权限,然后使用“./”来执行,它表示运行当前目录下的shell脚本,如果采用这种方式而脚本没有可执行权限会出错。
第三中方式,希望该脚本能成为默认的系统命令,需要将该脚本的目录添加到系统$PATH变量
中,或者将该脚本复制到系统$PATH变量
的任何一个目录中,同时赋予可执行权限,下次运行的时候只需要直接输入该脚本名即可。
5.补充说明
Shebang(#!)是什么?
计算机程序中,Shebang指的是出现在文件的第一行前两个字符:”#!”,shebang的作用:指定哪个解释器来执行这个文件。linux系统中,程序会分析shebang后面的内容,作为解释器的命令,例如:
#!/bin/sh开头的文件,程序在执行的时候会调用/bin/sh,就是使用bash解释器执行;
以#!/usr/bin/python开头的文件,表示指定python解释器去执行;
以#!/usr/bin/env 解释器名称,可以在不同平台上正确找到解释器。
注意:
1)如果脚本没有指定shebang,脚本执行时,默认用当前shell去解释;
2)如果脚本中使用shebang指定了可执行的解释器,如#!/usr/bin/python,执行脚本时,文件名作为参数传递给解释器。