303 lines
7.0 KiB
Markdown
303 lines
7.0 KiB
Markdown
## 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 基础,理解后对日常登录、操作和环境配置都很有帮助。
|