Linux中shell和终端
使用Shell
如果您曾经登录过Linux系统或打开了终端会话,那么您已经在使用Linux shell了。登录后,系统会提示您。该提示将类似于以下提示。某些提示将显示您登录的服务器的主机名,以及您当前的位置(通常是您的主目录)。其他人只是在下面的会话中显示您的用户名和主机名:
Linux上的大多数默认Shell都使用Bash Shell(Bourne Again Shell)。快速检查您是否正在使用Bash shell的方法是简单地使用命令echo $ SHELL
,如上例所示。如果响应返回/bin/bash,则说明您正在运行bash shell。
john@john-desktop:~$ john@john-desktop:~$ echo $SHELL /bin/bash
什么是shell
简单来说,shell是一个程序,可以从键盘获取命令并将其传递给操作系统进行处理。
基本上,shell是计算机或服务器的接口。如前所述,Bash代表Bourne Again Shell,它是Stephen Bourne创建的Bourne Shell程序 sh的增强版本。多年来,已经创建了许多shell,使用的其他一些主要shell是在加利福尼亚大学伯克利分校创建的 C Shell。之所以使用名称 C,是因为该shell基于 C编程语言。当今,在许多 Unix系统上广泛使用的另一个流行的shell是David Korn的 Korn Shell。
Linux上最常见的shell是 bash shell,但是,已经创建和修改了许多其他shell。在Ubuntu 14.04 LTS系统上,可以使用的shell程序:
john@john-desktop:~$ cat /etc/shells # /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash
shell如何工作?
通常,shell程序是由用户通过终端或控制台会话交互式调用的。但是,shell最重要的方面之一是它能够处理包含命令或指令的文件。这些文件称为脚本( shell脚本)。Shell执行的基本步骤是:
读取命令或文件
验证命令的语法
运行命令将结果输出到屏幕或其他设备/位置
重复过程
尽管简化了上述过程,但是shell程序通常处理更复杂的指令。这些可能包括用于编程语言,循环,变量,逻辑条件处理的指令。在本 Linux基础知识指南中,我们选择的shell将是 Bash。
什么是命令?
命令基本上是一系列字符,当您按 Enter键时,这些命令将被执行。您输入的信息由shell处理。显然,命令必须遵循严格的语法,shell才能正确解释这些指令。Shell的第一个任务是将输入的指令分为单词。这些通常以空格分隔。通常,该行上的第一个单词是命令单词。接下来通常是解释所需参数的参数。
通常,参数以短横线 -开头。这些是您可能需要的选项。通过指定这些参数,我们可以从命令中选择某些功能或忽略某些功能。例如:
ls ls -l ls -lh ls -rtl ls -rtlh ls -rtlha
在上面的示例中,我们使用了基本列表命令 ls。
本身没有参数,它将列出当前目录中的所有文件。
但是,如果我们将其他参数传递给命令,则可以更改将结果报告给我们的方式。
可以将多个参数添加在一起。因此,最后一个示例 ls -rtlha将在当前目录中列出相同的文件,但是,它们将以冗长的列表,相反的时间顺序显示,并设置了便于人们阅读的选项,并且将显示任何隐藏的文件(文件名以点 .开头的文件)。
内部和外部Shell命令
Shell使用的两种主要命令类型是 Internal内部的 和 External外部的。
内部:这些是直接内置在shell中的命令,可以非常快速地执行。Shell中内置了许多命令。
外部的:这些不是内置在shell中的命令。这些命令(程序)通常位于各个目录中。这些可以是您自己创建的系统命令或程序。Shell能够从命令行或从脚本内调用这些程序。
内部命令还是外部命令?
确定命令是归类为Shell内部还是外部程序是非常容易的。通常,可以在诸如 /usr/bin之类的目录中找到外部程序和命令。但是,有一个简单的命令可用于识别这些文件类型。即 type的命令:
john@john-desktop:~$ type pwd pwd is a shell builtin john@john-desktop:~$ type cat cat is /bin/cat john@john-desktop:~$ type cd cd is a shell builtin john@john-desktop:~$ type type type is a shell builtin
从上面的示例可以看到, cat命令位于目录 /bin中。这是一个外部命令。
如果您想查看所有的Bash内部命令,则可以使用 help | less命令。