[toc]

1.1 Linux 简介

1.1.1 操作系统的概念

操作系统是管理和控制计算机硬件资源的计算机程序。

2022-04-18-23-34-55.png

核心功能:

  • syscall 接口
  • 程序管理
  • 内存管理
  • 文件系统管理
  • 驱动管理

1.1.2 常见的操作系统

  • DOS
  • Windows
  • Unix
  • Linux
  • Mac OS
  • Android
  • IOS

1.1.3 什么是 Linux

Linux 是一套免费使用和自由传播的类 Unix 操作系统。
Linux 可以管理计算机所有硬件资源,进行 CPU 调度,分配工作桌面。

2022-04-18-23-40-34.png

1.1.4 Linux 的结构

  • 应用程序
  • shell 程序(Bash)
  • Linux 内核 kernel
  • 硬件系

2022-04-18-23-44-33.png

常见的 shell:

  • Bourne shell(sh)
  • C shell(csh) & korn shell(ksh)
  • Bash shell(/bin/bash)

shell 常用快捷键

2022-04-19-22-12-11.png

shell 常用通配符

2022-04-19-22-12-32.png

man 命令(Manual pages)

1
man <command_name>

2022-04-19-22-14-22.png

1.1.5 Linux 的特点

  • 多任务,多用户
  • 功能强大的开发者交互界面
  • 安全保护机制,稳定性好
  • 用户界面,强大的网络支持
  • 移植性好

1.2 Linux 常用远程接入工具介绍

  • SSH 客户端:Xshell
  • SFTP 客户端:Xftp

1.3 Linux 目录结构

2022-04-18-23-51-37.png

2. Linux 用户管理

2.1 Linux 的用户和群组

2.1.1 用户标志符:UID 与 GID

  • Linux 系统是通过 ID 来区分用户的,ID 分为 User ID 和 Group ID,用户名或者组名是指方便人们的记忆。
  • 用户 ID 保存路径: /etc/passwd
  • 组 ID 保存路径: /etc/group

2.1.2 /etc/passwd 文件结构

  • passwd 文件中记录的是单个用户的登录信息。
  • 每一行代表一个用户,用冒号“:”分隔成七个字段,记录用户的 7 项信息。

2022-04-19-15-30-42.png

2022-04-19-15-24-15.png

2.1.3 /etc/shadow 文件结构

  • 用户密码信息存储在/etc/shadow 文件中,文件中每一行表示一个系统用户的密码记录,用冒号“:”分隔成八项,支持密码过期设定等功能。

2022-04-19-15-32-31.png

2022-04-19-15-25-26.png

2.1.4 /etc/group 文件结构

  • /etc/group 文件记录了 GID 和组名的对应关系,以及群组中的包含的用户。

2022-04-19-15-30-04.png

字段含义:

  1. 组名
  2. 组的密码
  3. 群组的 ID
  4. 群组包含的用户

2.2 群组管理

2.2.1 新增群组

2022-04-19-15-37-43.png

2.2.2 修改群组

2022-04-19-15-39-08.png

2.2.3 删除群组

2022-04-19-15-40-04.png

2.3 用户管理

2.3.1 新增用户

2022-04-19-15-43-00.png

2.3.2 设置和修改用户密码

2022-04-19-15-44-51.png

2.3.3 修改用户属性

2022-04-19-15-46-42.png

2.3.4 删除用户

2022-04-19-15-47-17.png

2.3.5 用户查询相关命令

  • who: 查询当前登录系统的所有用户
  • id: 查询当前用户的 GID, UID
  • finger: 查询用户的属性信息

2.3.6 切换用户

改变用户 ID

2022-04-19-15-50-47.png

3. Linux 文件和目录管理

3.1 目录和路径

2022-04-20-14-29-24.png

3.1.1 绝对路径和相对路径

  • 绝对路径:由根目录(/)开始写起的文件名或者目录名称,如/home/smc /bin/smsc
  • 相对路径:相当于当前路径的文件名或者目录名称写法。如 …/…/mtserver
    • .表示当前目录, ..表示上一级目录

3.1.2 显示当前工作目录

pwd:本命令用于显示当前的工作目录

3.1.3 更改工作目录

cd [目录]:本命令用于改变当前的工作目录,无参数时使用环境变量$HOME作为其参数,$HOME一般为登录时进入的路径。其中路径包括绝对路径和相对路径。

3.2 Linux 文件和目录权限管理

3.2.1 文件的权限意义

  • 文件的权限意义
    • r(read): 可读取此文件的实际内容
    • w(write): 可以编辑此文件内容(不含删除该文件)
    • x(execute): 该文件具有被系统执行的权限
  • 目录的权限意义
    • r(read): 具有读取目录结构列表的权限
    • w(write): 具有修改目录结构列表的权限
    • x(execute): 具有进入该目录的权限

3.2.2.1 查看文件或目录

