linux shell是什么意思?shell是一个用户接口。基于文本的shell也可用作命令行解释器。在Linux中,shell是一个解释程序,它允许我们用各种命令与Linux进行交互。只要有合适的文件权限,我们就可以在脚本文件中设置命令,需要时甚至可以在深更半夜时执行这些脚本文件。
Linux shell可以按各种顺序处理命令,这取决于我们如何管理每个命令的输入和输出。每个shell对命令所做的解释一定程度上取决于它所使用的变量和参数。
Linux中默认的shell是bash,也称为Bourne-Again shell,但是也存在很多其他的shell,而且它们也有很多用户。只要能安装相应的RPM程序包,用户就可以启动任何一个shell。需要时可以在/etc/passwd文件中改变每个用户的默认shell。
1、其他shell
RHEL 7中有4种命令行shell,用户可以选择其中任何一种。虽然bash是默认的shell,但是长期使用Linux和Unix的用户可能喜欢其他shell:
● bash 默认的Bourne-Again shell,它以Stephen Bourne最早开发的命令行解释程序为基础。
● ksh 即Korn shell,由贝尔实验室的David Korn在20世纪80年代开发,结合了Bourne和C shell的最佳功能。
● tcsh Unix C shell的增强版。
● zsh 一个高级shell,类似于Korn shell。
这些shell都在/bin目录中配置。如果用户想把其中一个作为默认的shell,则并非难事。最直接的方法是在/etc/passwd文件中修改默认shell。例如,此文件中应用于一位作者的一个普通账户的一行内容是:
例如,要把默认的shell改为ksh,只需要把/bin/bash改为/bin/ksh。另外还需要为Korn shell安装对应的RPM程序包。
考试提示
尽管对大多数Linux用户来说很容易,但是RHCSA一个认证目标的一部分是“访问shell提示符”。现在你应该知道如何访问不同的shell提示符窗口。
2、虚拟终端
如果能访问RHEL系统的控制台,就可以使用6个虚拟终端来打开6个独立的登录会话。但是,默认情况下只激活一个虚拟终端。当切换到未使用的终端时,其他登录提示符会动态启动。虚拟终端由/etc/systemd目录中的logind.conf文件定义。
观察该文件,可看到一个名为NAutoVTs的选项,它定义了可被激活的最大虚拟终端数。虚拟终端与设备文件/dev/tty1通过/dev/tty6关联。当系统配置了一个GUI,则它使用/dev/tty1。我们可以配置更多的虚拟终端,但是受/etc/securetty文件中为root管理员用户分配的虚拟终端数量的限制。
通常情况下,为在虚拟终端之间切换,要按下Alt和对应终端关联的功能键。例如,Alt+F2键可以切换到第二个控制台。但在RHEL GUI中,Alt+Fn键组合用来提供其他功能,例如Alt+F2可启动Run Application工具。因此,在GUI中需要按Ctrl+Alt+Fn才可以切换到第n个虚拟控制台。
登录文本控制台时会看到如下提示信息,但是具体内容可能会因RHEL的版本、内核的版本号以及系统的主机名而稍有差异:
用图形模式登录时会更加直观,如图1所示,但需要安装GNOME显示管理程序(GNOME Display Manager,GDM)。
图1 第一个UI登录控制台
3、GUI shell接口
登录到GUI后,访问bash shell就很容易。如果我们使用默认的GNOME桌面环境,则单击Applications | Utilities | Terminal。
传统上,管理员总是从控制台控制计算机的。但在许多情况下从GUI环境访问命令行控制台可能会更加方便,特别当多个控制台并排出现在屏幕上时。
右击GUI终端界面可以在不同的窗口或者选项卡中打开另外的终端窗口。需要时它还支持终端窗口之间的复制与粘贴。
4、普通用户与管理员用户的区别
在命令行窗口中可以执行的命令取决于登录账户所拥有的权限。现在有两个基本的提示符。下面是普通用户登录后看到的提示符:
注意,屏幕上出现了用户名、本地系统的主机名、当前目录和$提示符。$是普通用户的标准提示符。
与此相反,在同一个系统上来看看root管理员用户的提示符。它与普通用户的提示信息相似,除账户名不同外,唯一的区别是提示符:
root管理员账户执行命令的显示结果如下:
5、文本流与命令重定向
Linux使用三个基本数据流。数据输入流、数据输出流和向另一个方向发送的错误。这些流分别被称为标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。通常情况下,输入来自键盘,而标准输出和标准错误则发送到屏幕。在下例中,当执行cat filename这个命令时,系统把文件的内容作为标准输出发送到屏幕(就像发送任何错误一样)。
也可以把这些流重定向到文件,或从文件重定向这些流。例如,有一个名为database的程序和一个包含大量数据的数据文件。用左重定向箭头(<)可以把此数据文件的内容发送到这个数据库程序。如下所示,这里的数据文件(datafile)被当作标准输入:
标准输入也可以来自某个命令的左侧。例如,当我们需要翻页浏览引导信息时,可用管道把dmesg和less两个命令组合在一起:
这里把dmesg命令的输出重定向为less的标准输入。后者对前者的输出内容进行翻页浏览,就像它是一个独立文件一样。标准输出重定向也一样容易。例如,下面的命令用右重定向符(>)把ls命令的标准输出发送到名为filelist的文件中。
还可以用双重定箭头命令(如ls>>filelist)在当前文件的末尾添加标准的输出流。如果想将某个程序的错误消息保存到一个文件中,则用下面的命令重定向此程序的错误流:
有时候会想要丢弃所有错误。通过将错误流重定向到特殊的设备文件/dev/null可实现此目的:
&>是另一个有用的重定向符,它将标准输出和错误发送到一个文件或设备。下面给出了一个示例:
考试提示>、 >>、 2> 和 | 等命令重定向符在RHCSA认证目标中属于“输入/输出重定向符”。