* [常用操作以及概念](#常用操作以及概念)
* [求助](#求助)
* [关机](#关机)
* [查看进程](#查看进程)
* [查看端口](#查看端口)
* [PATH](#path)
* [运行等级](#运行等级)
* [sudo](#sudo)
* [GNU](#gnu)
* [包管理工具](#包管理工具)
* [常见发行版本](#常见发行版本)
* [分区](#分区)
* [磁盘的文件名](#磁盘的文件名)
* [分区表](#分区表)
* [1. MBR](#1-mbr)
* [2. GPT](#2-gpt)
* [开机检测程序](#开机检测程序)
* [1. BIOS](#1-bios)
* [2. UEFI](#2-uefi)
* [挂载](#挂载)
* [文件权限与目录配置](#文件权限与目录配置)
* [文件权限概念](#文件权限概念)
* [文件属性以及权限的修改](#文件属性以及权限的修改)
* [1. 修改文件所属群组](#1-修改文件所属群组)
* [2. 修改文件拥有者](#2-修改文件拥有者)
* [3. 修改权限](#3-修改权限)
* [目录的权限](#目录的权限)
* [文件默认权限](#文件默认权限)
* [目录配置](#目录配置)
* [文件与目录](#文件与目录)
* [文件时间](#文件时间)
* [文件与目录的基本操作](#文件与目录的基本操作)
* [1. ls](#1-ls)
* [2. cp](#2-cp)
* [3. rm](#3-rm)
* [4. mv](#4-mv)
* [获取文件内容](#获取文件内容)
* [1. cat](#1-cat)
* [2. tac](#2-tac)
* [3. more](#3-more)
* [4. less](#4-less)
* [5. head](#5-head)
* [6. tail](#6-tail)
* [7. od](#7-od)
* [8. touch](#8-touch)
* [指令与文件搜索](#指令与文件搜索)
* [1. which](#1-which)
* [2. whereis](#2-whereis)
* [3. locate](#3-locate)
* [4. find](#4-find)
* [4.1 与时间有关的选项](#41-与时间有关的选项)
* [4.2 与文件拥有者和所属群组有关的选项](#42-与文件拥有者和所属群组有关的选项)
* [4.3 与文件权限和名称有关的选项](#43-与文件权限和名称有关的选项)
* [磁盘与文件系统](#磁盘与文件系统)
* [文件系统的组成](#文件系统的组成)
* [inode](#inode)
* [目录的 inode 与 block](#目录的-inode-与-block)
* [实体链接与符号链接](#实体链接与符号链接)
* [1. 实体链接](#1-实体链接)
* [2. 符号链接](#2-符号链接)
* [压缩与打包](#压缩与打包)
* [压缩](#压缩)
* [1. gzip](#1-gzip)
* [2. bzip2](#2-bzip2)
* [3. xz](#3-xz)
* [打包](#打包)
* [Bash](#bash)
* [Bash 特性](#bash-特性)
* [变量操作](#变量操作)
* [指令搜索顺序](#指令搜索顺序)
* [数据流重定向](#数据流重定向)
* [管线指令](#管线指令)
* [1. 提取指令:cut](#1-提取指令cut)
* [2. 排序命令:sort、uniq](#2-排序命令sortuniq)
* [3. 双向输出重定向:tee](#3-双向输出重定向tee)
* [4. 字符转换指令:tr、col、expand、join、paste](#4-字符转换指令trcolexpandjoinpaste)
* [5. 分区指令:split](#5-分区指令split)
* [正规表示法与文件格式化处理](#正规表示法与文件格式化处理)
* [grep](#grep)
* [printf](#printf)
* [awk](#awk)
* [vim 三个模式](#vim-三个模式)
* [参考资料](#参考资料)
# 常用操作以及概念
## 求助
**1. --help**
指令的基本用法与选项介绍。
**2. man**
man 是 manual 的缩写,将指令的具体信息显示出来。
当执行 man date 时,有 DATE(1) 出现,其中的数字代表指令的类型,常用的数字及其类型如下:
| 代号 | 类型 |
| -- | -- |
| 1 | 用户在 shell 环境中可以操作的指令或者可执行文件 |
| 5 | 配置文件 |
| 8 | 系统管理员可以使用的管理指令 |
**3. info**
info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以进行跳转。
## 关机
**1. sync**
为了加快对磁盘上文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。
**2. shutdown**
```html
# /sbin/shutdown [-krhc] [时间] [警告讯息]
-k : 不会关机,只是发送警告讯息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown 指令内容
```
**3. 其它关机指令**
reboot、halt、poweroff。
## 查看进程
```html
ps aux | grep threadx
```
## 查看端口
```html
netstat -anp | grep 80
```
## PATH
可以在环境变量 PATH 中声明可执行文件的路径,路径之间用 : 分隔。
```html
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
```
## 运行等级
- 0:关机模式
- 1:单用户模式(可用于破解root密码)
- 2:无网络支持的多用户模式
- 3:有网络支持的多用户模式(文本模式,工作中最常用的模式)
- 4:保留,未使用
- 5:有网络支持的 X-windows 多用户模式(桌面)
- 6:重新引导系统,即重启
## sudo
使用 sudo 允许一般用户使用 root 可执行的命令,只有在 /etc/sudoers 配置文件中添加的用户才能使用该指令。
## GNU
GNU 计划,又译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议,包含了以下内容:
- 以任何目的运行此程序的自由;
- 再复制的自由;
- 改进此程序,并公开发布改进的自由。
## 包管理工具
RPM 和 DPKG 为最常见的两类软件包管理工具。RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。与 RPM 进行竞争的是基于 Debian 操作系统 (UBUNTU) 的 DEB 软件包管理工具- DPKG,全称为 Debian Package,功能方面与 RPM 相似。
YUM 基于 RPM 包管理工具,具有依赖管理功能,并具有软件升级的功能。
## 常见发行版本
Linux 发行版是 Linux 内核及各种应用软件的集成版本。
| 基于的包管理工具 | 商业发行版 | 社区发行版 |
| --- | --- | --- |
| DPKG | Ubuntu | Debian |
| RPM | Red Hat | Fedora / CentOS |
# 分区
## 磁盘的文件名
Linux 中每个硬件都被当做一个文件。
常见磁盘的文件名:
- SCSI/SATA/USB 磁盘:/dev/sd[a-p]
- IDE 磁盘:/dev/hd[a-d]
其中文件名后面的序号的确定与磁盘插入的顺序有关,而与磁盘所插入的插槽位置无关。
## 分区表
磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的 GPT 分区表。
### 1. MBR
MBR 中,第一个扇区最重要,里面有:主要开机记录(Master boot record, MBR)及分区表(partition table),其中 MBR 占 446 bytes,partition table 占 64 bytes。
分区表只有 64 bytes,最多只能存储 4 个分区,这 4 个分区为主分区(Primary)和扩展分区(Extended)。其中扩展分区只有一个,它将其它空间用来记录分区表,可以记录更多的分区,因此通过扩展分区可以分出更多区分,这些分区称为逻辑分区。
Linux 也把分区当成文件,分区文件的命名方式为:磁盘文件名+编号,例如 /dev/sda1。注意,逻辑分区的编号从 5 开始。
### 2. GPT
不同的磁盘有不同的扇区大小,例如 512 bytes 和最新磁盘的 4k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA)。
GPT 第 1 个区块记录了 MBR,紧接着是 33 个区块记录分区信息,并把最后的 33 个区块用于对分区信息进行备份。
GPT 没有扩展分区概念,都是主分区,最多可以分 128 个分区。