# 走进shell

# 1.什么是linux

同windows一样,linux是一种开源的计算机操作系统,主要包括四个部分,

  • Linux内核
  • GNU工具
  • 图形化桌面环境
  • 应用软件

# Linux内核

Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

内核主要负责以下四种功能:

  • 系统内存管理,内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际并不存在的内存)。
  • 软件程序管理,内核控制着Linux系统如何管理运行在系统上的所有进程。内核创建了第一个进程(称为init进程)来启动系统上所有其他进程。当内核启动时,它会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。Ubuntu Linux发行版则采用/etc/init.d目录,将开机时启动或停止某个应用的脚本放在这个目录下。
  • 硬件设备管理,任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。在Linux内核中有两种方法用于插入设备驱动代码,编译进内核的设备驱动代码和可插入内核的设备驱动模块。Linux为系统上的每个设备都创建一种称为节点的特殊文件。与设备的所有通信都通过设
    备节点完成。每个节点都有唯一的数值对供Linux内核标识它。
  • 文件系统管理,Linux内核支持通过不同类型的文件系统从硬盘中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。Linux内核采用虚拟文件系统(Virtual File System,VFS)作为和每个文件系统交互的接口。这为Linux内核同任何类型文件系统通信提供了一个标准接口。

# GNU工具

GNU组织(GNU是GNU’s Not Unix的缩写)开发了一套完整的Unix工具,但没有可以运行它们的内核系统。这些工具是在名为开源软件(open source software,OSS)的软件理念下开发的。将Linus的Linux内核和GNU操作系统工具整合起来,就产生了一款完整的、功能丰富的免费操作系统。

GNU项目的主旨在于为UNIX系统管理员设计出一套类似于Unix的环境,其中供Linux系统使用的这组核心工具被称为coreutils(core utilities)软件包,包括三部分,分别是处理文件/操作文本/管理进程的工具。

GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文
件以及运行在Linux系统上的进程的途径。 shell的核心是命令行提示符。命令行提示符是shell负责
交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。

在Linux系统上,通常有好几种Linux shell可用。不同的shell有不同的特性,有些更利于创建
脚本,有些则更利于管理进程。所有Linux发行版默认的shell都是bash shell。bash shell由GNU项目开发,被当作标准Unix shell——Bourne shell(以创建者的名字命名)的替代品。bash shell的名称就是针对Bourne shell的拼写所玩的一个文字游戏,称为Bourne again shell

# Linux 桌面环境

20世纪90年代初期,能用的只有一个简单的Linux操作系统文本界面。随着Microsoft Windows的普及,Linux图形化桌面环境也应运而生。

X Window软件是直接和PC上的显卡及显示器打交道的底层程序。它控制着Linux程序如何在电脑上显示出漂亮的窗口和图形。X.org是实现X Window的软件包,它提供了X Window系统的开源实现,支持当前市面上的很多新显卡。

核心的X Window软件仅可以产生图形化显示环境,对于运行独立应用这已经足够,但在日常PC使用中却并不是那么有用。它没有桌面环境供用户操作文件或是开启程序。此外,还需要一个建立在X Window系统软件之上的桌面环境,如KDE桌面/GNOME桌面/Unity桌面。KDE桌面允许你把应用程序图标和文件图标放置在桌面的特定位置上。

# 2.linux shell

在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI)。CLI只能接受文本输入,也只能显示出文本和基本的图形输出。

进入CLI的方法有多种。

一种是退出图形化桌面环境进入Linux控制台,具体方式在ubuntu下使用快捷键Ctrl + Alt + Fn(n=2,3,4,...)进入控制台,Ctrl + Alt + F1可以从控制台模式再切换回图形界面模式。

另一种是图形化终端,除了虚拟化终端控制台,还可以使用Linux图形化桌面环境中的终端仿真包。常用的仿真器有GNOME Terminal 仿真器/Konsole Terminal仿真器xterm 终端仿真器

CLI是执行shell命令的窗口,打开CLI是学习shell的第一步。通过上面的介绍可以知道shell是一系列linux内核可执行命令的集合。可以通过CLI执行,也可以保存成文件执行。