1.Linux基础操作:主题2 Shell的基本概念

来源:互联网 发布:网络语言爸爸什么意思 编辑:程序博客网 时间:2024/03/29 03:23

1.什么是Shell

首先,我们来认识Shell。如右图所示,最中间的灰色圆形,是计算机系统的硬件资源,它的外面就是传说中的Kernel——操作系统的内核。

内核之外就是我们说的Shell和与之平级的程序和工具等等。

最外层,就是Linux中最直观的东西,用户应用程序。

上述所有的一切都由文件系统贯穿始终。所以,本质上来说,文件系统是操作系统存在的基石。

由上边的解释和结构图,我们得出以下两点:

1.      Shell处于可以和操作系统内核可以直接沟通的位置。

2.      操作系统提供给用户一个Shell执行的界面来接受用户的命令,并将命令送入操作系统内核中去执行,运行后把系统的响应反馈给用户。因此,从使用层面上说,Shell实际上是一个命令解释器。

2.Shell的种类

[densintian@rachel ~]$ more /etc/shells/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin[densintian@rachel ~]$ 

通过一个Linux命令,我们来查看一下Linux支持的Shell的种类。由于bash是GUN/Linux操作系统中默认使用的Shell。而且他的功能也相对比较强大。所以将在本次教程中着重讲述。

3.Shell命令的构成

3.1 提示符

[densintian@rachel ~]$ 

提示符的根本的作用是提示用户:“操作系统正在等待您输入指令”。在Unix/Linux系统下,最简单的提示符就是$或者#(具体是谁是由使用的Shell类型决定的),现在的Linux系统为了让用户更加方便的操作,自动的为用户在提示符上增加的一些基本信息。比如我们这里的”densintian@rachel“代表的就是:“您正在以densintian这个用户,才机器名为rachel的机器上操作。当前的工作目录是用户的根目录。(~表示当前用户的根目录)

3.2 Linux命令

提示符后面用户输入的就是命令部分,如下

more /etc/shells

Linux命令由词(Word)构成。比如刚才的例子中的命令由两个词构成”more”和”/etc/shells”,其中第一个词是命令本身,而后面的一系列词,是当前命令的参数。

/etc/shells 是要显示的文件。

more 命令的功能是逐页的显示文件的内容。

4. 工作目录

工作目录的概念在刚才讲解提示符的时候曾经提到过,就是当前执行命令所在的目录。在用户刚刚登陆Shell的时候,工作目录就是用户的根目录(每个用户都有一个通常在/home下)。用户可以通过cd命令,改变工作目录。


工作目录的作用是为了在Shell中有效的定位文件和命令。当我们执行一个程序,必须告诉操作系统要执行的程序在哪里?叫什么名字? 如果当前工作目录就是程序所在的目录的话,则不需要说明路径信息。或者只需要告诉计算机的,在当前目录(./)就好了。比如,在复制文件的过程中,执行cp命令。由于目前的工作目录就是被复制程序所在的目录,所以我们直接输入文件的名字和目标位置即可。

5. $PATH

刚才我们提到的cp, cd等Linux系统命令本身也是以程序文件的形式存放在操作系统中的。我们当然不可能在每一个目录下都放置一个所有这些程序的副本。所以,操作系统引入了PATH这个操作系统环境变量来解决这个问题。既然是环境变量,我们首先看这个变量的内容。

[densintian@rachel ~]$ echo $PATH/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/densintian/.local/bin:/home/densintian/bin[densintian@rachel ~]$ 

这个环境变量中,保存着一系列目录。当shell命令没有指定目录位置的时候,Linux将依次寻找这些目录,直到找到为止。如果都没有找到,会出现下面的错误信息。如果找到了,则会执行对应的文件。

这里会出现一个问题,当几个同名的程序,存在于PATH中的多个目录中的时候,我们需要知道到底是哪个程序,被执行了。这时候,我们通过which命令来帮我们。

[densintian@rachel bin]$ ll ~/bin   #虽然在/home/densintian/bin有一个more的程序文件,但是因为这个目录在$PATH中的最后一位。总用量 12-rwxrwxr-x. 1 densintian densintian 8502 2014/10/25 21:04:21 more[densintian@rachel bin]$ which more #但是,因为在前边的/bin目录下,已经有more程序了,这个more就会被执行。/bin/more[densintian@rachel bin]$ 

更多的环境变量信息我们将在专题介绍。

6. 输入和输出介绍

Shell的标准输入是键盘,标准输出是屏幕。有的时候,我们需要保存程序的输出结果。此时我们可以进行输出转向操作。

[densintian@rachel bin]$ ll  #正常执行一个命令,执行结果直接输出总用量 12-rwxrwxr-x. 1 densintian densintian 8502 2014/10/25 21:04:21 more[densintian@rachel bin]$ ll > ~/a.txt  #现在将这个命令的执行结果,通过“>”符号指向到~/a.txt文件[densintian@rachel bin]$ cat ~/a.txt   #我们看一下这个文件的内容,和ll是一样的。总用量 12-rwxrwxr-x. 1 densintian densintian 8502 2014/10/25 21:04:21 more[densintian@rachel bin]$ 




0 0
原创粉丝点击