1
0

Linux:命令行操作

This commit is contained in:
周中平 2023-03-22 17:00:21 +08:00
parent 7949aa3bc2
commit 9d3593a07d
No known key found for this signature in database
GPG Key ID: B1DF9DD42D8E00DC
3 changed files with 313 additions and 448 deletions

View File

@ -0,0 +1,313 @@
---
title: Linux 的命令行操作
description: Linux 的命令行操作
keywords:
- Linux
- 命令行操作
tags:
- Linux
sidebar_position: 2
author: 7Wate
date: 2023-03-22
---
一台完整的计算机是由运算器、控制器、存储器、输入/输出等多种硬件设备共同组成的而能让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务,对系统的正常运行起着十分重要的作用。
Shell 就是终端程序的统称它充当了人与内核硬件之间的翻译官用户把一些命令“告诉”终端程序它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是 BashBourne-Again SHell解释器这个 Bash 解释器主要有以下4项优势
- 通过上下方向键来调取执行过的 Linux 命令;
- 命令或参数仅需输入前几位就可以用 Tab 键补全;
- 具有强大的批处理脚本;
- 具有实用的环境变量功能。
### 执行命令
```shell
命令名称 [命令参数] [命令对象]
```
可选择的、可加或可不加的、非必需的参数使用中括号引起来,而命令所要求的、必须有的参数或对象值,则不带中括号。
- **命令名称**:就是语法中的“动词”,表达的是想要做的事情,例如创建用户、查看文件、重启系统等操作。
- **命令参数**:用于对命令进行调整,让“修改”过的命令能更好地贴合工作需求,达到事半功倍的效果。
Linux命令参数的长格式与短格式示例
| 长格式 | man --help |
| ------ | ---------- |
| 短格式 | man -h |
- **命令对象**一般指要处理的文件、目录、用户等资源名称也就是命令执行后的“承受方”。例如创建一位叫小明的用户、查看一个叫工资表的文件、重启一个IP为192.168.10.10的系统等。
Linux系统中的**命令、参数、对象都是严格区分大小写**的
## 帮助文档
### man
使用 **man** 命令查看到的帮助内容信息
| 按键 | 作用 |
| --------- | ---------------------------------- |
| 空格键 | 向下翻一页 |
| PaGe down | 向下翻一页 |
| PaGe up | 向上翻一页 |
| home | 直接前往首页 |
| end | 直接前往尾页 |
| / | 从上至下搜索某个关键词,如“/linux” |
| ? | 从下至上搜索某个关键词,如“?linux” |
| n | 定位到下一个搜索到的关键词 |
| N | 定位到上一个搜索到的关键词 |
| q | 退出帮助文档 |
#### 示例
```shell
# 查看 man 的帮助文件
man man
# 查看 ssh 的帮助文件
man sh
```
## 快捷键
### Tab
实现对命令、参数或文件的内容补全。
| 按键 | 作用 |
| ------------- | ------------------ |
| Tab键 | 自动补全 |
| Tab键 + Tab键 | 匹配所有符合的命令 |
### Ctrl+c
终止当前进程的运行,控制权会立刻回到命令行终端。
### Ctrl+d
键盘输入结束。
### Ctrl+l
清空当前终端中已有的内容(清屏操作)。
### Ctrl+R
搜索之前使用过的命令。
### Ctrl+Z
挂起当前进程。
## 常用命令
### 文件操作
| 命令 | 全拼 | 说明 |
| ----- | ----------------------- | -------------------- |
| ls | list | 列出目录中的文件列表 |
| cd | change directory | 更改当前工作目录 |
| pwd | print working directory | 显示当前工作目录 |
| mkdir | make directory | 创建新目录 |
| rmdir | remove directory | 删除空目录 |
| touch | touch | 创建新文件 |
| cp | copy | 复制文件或目录 |
| mv | move | 移动文件或目录 |
| rm | remove | 删除文件或目录 |
### 文件处理
| 命令 | 全拼 | 说明 |
| ---- | ------------------------------- | ------------------------------------ |
| cat | concatenate | 查看、合并文件内容 |
| head | head | 查看文件头部内容 |
| tail | tail | 查看文件尾部内容 |
| grep | global regular expression print | 在文件中查找指定文本 |
| sed | stream editor | 流编辑器,用于对文件进行基本文本处理 |
| awk | awk | 文本和数据处理工具 |
### 系统管理
| 命令 | 全拼 | 说明 |
| -------- | -------------- | -------------------- |
| ps | process status | 查看进程状态 |
| top | top | 实时查看系统进程状态 |
| kill | kill | 终止进程 |
| shutdown | shutdown | 关闭系统 |
| reboot | reboot | 重启系统 |
| uname | uname | 显示系统信息 |
| df | disk free | 显示磁盘使用情况 |
| du | disk usage | 显示目录空间使用情况 |
| free | free | 显示系统内存使用情况 |
### 网络管理
| 命令 | 命令全拼 | 描述 |
| ---------- | ------------------ | ---------------------------------- |
| ip | internet protocol | 显示和配置网络接口信息 |
| ping | ping | 测试主机之间的连通性 |
| nslookup | name server lookup | 查询域名解析信息 |
| traceroute | trace route | 显示数据包到达目的地经过的路由信息 |
| route | route | 显示和配置系统的路由表 |
| netstat | network statistics | 显示网络连接状态和统计信息 |
| tcpdump | TCP dump | 抓取网络数据包并进行分析 |
### 权限管理
| 命令 | 命令全拼 | 描述 |
| -------- | ------------ | ------------------------ |
| chmod | change mode | 修改文件或目录的访问权限 |
| chown | change owner | 修改文件或目录的所有者 |
| chgrp | change group | 修改文件或目录的所属组 |
| useradd | user add | 添加用户账号 |
| usermod | user modify | 修改用户账号信息 |
| userdel | user delete | 删除用户账号 |
| groupadd | group add | 添加用户组 |
| groupmod | group modify | 修改用户组信息 |
| groupdel | group delete | 删除用户组 |
| passwd | password | 修改用户密码 |
| su | switch user | 切换用户身份 |
| sudo | superuser do | 以超级用户身份执行命令 |
| visudo | visual sudo | 编辑 sudo 配置文件 |
| id | identity | 显示当前用户信息 |
| whoami | who am i | 显示当前登录用户名 |
### 软件管理
| 命令 | 全拼 | 说明 |
| ------- | -------------------------- | ---------------------------------- |
| apt-get | Advanced Packaging Tool | Ubuntu系统软件包管理工具 |
| yum | Yellowdog Updater Modified | CentOS、Fedora等系统软件包管理工具 |
| dpkg | Debian Package | Debian、Ubuntu等系统软件包管理工具 |
| rpm | Red Hat Package Manager | CentOS、Fedora等系统软件包管理工具 |
### 磁盘管理
| 命令 | 全拼 | 描述 |
| ------ | ----------------- | ---------------------------- |
| df | disk filesystem | 显示磁盘空间使用情况 |
| du | disk usage | 显示文件和目录的磁盘使用情况 |
| fdisk | fixed disk | 磁盘分区管理工具 |
| fsck | file system check | 检查和修复文件系统 |
| mkfs | make filesystem | 创建文件系统 |
| mount | mount | 挂载文件系统到目录上 |
| umount | unmount | 卸载文件系统 |
### 进程管理
| 命令 | 命令全拼 | 描述 |
| ------- | ----------------------- | ------------------------ |
| ps | process status | 显示当前进程状态 |
| top | task-oriented processor | 动态显示进程信息 |
| kill | kill | 终止一个进程 |
| killall | killall | 终止一个指定名称的进程 |
| nice | nice | 改变进程优先级 |
| renice | renice | 改变正在运行进程的优先级 |
| jobs | jobs | 显示当前shell的活动作业 |
| bg | background | 将一个进程置于后台 |
| fg | foreground | 将一个进程置于前台 |
| nohup | no hang up | 在后台运行命令,并不挂起 |
| pstree | process tree | 显示进程树 |
## 重定向
输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。
- **标准输入重定向STDIN文件描述符为0**:默认从键盘输入,也可从其他文件或命令中输入。
- **标准输出重定向STDOUT文件描述符为1**:默认输出到屏幕。
- **错误输出重定向STDERR文件描述符为2**:默认输出到屏幕。
*对于重定向中的标准输出模式,可以省略文件描述符 1 不写,而错误输出模式的文件描述符 2 是必须要写的。*
### 输入重定向
符号及其作用
| 符号 | 作用 |
| -------------------- | -------------------------------------------- |
| 命令 < 文件 | 将文件作为命令的标准输入 |
| 命令 << 分界符 | 从标准输入中读入直到遇见分界符才停止 |
| 命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
### 输出重定向
| 符号 | 作用 |
| ---------------------------------- | ---------------------------------------------------------- |
| 命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
| 命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
| 命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
| 命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
| 命令 >> 文件 2>&1 或 命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面 |
## 管道
**管道命令符把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入**其执行格式为“命令A | 命令B”。按下键盘上的Shift+反斜杠(\)键即可输入管道符,
```shell
# 输出禁止登录用户行数
grep /sbin/nologin /etc/passwd | wc -l
# 搜索与 bash 有关的进程
ps aux | grep bash
```
命令符可以**无限组合**例如命令A | 命令B | 命令C |……
> 曾经有位东北的同学做了一个特别贴切的类比:把管道符当做流水线作业,这跟吃顿烧烤是同一个道理,即第一个人负责切肉,第二个人负责串肉,第三个人负责烧烤,最后的处理结果交付给用户。
## 通配符
| 通配符 | 含义 |
| ----------- | -------------- |
| * | 任意字符 |
| ? | 单个任意字符 |
| [a-z] | 单个小写字母 |
| [A-Z] | 单个大写字母 |
| [a-Z] | 单个字母 |
| [0-9] | 单个数字 |
| [[:alpha:]] | 任意字母 |
| [[:upper:]] | 任意大写字母 |
| [[:lower:]] | 任意小写字母 |
| [[:digit:]] | 所有数字 |
| [[:alnum:]] | 任意字母加数字 |
| [[:punct:]] | 标点符号 |
示例:
```shell
# 匹配 /dev 目录中且以 sda 开头的文件
ls -l /dev/sda*
```
## 转义字符
- **反斜杠(\**:使反斜杠后面的一个变量变为单纯的字符。
- **单引号(' '**:转义其中所有的变量为单纯的字符串。
- **双引号(" "**:保留其中的变量属性,不进行转义处理。
- **反引号(\` `**:把其中的命令执行后返回结果。
## 环境变量
**在Linux系统中变量名称一般都是大写的命令则都是小写的这是一种约定俗成的规范。**
Linux系统中最重要的 10 个环境变量
| 变量名称 | 作用 |
| ------------ | -------------------------------- |
| HOME | 用户的主目录(即家目录) |
| SHELL | 用户在使用的Shell解释器名称 |
| HISTSIZE | 输出的历史命令记录条数 |
| HISTFILESIZE | 保存的历史命令记录条数 |
| MAIL | 邮件保存路径 |
| LANG | 系统语言、语系名称 |
| RANDOM | 生成一个随机数字 |
| PS1 | Bash解释器的提示符 |
| PATH | 定义解释器搜索用户执行命令的路径 |
| EDITOR | 用户默认的文本编辑器 |

View File

@ -1,340 +0,0 @@
---
id: 常用命令
title: 常用命令
sidebar_position: 1
data: 2022年3月4日
---
## 简介
一台完整的计算机是由运算器、控制器、存储器、输入/输出等多种硬件设备共同组成的而能让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务,对系统的正常运行起着十分重要的作用。
Shell就是终端程序的统称它充当了人与内核硬件之间的翻译官用户把一些命令“告诉”终端程序它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是 BashBourne-Again SHell解释器这个 Bash 解释器主要有以下4项优势
- 通过上下方向键来调取执行过的 Linux 命令;
- 命令或参数仅需输入前几位就可以用 Tab 键补全;
- 具有强大的批处理脚本;
- 具有实用的环境变量功能。
### 执行命令
```shell
命令名称 [命令参数] [命令对象]
```
可选择的、可加或可不加的、非必需的参数使用中括号引起来,而命令所要求的、必须有的参数或对象值,则不带中括号。
- **命令名称**:就是语法中的“动词”,表达的是想要做的事情,例如创建用户、查看文件、重启系统等操作。
- **命令参数**:用于对命令进行调整,让“修改”过的命令能更好地贴合工作需求,达到事半功倍的效果。
Linux命令参数的长格式与短格式示例
| 长格式 | man --help |
| ------ | ---------- |
| 短格式 | man -h |
- **命令对象**一般指要处理的文件、目录、用户等资源名称也就是命令执行后的“承受方”。例如创建一位叫小明的用户、查看一个叫工资表的文件、重启一个IP为192.168.10.10的系统等。
Linux系统中的**命令、参数、对象都是严格区分大小写**的
## 帮助文档
### man
使用 **man** 命令查看到的帮助内容信息
| 按键 | 作用 |
| --------- | ---------------------------------- |
| 空格键 | 向下翻一页 |
| PaGe down | 向下翻一页 |
| PaGe up | 向上翻一页 |
| home | 直接前往首页 |
| end | 直接前往尾页 |
| / | 从上至下搜索某个关键词,如“/linux” |
| ? | 从下至上搜索某个关键词,如“?linux” |
| n | 定位到下一个搜索到的关键词 |
| N | 定位到上一个搜索到的关键词 |
| q | 退出帮助文档 |
#### 示例
```shell
# 查看 man 的帮助文件
man man
# 查看 ssh 的帮助文件
man sh
```
## 快捷键
### Tab
实现对命令、参数或文件的内容补全。
| 按键 | 作用 |
| ------------- | ------------------ |
| Tab键 | 自动补全 |
| Tab键 + Tab键 | 匹配所有符合的命令 |
### Ctrl+c
终止当前进程的运行,控制权会立刻回到命令行终端。
### Ctrl+d
键盘输入结束。
### Ctrl+l
清空当前终端中已有的内容(清屏操作)。
## 系统
### 内置命令
| 命令 | 功能 |
| ------- | ------------------------------------------------------ |
| alias | 设置别名。 |
| bc | 命令行科学计算器 |
| clear | 清除屏幕,简称清屏。 |
| date | 查看或设置系统时间。 |
| echo | 打印变量,或直接输出指定的字符串 |
| eject | 弹出光驱。 |
| exec | 调用并执行指令的命令。 |
| export | 设置或者显示环境变量。 |
| history | 查看命令执行的历史纪录。 |
| nc | 功能强大的网络工具。 |
| printf | 将结果格式化输出到标准输出。 |
| rpm | 管理 rpm 包的命令。 |
| time | 计算命令执行时间。 |
| type | 用于判断另外一个命令是否是内置命令。 |
| unalias | 取消系统别名。 |
| unset | 删除变量或函数。 |
| watch | 周期性的执行给定的命令,并将命令的输出以全屏方式显示。 |
| xargs | 将标准输入转换成命令行参数。 |
| yum | 自动化简单化地管理 rpm 包的命令。 |
### 系统信息
| 命令 | 功能 |
| -------- | -------------------------------- |
| cal | 查看日历等时间信息。 |
| date | 显示与设置系统时间。 |
| df | 报告文件系统磁盘空间的使用情况。 |
| dmesg | 显示开机信息,用于诊断系统故障。 |
| du | 计算磁盘空间使用情况。 |
| free | 查看系统内存。 |
| hostname | 显示或者设置当前系统的主机名。 |
| stat | 显示文件或文件系统的状态。 |
| top | 实时显示系统资源使用情况。 |
| uname | 显示操作系统相关信息的命令。 |
| uptime | 显示系统运行时间及负载。 |
### 用户信息
| 命令 | 功能 |
| ------- | ------------------------------------------------------ |
| finger | 查找并显示用户信息。 |
| last | 显示登入系统的用户。 |
| lastlog | 显示系统中所有用户最近一次登录信息。 |
| users | 显示当前登录系统的所有用户的用户列表。 |
| w | 显示已经登陆系统的用户列表,并显示用户正在执行的指令。 |
| who | 显示目前登录系统的用户信息。 |
| whoami | 显示当前有效的用户名称,相当于执行 id -un 命令。 |
### 权限处理
| 命令 | 功能 |
| ----- | ---------------------------- |
| chmod | 改变文件或目录权限。 |
| chown | 改变文件或目录的属主和属组。 |
| chgrp | 更改文件用户组。 |
| umask | 显示或设置权限掩码。 |
### 进程管理
| 命令 | 功能 |
| ----------- | ------------------------------------------------------------ |
| bg | 将一个在后台暂停的命令,变成继续执行 (在后台执行)。 |
| crontab | 定时任务命令。 |
| fg | 将后台中的命令调至前台继续运行。 |
| init | 切换运行级别。 |
| jobs | 查看当前有多少在后台运行的命令。 |
| kill | 终止进程。 |
| killall | 通过进程名终止进程。 |
| nice/renice | 调整程序运行的优先级。 |
| nohup | 忽略挂起信号运行指定的命令。 |
| pgrep | 查找匹配条件的进程。 |
| pkill | 通过进程名终止进程。 |
| ps | 显示进程的快照。 |
| pstree | 树形显示进程。 |
| runlevel | 查看系统当前运行级别。 |
| service | 启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。 |
### 系统管理
| 命令 | 功能 |
| --------- | ------------------------------------------------------------ |
| chkconfig | 管理 Linux 系统开机启动项。 |
| iostat | 统计系统 IO。 |
| ipcrm | 用来删除一个或更多的消息队列、信号量集或者共享内存标识。 |
| ipcs | 用于报告 Linux 中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。 |
| ltrace | 命令会跟踪进程的库函数调用, 它会显现出哪个库函数被调用。 |
| mpstat | 显示各个可用 CPU 的状态统计。 |
| sar | 全面地获取系统的 CPU、运行队列、磁盘 I/O、分页交换区、内存、 CPU 中断和网络等性能数据。 |
| strace | 用于诊断、调试 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 |
| vmstat | 虚拟内存统计。 |
### 系统操作
| 命令 | 功能 |
| -------- | ---------------------- |
| exit | 退出当前登录的 Shell。 |
| halt | 关机。 |
| logout | 退出当前登录的 Shell。 |
| poweroff | 关闭电源。 |
| shutdown | 关机。 |
## 用户管理
### 基础操作
| 命令 | 功能 |
| -------- | ------------------------------------------------------------ |
| chage | 修改用户密码有效期限。 |
| groupadd | 添加用户组。 |
| id | 查看用户的 uid,gid 及归属的用户组。 |
| passwd | 修改用户密码。 |
| su | 切换用户身份。 |
| sudo | 以另外一个用户身份(默认 root 用户)执行事先在 sudoers 文件允许的命令。 |
| useradd | 添加用户。 |
| userdel | 删除用户。 |
| usermod | 修改系统已经存在的用户属性。 |
| visudo | 编辑 / etc/sudoers 文件的专属命令。 |
## 网络管理
### 基础操作
| 命令 | 功能 |
| -------- | -------------------------------------------- |
| ifconfig | 查看、配置、启用或禁用网络接口的命令。 |
| ifdown | 关闭网卡。 |
| ifup | 启动网卡。 |
| netstat | 查看网络状态。 |
| ping | 测试主机之间网络的连通性。 |
| route | 显示和设置 linux 系统的路由表。 |
| scp | 全拼 secure copy用于不同主机之间复制文件。 |
| ss | 查看网络状态。 |
| ssh | 使用 SSH 加密协议远程登录。 |
| telnet | 使用 TELNET 协议远程登录。 |
| wget | 命令行下载文件。 |
### 进阶操作
| 命令 | 功能 |
| ---------- | -------------------------------------------------------- |
| dig | 查找 DNS 解析过程。 |
| host | 查询 DNS 的命令。 |
| lsof | 全名 list open files也就是列举系统中已经被打开的文件。 |
| mail | 发送和接收邮件。 |
| mutt | 邮件管理命令。 |
| nmap | 网络扫描命令。 |
| nslookup | 交互式查询互联网 DNS 服务器的命令。 |
| tcpdump | 命令行的抓包工具。 |
| traceroute | 追踪数据传输路由状况。 |
## 磁盘管理
### 基础操作
| 命令 | 功能 |
| --------- | --------------------------------------------------------- |
| dd | 转换或复制文件。 |
| dump | ext2/3/4 文件系统备份工具。 |
| dumpe2fs | 导出 ext2/ext3/ext4 文件系统信息。 |
| e2fsck | 检查 ext2/ext3/ext4 类型文件系统。 |
| fdisk | 磁盘分区命令,适用于 2TB 以下磁盘分区。 |
| fsck | 检查并修复 Linux 文件系统。 |
| mkfs | 格式化创建 Linux 文件系统。 |
| mkswap | 创建 Linux 交换分区。 |
| mount | 挂载文件系统。 |
| parted | 磁盘分区命令,没有磁盘大小限制,常用于 2TB 以下磁盘分区。 |
| partprobe | 更新内核的硬盘分区表信息。 |
| resize2fs | 调整 ext2/ext3/ext4 文件系统大小。 |
| swapoff | 关闭交换分区。 |
| swapon | 启用交换分区。 |
| sync | 将内存缓冲区内的数据写入磁盘。 |
| umount | 卸载文件系统。 |
## 文件和目录
### 基础操作
| 命令 | 功能 |
| -------- | ------------------------------------------------------------ |
| basename | 显示文件名或目录名。 |
| cd | 全拼 change directory功能是从当前工作目录切换到指定的工作目录。 |
| chattr | 改变文件的扩展属性。 |
| cp | 全拼 copy其功能为复制文件或目录。 |
| dirname | 显示文件或目录路径。 |
| file | 显示文件的类型。 |
| find | 查找的意思,用于查找目录及目录下的文件。 |
| ls | 全拼 list功能是列出目录的内容及其内容属性信息。 |
| lsattr | 查看文件扩展属性。 |
| md5sum | 计算和校验文件的 MD5 值。 |
| mkdir | 全拼 make directories其功能是创建目录。 |
| mv | 全拼 move其功能是移动或重命名文件。 |
| pwd | 全拼 print working directory其功能是显示当前工作目录的绝对路径。 |
| rename | 用于重命名文件。 |
| rm | 全拼 remove其功能是删除一个或多个文件或目录。 |
| rmdir | 全拼 remove empty directories功能是删除空目录。 |
| touch | 创建新的空文件,改变已有文件的时间戳属性。 |
| tree | 功能是以树形结构显示目录下的内容。 |
### 文件处理
| 功能 | 命令 |
| ---------- | ------------------------------------------------------------ |
| cat | 全拼 concatenate功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。 |
| cut | 将文件的每一行按指定分隔符分割并输出。 |
| diff | 全拼 difference比较文件的差异常用于文本文件。 |
| dos2unix | 将 DOS 格式文件转换成 UNIX 格式。 |
| grep/egrep | 过滤字符串,三剑客老三。 |
| head | 显示文件内容的头部。 |
| iconv | 转换文件的编码格式。 |
| join | 按两个文件的相同字段合并。 |
| less | 分页显示文件内容more 命令的相反用法。 |
| more | 分页显示文件内容。 |
| paste | 按行合并文件内容。 |
| rev | 反向输出文件内容。 |
| sort | 对文件的文本内容排序。 |
| split | 分割文件为不同的小片段。 |
| tac | tac 是 cat 的反向拼写,因此命令的功能为反向显示文件内容。 |
| tail | 显示文件内容的尾部。 |
| tr | 替换或删除字符。 |
| uniq | 去除重复行。oldboy |
| vi/vim | 命令行文本编辑器。 |
| vimdiff | 命令行可视化文件比较工具,常用于文本文件。 |
| wc | 统计文件的行数、单词数或字节数。 |
### 文件检索
| 命令 | 功能 |
| ------- | ------------------------------------------------------------ |
| find | 从磁盘遍历查找文件或目录。 |
| locate | 从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新库。 |
| whereis | 查找二进制命令,按环境变量 PATH 路径查找。 |
| which | 查找二进制命令,按环境变量 PATH 路径查找。 |
### 文件解压缩
| 命令 | 功能 |
| ----- | ---------------- |
| gzip | gzip 压缩工具。 |
| tar | 打包压缩。oldboy |
| unzip | 解压文件。 |
| zip | 压缩工具。 |

View File

@ -1,108 +0,0 @@
---
id: 管道符、重定向与环境变量
title: 管道符、重定向与环境变量
sidebar_position: 2
data: 2022年3月4日
---
## 输入输出重定向
输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。
- **标准输入重定向STDIN文件描述符为0**:默认从键盘输入,也可从其他文件或命令中输入。
- **标准输出重定向STDOUT文件描述符为1**:默认输出到屏幕。
- **错误输出重定向STDERR文件描述符为2**:默认输出到屏幕。
*对于重定向中的标准输出模式,可以省略文件描述符 1 不写,而错误输出模式的文件描述符 2 是必须要写的。*
### 输入重定向
符号及其作用
| 符号 | 作用 |
| -------------------- | -------------------------------------------- |
| 命令 < 文件 | 将文件作为命令的标准输入 |
| 命令 << 分界符 | 从标准输入中读入直到遇见分界符才停止 |
| 命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
### 输出重定向
| 符号 | 作用 |
| ---------------------------------- | ---------------------------------------------------------- |
| 命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
| 命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
| 命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
| 命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
| 命令 >> 文件 2>&1 或 命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面 |
## 管道命令符
按下键盘上的Shift+反斜杠(\键即可输入管道符其执行格式为“命令A | 命令B”。**管道命令符把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入**
```shell
# 输出禁止登录用户行数
grep /sbin/nologin /etc/passwd | wc -l
# 搜索与 bash 有关的进程
ps aux | grep bash
```
命令符可以**无限组合**例如命令A | 命令B | 命令C |……
> 曾经有位东北的同学做了一个特别贴切的类比:把管道符当做流水线作业,这跟吃顿烧烤是同一个道理,即第一个人负责切肉,第二个人负责串肉,第三个人负责烧烤,最后的处理结果交付给用户。
### 命令行的通配符
通配符及含义
| 通配符 | 含义 |
| ----------- | -------------- |
| * | 任意字符 |
| ? | 单个任意字符 |
| [a-z] | 单个小写字母 |
| [A-Z] | 单个大写字母 |
| [a-Z] | 单个字母 |
| [0-9] | 单个数字 |
| [[:alpha:]] | 任意字母 |
| [[:upper:]] | 任意大写字母 |
| [[:lower:]] | 任意小写字母 |
| [[:digit:]] | 所有数字 |
| [[:alnum:]] | 任意字母加数字 |
| [[:punct:]] | 标点符号 |
示例:
```shell
# 匹配 /dev 目录中且以 sda 开头的文件
ls -l /dev/sda*
```
### 常用的转义字符
- **反斜杠(\**:使反斜杠后面的一个变量变为单纯的字符。
- **单引号(' '**:转义其中所有的变量为单纯的字符串。
- **双引号(" "**:保留其中的变量属性,不进行转义处理。
- **反引号(\` `**:把其中的命令执行后返回结果。
### 重要的环境变量
**在Linux系统中变量名称一般都是大写的命令则都是小写的这是一种约定俗成的规范。**
Linux系统中最重要的 10 个环境变量
| 变量名称 | 作用 |
| ------------ | -------------------------------- |
| HOME | 用户的主目录(即家目录) |
| SHELL | 用户在使用的Shell解释器名称 |
| HISTSIZE | 输出的历史命令记录条数 |
| HISTFILESIZE | 保存的历史命令记录条数 |
| MAIL | 邮件保存路径 |
| LANG | 系统语言、语系名称 |
| RANDOM | 生成一个随机数字 |
| PS1 | Bash解释器的提示符 |
| PATH | 定义解释器搜索用户执行命令的路径 |
| EDITOR | 用户默认的文本编辑器 |