ls -[option] [目录或者文件...]
常用命令选项(可混合使用):

  • -l:以长格式列出目录下的文件
  • -a:以短格式列出目录下的所有文件(包含隐含文件
  • ll = ls -al

ls -asSh: 显示所有文件大小,其中小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,可以使用 man ls 命令查询。

3.2.2.2 文件属性和权限说明

  • 文件是 Linux 操作系统中组织信息的基本单元。

2022-04-19-16-07-41.png

2022-04-19-16-07-48.png

3.3.1 修改属主

2022-04-19-16-10-38.png

3.3.2 修改所属群组

2022-04-19-16-11-49.png

3.3.3 修改权限

2022-04-19-16-12-35.png

3.3 文件和目录基本操作

3.3.1 新建文件和目录

2022-04-19-16-14-08.png

2022-04-19-16-14-41.png

3.3.2 复制文件或目录

本地主机复制文件或目录,要求对其父目录有写权限:

2022-04-19-16-15-59.png

网络互通的远程主机复制文件或目录:

2022-04-19-16-17-37.png

3.3.3 移动文件或目录

2022-04-19-16-19-02.png

3.3.4 删除文件或目录

删除空目录:

2022-04-19-16-19-38.png

删除文件或目录:

2022-04-19-16-23-32.png

4. Linux 下的软件安装

通常 Linux 上的软件安装主要有四种方式:

  • 在线安装
  • 从磁盘安装 deb 软件包
  • 从二进制软件包安装
  • 从源代码编译安装

这几种安装方式各有优劣,而大多数软件包会采用多种方式发布软件,所以我们常常需要全部掌握这几种软件安装方式,以便适应各种环境。下面将介绍前三种安装方式,从源码编译安装你将在 Linux 程序设计中学习到。

4.1 apt 包管理工具介绍

APT 是 Advance Packaging Tool(高级包装工具)的缩写,是 Debian 及其派生发行版的软件包管理器,APT 可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了 Unix 系统上管理软件的过程。APT 最早被设计成 dpkg 的前端,用来处理 deb 格式的软件包。现在经过 APT-RPM 组织修改,APT 已经可以安装在支持 RPM 的系统管理 RPM 包。这个包管理器包含以 apt- 开头的多个工具,如 apt-get apt-cache apt-cdrom 等,在 Debian 系列的发行版中使用。

当你在执行安装操作时,首先 apt-get 工具会在本地的一个数据库中搜索关于 w3m 软件的相关信息,并根据这些信息在相关的服务器上下载软件安装,这里大家可能会一个疑问:既然是在线安装软件,为啥会在本地的数据库中搜索?要解释这个问题就得提到几个名词了:

  • 软件源镜像服务器
  • 软件源

我们需要定期从服务器上下载一个软件包列表,使用 sudo apt-get update 命令来保持本地的软件包列表是最新的(有时你也需要手动执行这个操作,比如更换了软件源),而这个表里会有软件依赖信息的记录,对于软件依赖,我举个例子:我们安装 w3m 软件的时候,而这个软件需要 libgc1c2 这个软件包才能正常工作,这个时候 apt-get 在安装软件的时候会一并替我们安装了,以保证 w3m 能正常的工作。

4.2 apt-get

apt-get 是用于处理 apt 包的公用程序集,我们可以用它来在线安装、卸载和升级软件包等,下面列出一些 apt-get 包含的常用的一些工具:

工具 说明
install 其后加上软件包名,用于安装一个软件包
update 从软件源镜像服务器上下载/更新用于更新本地软件源的软件包列表`
upgrade 升级本地可更新的全部软件包,但存在依赖问题时将不会升级,通常会在更新之前执行一次 update
dist-upgrade 解决依赖关系并升级(存在一定危险性)
remove 移除已安装的软件包,包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件
autoremove 移除之前被其他软件包依赖,但现在不再被使用的软件包
purge remove 相同,但会完全移除软件包,包含其配置文件
clean 移除下载到本地的已经安装的软件包,默认保存在 /var/cache/apt/archives/
autoclean 移除已安装的软件的旧版本软件包

下面是一些apt-get常用的参数:

参数 说明
-y 自动回应是否安装软件包的选项,在一些自动化安装脚本中使用这个参数将十分有用
-s 模拟安装
-q 静默安装方式,指定多个 q 或者 -q=## 表示数字,用于设定静默级别,这在你不想要在安装软件包时屏幕输出过多时很有用
-f 修复损坏的依赖关系
-d 只下载不安装
--reinstall 重新安装已经安装但可能存在问题的软件包
--install-suggests 同时安装 APT 给出的建议安装的软件包

4.4 软件升级

1
2
3
4
5
6
7
8
# 更新软件源
sudo apt-get update

# 升级没有依赖问题的软件包
sudo apt-get upgrade

# 升级并解决依赖关系
sudo apt-get dist-upgrade

4.5 卸载软件

1
2
3
4
5
6
# 不保留配置文件的移除
sudo apt-get purge [package]
# 或者
sudo apt-get --purge remove [package]
# 移除不再需要的被依赖的软件包
sudo apt-get autoremove

4.6 使用 dpkg

dpkg 是 Debian 软件包管理器的基础,它被伊恩·默多克创建于 1993 年。dpkgRPM 十分相似,同样被用于安装、卸载和供给和 .deb 软件包相关的信息。

dpkg 本身是一个底层的工具。上层的工具,像是 APT,被用于从远程获取软件包以及处理复杂的软件包关系。"dpkg"是"Debian Package"的简写。

我们经常可以在网络上见到以deb形式打包的软件包,就需要使用dpkg命令来安装。

dpkg常用参数介绍:

参数 说明
-i 安装指定 deb 包
-R 后面加上目录名,用于安装该目录下的所有 deb 安装包
-r remove,移除某个已安装的软件包
-I 显示 deb 包文件的信息
-s 显示已安装软件的信息
-S 搜索已安装的软件包
-L 显示已安装软件包的目录信息

4.7 从二进制包安装

二进制包的安装比较简单,我们需要做的只是将从网络上下载的二进制包解压后放到合适的目录,然后将包含可执行的主程序文件的目录添加进 PATH 环境变量即可。