01 初识linux_shell

1.1 什么是linux

linux可以划分为以下四部分:

  • Linux内核

  • GNU工具

  • 图形化桌面环境

  • 应用软件

linux内核

Linux内核主要负责的功能:

  • 内存管理

  • 进程管理

  • 硬件设备管理

  • 文件系统管理

内存管理

内核通过硬盘上的存储空间来实现虚拟内存,这块空间称为交换空间。内存存储单元按组划分成很多块,称为页面。内核会记录那些内存页面正在使用中。并自动把一段时间未访问的内存页面复制到交换空间区域。

进程管理

内核创建的第一个进程(init进程)启动系统上的其他进程。一些Linux发行版用一个表来管理系统在开机时要自动启动的进程。如ubuntu在/etc/init.d目录中,存放着启动脚本。这些脚本通过/etc/rcX.d目录下的入口启动。(这些入口就是到/etc/init.d目录下脚本的符号链接,X是运行级别)

Linux有5个运行级别:

  • 1:单用户模式,只启动基本的系统进程及一个控制台终端进程。

  • 3:标准运行级别

  • 5:会启动图形化系统。

硬件设备管理

任何linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码,加入的两种方式:

  • 编译进内核。早起只能重新编译。

  • 模块化插入。允许将驱动代码插入到运行中的内核而无需重新编译。得益于内核模块的概念。

linux将硬件设备当做特殊的文件,称为设备文件,有三种:

  • 字符型设备文件:每次只能处理一个字符。如大多数调制解调器、终端等。

  • 块设备文件:每次能处理大块设备。如硬盘。

  • 网络设备文件:采用数据包发送和接收数据的设备。包括网卡和一个特殊的回环设备,这个回环设备允许linux使用常见的网络协议与自身通信。

文件系统管理

linux支持ext、nfs等文件系统。linux内核采用虚拟文件系统(virtual file system, VFS)作为和每个文件系统交互的接口。

GNU工具与shell

shell包含一组内建命令。除此之外也可以在命令行中输入程序名称来启动程序。所有linux发行版默认的shell都是bash shell。shell是GNU核心工具集的一部分。

图形化桌面环境

X Window图形用户接口,它并不是一个软件,而是一个协议(protocal)。至于GNOME、KDE和X-Window之间的关系,可以简单地认为GNOME和KDE是并列关系,它们都是基于X-Window的桌面环境,通过X-Window其才能运行。

系统目录

linux上安装的第一块硬盘称为根驱动器,跟驱动器包含虚拟目录的根目录。通常系统文件会存储在根驱动器中,而用户文件则存储在另一个驱动器中,如把home目录作为挂载点。

通用目录名及其用途:

目录

用途

/

虚拟目录的根目录。通常不会在这里存储文件

/bin

二进制目录,存放许多用户级的GNU工具

/sbin

系统二进制目录,存放许多GNU管理员级工具

/usr

用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里

/boot

启动目录,存放启动文件

/dev

设备目录,Linux在这里创建设备节点

/media

媒体目录,可移动媒体设备的常用挂载点

/mnt

挂载目录,另一个可移动媒体设备的常用挂载点

/etc

系统配置文件目录

/lib

库目录,存放系统和应用程序的库文件

/opt

可选目录,常用于存放第三方软件包和数据文件

/proc

进程目录,存放现有硬件及当前进程的相关信息

/run

运行目录,存放系统运作时的运行时数据

/srv

服务目录,存放本地服务的相关文件

/sys

系统目录,存放系统硬件信息的相关文件

/tmp

临时目录,可以在该目录中创建和删除临时工作文件

/var

可变目录,用以存放经常变化的文件,比如日志文件

以前是只有/mnt的,一般手动挂载的分区,都会挂在/mnt(一般需要手动建立好挂载点,再用命令挂载)。后来有了自动挂载功能,自动挂载的分区都被放到/media了,挂载点都是由系统自动建立和删除的。

1.2 名词解释和两种CLI

名词解释:

  • CLI:command line interface,命令行界面

  • 哑终端:利用通信电缆连接到Unix系统上的一台显示器和一个键盘。

  • tty:teletypewriter,电传打字机

进入CLI的两种方式:

  • 控制台终端:CLI outside the GUI。在图形界面中可以退出到控制台终端

  • 图形化终端:CLI in the GUI。有GNOME Terminal, Konsole Terminal, xterm等。

1.3 shell的启动和参考手册

shell的启动

shell本身是作为普通程序启动的,通常是在用户登录终端时启动。登录时启动的shell依赖于用户账户的配置。/etc/passwd文件中每一行都是一个用户的配置信息,字段间用冒号分隔,最后一个字段便是启动的shell程序。

bash手册

man命令用来访问存储在linux系统的上手册。全部手册按内容分为9个区域。

区域号

所涵盖的内容

1

可执行程序或shell命令

2

系统调用

3

库调用

4

特殊文件

5

文件格式与约定

6

游戏

7

概览、约定及杂项

8

超级用户和系统管理员命令

9

内核例程

一个命令可能会在多个区域都有对应的手册,如man 1 hostname就是访问区域1中的手册,man 7 hostname则是访问区域7中的手册。

手册不是唯一的参考资料。还有info和-help或--help可以查看信息,三者区别:

  • man:是linux的系统手册

  • info:可显示更完整的最新的GNU工具信息

  • help:本身不是独立的工具,而是作为命令的选项存在