Linux系统的shell命令--基础篇
1 概述
(1)shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序。用户可以用shell来启动、挂起、停止甚至是编写一些程序。
下面展示一个Linux系统的结构层级图,如图1所示,来描述Shell命令在Linux系统中的作用:
图1 Linux系统的结构层级图
在Linux系统中,硬件属于最底层,Linux系统通过内核来管理硬件。内核只能识别01序列的机器编码。而外层的应用程序,或者用户书写的命令,都是字符形式的,即ASCII编码形式,这些内核是不能识别的。
这个时候就需要介于中间级的shell命令解释来将外层的应用程序或者用户输入的命令解析成内核能够识别的机器码,然后再将内核执行命令的结果翻译成ASCII编码形式反馈给用户。
在Linux系统中,我们用来输入命令的终端其实就是shell,一个提供用户与机器内核进行沟通的交互界面。
(2)shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。也就是说,shell不仅是一个交互界面,而且还允许用户使用shell进行编程。
(3)shell是解释执行的脚本语言。解释执行的意思就是不需要事先单独进行编译,而是在命令的执行过程中自动地进行编译。即所见即所得,写完的脚本,一经回车提交即可展示执行结果。
(4)在shell中可以直接调用Linux系统命令。shell之所以能够非常方便地帮助用户来进行系统管理,最主要的原因就是可以直接调用Linux系统命令。
2 shell的分类
(1)Bourne Shell:从1979年起Unix就开始使用BourneShell,是最古老、最主流的shell。Bourne Shell的主文件名为sh。
(2)C Shell:C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。
(3)shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。其中,Bourne家族主要包括:sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh
(4)Bash:Linux的标准shell,现在使用的Linux就是使用Bash作为用户的基本shell。与sh兼容,属于Bourne家族。结构和Bourneshell非常类似,而且语法完全兼容。
3 Linux支持的shell
Linux系统中的etc目录下有一个shells文件,里面列举了当前Linux系统支持的shell。
输入命令行:
[root@localhost ~]#vi /etc/shells
可查看该文件的具体内容如图2所示:
图2 查看当前Linux系统支持的shell
在图2中显示的当前Linux支持的shell之间是可以进行随意切换的。如图3所示:
图3 当前Linux系统支持的shell的切换
另外,可以看到,在当前Linux系统支持的所有shell中还有一行显示信息“/sbin/nologin”。关于这一行显示信息的作用我们可以通过查看etc目录的下的passwd配置文件来具体的了解一下。
输入命令行:
[root@localhost ~]#vim /etc/passwd
如图4所示,可以看到有很多的用户信息的第7位都是“/sbin/nologin”:
图4 passwd配置文件内容
在passwd文件中,用户信息的第7位显示信息可分为三类:“/bin/bash”、“/sbin/nologin”和具体的命令。其中:
(1)/bin/bash:表示用户登录之后使用的权限。
能够登录的用户使用的就是标准shell,即Bash。也就是说该用户登录完成之后,可以完成他权限之内的所有的工作。
如果是管理员,就可以执行管理员的工作,是普通用户,就可以执行普通用户所拥有的权限范围之内的所有工作。
(2)/sbin/nologin:表示不能进行登录操作的系统用户(伪用户)。
(3)具体的命令。
在passwd文件中,还有一些伪用户后面是具体的命令,如“/bin/sync”、“/sbin/shutdown”和“/sbin/halt”。表示该系统用户只能执行的命令。例如:系统用户shutdown的第7位显示的是“/sbin/shutdown”,就表示该用户唯一能执行的操作就是执行shutdown命令。