wiki/运维/Linux/笔记/4.终端管理.md
2026-04-08 19:40:00 +08:00

303 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 1、终端管理概览
在 Linux 中,终端管理主要围绕这几个概念展开:
- 终端类型:当前是本地控制台、串口还是 SSH 登录
- 图形界面与命令行界面GUI 和 CLI 的区别
- Shell用户与系统交互的命令解释器
- 提示符、别名、主机名:日常使用中最常配置的内容
理解这些内容后,平时排查“我现在登录到哪了”“当前用的是什么 shell”“为什么命令行为不一样”等问题会更容易。
## 2、终端类型
Linux 中常见终端类型如下。
### 2.1 控制台终端
- 设备文件:`/dev/console`
- 常见场景:服务器物理控制台、云服务器 VNC 控制台
控制台终端通常用于系统启动、紧急排障、无法通过网络登录时的本地管理。
### 2.2 串行终端
- 设备文件:`/dev/ttyS#`
- 常见场景:通过串口线连接服务器、网络设备或嵌入式设备
串口终端在机房设备、交换机、路由器、服务器底层管理中很常见。
### 2.3 虚拟终端
- 设备文件:`/dev/tty#`
- 常见场景:本地文本控制台
- 切换方式:`Ctrl + Alt + F1 ~ F6`(不同发行版可能略有差异)
虚拟终端更准确地说是 Linux 的**本地字符界面终端**,不是图形终端本身。
### 2.4 伪终端
- 设备文件:`/dev/pts/#`
- 常见场景SSH 登录、远程终端窗口、图形界面中的终端模拟器
平时通过 SSH 连到服务器后,最常见的就是伪终端。
### 2.5 图形终端
图形终端一般是桌面环境中的终端模拟器,例如 GNOME Terminal、Xfce Terminal、Konsole 等。
它们本质上通常也是运行在图形界面中的伪终端。
### 2.6 查看当前终端
```shell
[root@tencentos ~]# tty
/dev/pts/0
```
- `tty` 用于查看当前会话对应的终端设备
- 如果输出是 `/dev/pts/0`,通常表示当前是远程登录或图形终端模拟器
## 3、GUI 与 CLI
### 3.1 GUI
GUI 全称是 Graphical User Interface即图形用户界面。
它适合桌面办公、图形化配置和交互式操作。
常见 Linux 桌面环境有:
#### GNOME
- **简介**:功能完整,生态成熟,常见于主流 Linux 发行版
- **特点**:界面现代,但资源占用相对较高
- **项目地址**[GNOME Shell](https://github.com/GNOME/gnome-shell)
#### Xfce
- **简介**:轻量级桌面环境
- **特点**:运行速度快,占用资源少,适合配置较低的机器
#### LXDE
- **简介**:更偏极简和轻量的桌面环境
- **特点**:资源占用很低,适合老旧设备
#### KDE Plasma
- **简介**:功能丰富、可定制性强
- **特点**:界面美观,功能全面,但整体较重
#### MATE
- **简介**:传统风格桌面环境
- **特点**:兼顾易用性和资源占用,适合中低配置机器
### 3.2 CLI
CLI 全称是 Command-Line Interface即命令行界面。
在服务器运维场景中CLI 更常见,原因主要有:
- 资源消耗更低
- 远程管理更方便
- 适合自动化和脚本化操作
- 排障时更高效
## 4、Shell 与命令分类
### 4.1 什么是 Shell
Shell 是用户和 Linux 内核之间的命令解释器。用户输入命令后Shell 负责解释并调用对应程序执行。
常见 Shell 有:
- `sh`:早期的标准 shell
- `bash`:最常见、最主流的 shell
- `zsh`:交互能力更强,常见于开发环境
- `ksh``csh``tcsh``dash`:其他常见 shell
### 4.2 查看当前 Shell
```shell
[root@tencentos ~]# echo $SHELL
/bin/bash
```
注意这里通常使用的是大写环境变量 `SHELL`,不是 `shell`
### 4.3 查看系统支持哪些 Shell
```shell
[root@tencentos ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/ksh
/bin/rksh
/usr/bin/ksh
/usr/bin/rksh
/usr/bin/zsh
/bin/zsh
/bin/csh
/bin/tcsh
/usr/bin/csh
/usr/bin/tcsh
/bin/dash
```
### 4.4 命令分类
可以通过下面的命令查看某个命令的类型:
```shell
type COMMAND
```
命令大体可以分为两类:
#### 内部命令
内部命令是 Shell 自带的命令,启动 Shell 后即可直接使用。
- 查看帮助方式:`help cd`
- 查看所有内部命令帮助:`help`
#### 外部命令
外部命令是磁盘上的可执行程序,执行时由 Shell 到相应路径中查找。
- 查看路径:`which -a COMMAND`
- 辅助查看:`whereis COMMAND`
- 查看帮助:`man COMMAND`
### 4.5 hash 缓存
Shell 会把已经找到路径的外部命令缓存到 hash 表中,后续再次执行时可以减少路径查找。
```shell
hash -l
```
这个命令可以查看当前 shell 的 hash 缓存内容。
## 5、提示符 `PS1`
提示符就是你每次看到的命令行前缀,例如:
```shell
[lzc@tencentos ~]$ echo $PS1
[\u@\h \W]\$
```
常见占位符说明:
- `\u`:当前用户名
- `\h`:短主机名
- `\H`:完整主机名
- `\w`:当前工作目录完整路径
- `\W`:当前工作目录基名
- `\t`24 小时制时间
- `\T`12 小时制时间
- `\e`:转义字符,常用于颜色控制
### 5.1 自定义提示符示例
```shell
PS1='\[\e[1;41;33m\][\u@\h \W]\$\[\e[0m\]'
```
这条配置会让提示符带颜色显示。`
\[ ... \]` 用于告诉 shell 这里是非打印字符,避免光标错位。
如果想永久生效,通常把它写到:
- 当前用户:`~/.bashrc`
- 所有用户:`/etc/bashrc`
## 6、命令别名 `alias`
别名适合给常用长命令起一个短名字,提高输入效率。
### 6.1 临时设置
```shell
alias NAME='VALUE'
```
例如:
```shell
alias ll='ls -l --color=auto'
```
### 6.2 取消别名
```shell
unalias NAME
```
```shell
unalias -a
```
- `unalias NAME`:取消指定别名
- `unalias -a`:取消所有别名
### 6.3 永久生效
如果希望每次登录都生效,需要把别名配置写入:
- 当前用户:`~/.bashrc`
- 所有用户:`/etc/bashrc`
修改后通常执行:
```shell
source ~/.bashrc
```
## 7、登录提示文件
系统登录后的欢迎信息通常来自:
```shell
/etc/motd
```
这个文件常用于显示运维通知、登录提醒、版权信息等。
## 8、设置主机名
### 8.1 临时设置
```shell
hostname NAME
```
这种方式通常只对当前运行环境立即生效,重启后是否保留取决于系统配置。
### 8.2 推荐方式
```shell
hostnamectl set-hostname NAME
```
在使用 systemd 的系统中,更推荐使用 `hostnamectl` 来修改主机名。
### 8.3 注意事项
- 主机名不建议使用下划线 `_`
- 通常推荐使用字母、数字和中划线 `-`
- 主机名应简洁、易识别,便于批量运维管理
## 9、小结
- `tty` 可以查看当前终端设备
- `/dev/tty#``/dev/pts/#``/dev/console` 分别对应不同类型终端
- GUI 适合图形化操作CLI 更适合服务器运维
- `bash` 是最常见的 Shell`echo $SHELL` 可以查看当前 shell
- `type``help``which``man` 常用于判断命令类型和查看帮助
- `PS1``alias``hostnamectl` 是终端环境中很常见的配置点
这篇内容属于 Linux 终端与 Shell 基础,理解后对日常登录、操作和环境配置都很有帮助。