首页 > 代码库 > Shell命令机制
Shell命令机制
上篇文章只要是讲了Linux一些基本概述。
我们这次开始打好命令行操作的基础,以后再靠一些图形化的操作来提升我们的工作效率。
既然要学习Linux操作系统,我们就要去学习它的命令,总所周知,Linux的图形界面是不稳定的,它的图形界面只不过是一个应用程序,所以很容易奔溃。所以我们应该学习图形下面的一些机制,包括用命令行去实现一些东西,用shell去实现一些东西,包括去理解它的内部机制。
当然这些命令去死记硬背是不行的。
启动虚拟机,启动Ubuntu。
图形界面 切换到 命令行 是按 ctrl+alter+ F2 或 F3 或 F4
命令行 切换回 图形界面 ctrl+alter+ F7
1、第一个命令:ls
列出文件下的所有文件,ls其实就是list的一个缩写
现在我们来分析一下这个命令是怎么实现的,实现机制是什么样的?
从字面理解,shell是贝壳/外壳的意思。
比方说 A--》这个是操作系统的内核kernel,在kernel之上呢我们就会有用户接口的定义,然后再往上我们有一个外壳把它包裹起来,这个外壳里有很多命令工具,我们通过这些命令工具和编写我们自己的Shell脚本命令,有点类似于Windows下面的批处理,通过这些来实现对下面的访问。
所以ls的实现过程是这样的:
(1)输入了ls
(2)ls->去相应的目录去找shell命令程序,那这个shell去哪里找呢,当然是在path里找,那么这个path在哪里设置呢?环境变量。
(3)找到了之后就要执行,执行是基于Shell的一些基本库,比如说在Ubuntu里面我们的Shell采用的是Bash
(4)最后就是访问kernel内核
现在我们来看一下这个path是在哪里配置的,这样我们才能知道ls命令在哪里。
我们看path之前呢,先看一个新的命令
whereis ls
打印出来ls: /bin/ls /usr/share/man/man1/ls.1.gz
我们来查找一下/bin/ls这个目录
ls /bin/ls
打印出来 /bin/ls 显示是绿色,说明它是个可执行文件
那下面我们看一下环境变量是否真的指向 /bin/ls ,那么环境变量在哪呢?我们想象一下我们之前说的那个文件夹是做配置的,好像是etc这个文件夹对不对。
我们进入etc文件夹看一下
cd etc
那么环境变量是在 /etc/environment下,我们ls一下
ls /etc/environment
打印出来 /etc/environment , 我们得知是一个一般文件
我们用vi工具打开该文件
vi /etc/environment
我们可以看到确实有个PATH
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games"
也就是说ls执行的时候就会去这些文件下去找可执行文件
通过bash对ls进行解析
2、Linux是如何实现Shell的
(1)Bash
(2)Coreutils
要了解这两块我们不得不去说一下GNU,去查一下GNU的翻译
Bash和Coreutils是在GNU上开发的
GNU的官网: http://www.gun.org/
里面有对于GNU Bash的介绍
下载一下bash
我们可以通过bash -version查看当前bash版本
怎么办bash移植到我们的系统里面,不用命令怎么手动移植,可以查看帮助文档
一定要理解GUN与Linux的关系
Shell命令机制