【2026年最新最全】Linux 常用命令速查手册
📖 简介
📝 文档概述
大家好,我是程序员良辰,我花费一个多月汇总了一份
Linux 常用命令速查手册。系统地将 100+ 个常用命令按照功能特性划分为 14 大类别 ,涵盖从基础文件操作到高级网络配置的全部核心知识点。

🎯 适用人群
- Linux 初学者 - 快速掌握必备基础命令
- 系统管理员 - 日常运维工作的得力助手
- 后端开发者 - 服务器管理与部署必备参考
- DevOps 工程师 - 编写脚本和自动化任务的工具书
📚 内容特色
系统化分类- 按功能模块科学分组,便于按需查找丰富的示例- 每个命令都配有实际使用示例,包含输入输出实用技巧- 包含常用选项说明和最佳实践建议图文并茂- 通过代码块清晰展示命令效果附录实用- 包含 Bash 快捷键速查和系统路径说明
🛠️ 核心价值
这份手册不是简单的命令堆砌,而是基于实际工作经验,将每个命令的常见用法、使用场景和注意事项都做了详细说明。无论是准备面试、应对工作需求,还是日常学习参考,都是一份值得收藏的工具文档。
✨ 使用建议
建议将其作为 “案头书” 保存,在日常使用中遇到不熟悉的命令时随时查阅。随着使用次数的增加,你会逐渐熟悉各个命令,形成肌肉记忆,从而大幅提升 Linux 操作效率。
1. 基本文件操作
ls - 列出目录内容
作用:显示指定目录或当前目录下的所有文件和文件夹。
语法:
ls [选项] [目录]
常用选项:
-l:长格式显示详细信息-a:显示所有文件(包括隐藏文件)-h:人类可读的文件大小-R:递归显示子目录
示例:
# 基本列出
$ ls
file1.txt Documents Pictures
# 长格式显示
$ ls -lh
total 128
drwxr-xr-x 2 user user 4.0K May 22 10:30 Documents
-rw-r--r-- 1 user user 2.1K May 22 09:15 file1.txt
# 显示所有文件(包括隐藏)
$ ls -la
total 128
drwxr-xr-x 3 user user 4.0K May 22 10:30 .
drwx------ 5 user user 4.0K May 22 08:00 ..
-rw-r--r-- 1 user user 2.1K May 22 09:15 .hidden_file
cd - 切换目录
作用:改变当前工作目录。
语法:
cd [目录]
示例:
# 切换到指定目录
$ cd /home/user/Documents
# 切换到用户主目录
$ cd ~
$ cd
# 切换到上级目录
$ cd ..
# 切换到上两级目录
$ cd ../..
# 切换到上一个工作目录
$ cd -
pwd - 显示当前目录
作用:显示当前工作目录的绝对路径。
语法:
pwd [选项]
示例:
$ pwd
/home/user/Documents/project
# 显示物理路径(不包含符号链接)
$ pwd -P
/home/var/www/html
cp - 复制文件或目录
作用:复制文件或目录。
语法:
cp [选项] 源 目标
常用选项:
-r:递归复制目录-i:交互式复制(覆盖前询问)-v:显示复制过程-p:保留文件属性-a:归档模式(相当于 -dR --preserve=all)
示例:
# 复制单个文件
$ cp file.txt /backup/
# 复制并重命名
$ cp file.txt newfile.txt
# 递归复制目录
$ cp -r /home/user/Documents /backup/
# 复制时显示详细信息
$ cp -rv Documents /backup/
'Documents' -> '/backup/Documents'
'Documents/file.txt' -> '/backup/Documents/file.txt'
mv - 移动或重命名文件
作用:移动文件或目录,或重命名文件。
语法:
mv [选项] 源 目标
常用选项:
-i:交互式移动(覆盖前询问)-v:显示移动过程-f:强制移动(不询问)
示例:
# 移动文件到目录
$ mv file.txt /home/user/Documents/
# 重命名文件
$ mv oldname.txt newname.txt
# 移动并重命名
$ mv file.txt /home/user/Documents/newfile.txt
# 移动多个文件
$ mv file1.txt file2.txt /backup/
rm - 删除文件或目录
作用:删除文件或目录。
语法:
rm [选项] 文件
常用选项:
-r:递归删除目录-f:强制删除,不提示-i:交互式删除
示例:
# 删除单个文件
$ rm file.txt
# 删除目录(需要 -r)
$ rm -r /backup/old_directory
# 强制删除(不询问)
$ rm -rf /tmp/test
# 交互式删除
$ rm -i *.txt
rm: remove regular file 'file1.txt'? y
rm: remove regular file 'file2.txt'? n
mkdir - 创建目录
作用:创建新目录。
语法:
mkdir [选项] 目录名
常用选项:
-p:递归创建目录-m:设置目录权限
示例:
# 创建单个目录
$ mkdir new_directory
# 递归创建多级目录
$ mkdir -p /home/user/Documents/projects/myproject/src
# 创建目录并设置权限
$ mkdir -m 755 secured_directory
rmdir - 删除空目录
作用:删除空目录。
语法:
rmdir [选项] 目录名
示例:
# 删除空目录
$ rmdir empty_directory
# 删除多个空目录
$ rmdir dir1 dir2 dir3
# 递归删除空目录
$ rmdir -p parent/child/grandchild
touch - 创建空文件或更新文件时间
作用:创建新的空文件,或更新已有文件的时间戳。
语法:
touch [选项] 文件
示例:
# 创建空文件
$ touch newfile.txt
# 创建多个文件
$ touch file1.txt file2.txt file3.txt
# 更新文件访问和修改时间
$ touch existing_file.txt
# 创建带时间戳的文件
$ touch -t 202405221200 filename.txt
cat - 连接并显示文件内容
作用:显示文件内容,或连接多个文件。
语法:
cat [选项] 文件
常用选项:
-n:显示行号-b:非空行显示行号-s:连续多个空行合并为一个
示例:
# 显示文件内容
$ cat file.txt
Hello World
This is a test file.
# 显示文件内容并带行号
$ cat -n file.txt
1 Hello World
2 This is a test file.
# 连接多个文件
$ cat file1.txt file2.txt > combined.txt
# 创建文件(使用重定向)
$ cat > newfile.txt
Hello World
<Ctrl+D>
less - 分页显示文件内容
作用:分页查看文件内容,支持前后翻页。
语法:
less [选项] 文件
常用操作:
↑/↓:上下滚动Space/b:下一页/上一页q:退出/pattern:搜索模式n:下一个匹配N:上一个匹配
示例:
# 分页查看大文件
$ less /var/log/syslog
# 从第100行开始显示
$ less +100 largefile.txt
# 显示时包含行号
$ less -N file.txt
# 搜索并高亮显示
$ less -p error /var/log/syslog
more - 分页显示文件内容
作用:分页显示文件内容(只能向前翻页)。
语法:
more [选项] 文件
常用操作:
Space:下一页Enter:下一行q:退出
示例:
# 分页查看文件
$ more /etc/passwd
# 从第10行开始显示
$ more +10 file.txt
# 每次显示20行
$ more -20 file.txt
head - 显示文件开头部分
作用:显示文件的开头部分(默认10行)。
语法:
head [选项] 文件
常用选项:
-n:指定显示行数-c:指定显示字节数
示例:
# 显示前10行(默认)
$ head file.txt
# 显示前20行
$ head -n 20 file.txt
# 显示前100字节
$ head -c 100 file.txt
# 显示多个文件的前5行
$ head -n 5 file1.txt file2.txt
tail - 显示文件结尾部分
作用:显示文件的结尾部分(默认10行)。
语法:
tail [选项] 文件
常用选项:
-n:指定显示行数-f:实时追踪文件更新-F:实时追踪(包括重新创建的文件)--pid=PID:指定进程ID,进程结束时退出
示例:
# 显示最后10行(默认)
$ tail file.txt
# 显示最后20行
$ tail -n 20 file.txt
# 实时查看日志
$ tail -f /var/log/syslog
# 查看最后100行并实时追踪
$ tail -100f /var/log/nginx/access.log
# 显示文件的第20行到结尾
$ tail -n +20 file.txt
ln - 创建链接
作用:创建文件的链接(硬链接或符号链接)。
语法:
ln [选项] 源 链接名
常用选项:
-s:创建符号链接(软链接)-f:强制创建(覆盖已有链接)-i:交互式确认
示例:
# 创建硬链接
$ ln original.txt hardlink.txt
# 创建符号链接
$ ln -s /path/to/file symlink
# 创建指向目录的符号链接
$ ln -s /home/user/Documents mydocs
# 强制创建符号链接(覆盖)
$ ln -sf /new/path/file symlink
stat - 显示文件或文件系统状态
作用:显示文件的详细信息,包括访问权限、时间戳等。
语法:
stat [选项] 文件
示例:
$ stat file.txt
File: file.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 1310845 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2024-05-22 10:30:00.000000000 +0800
Modify: 2024-05-22 09:15:00.000000000 +0800
Change: 2024-05-22 09:15:00.000000000 +0800
Birth: -
# 显示文件系统状态
$ stat -f /
File: "/"
ID: 0 Namelen: 255 Type: ext2/ext3
Blocks: Total: 12345678 Free: 8765432 Available: 8234567
Inodes: Total: 1000000 Free: 998765
dd - 转换和复制文件
作用:按照指定大小和块复制转换文件,常用于磁盘备份。
语法:
dd if=源 of=目标 [选项]
常用选项:
if:输入文件of:输出文件bs:块大小count:复制块数conv:转换选项
示例:
# 创建空文件(1MB)
$ dd if=/dev/zero of=testfile bs=1M count=1
# 备份磁盘
$ dd if=/dev/sda of=/backup/disk.img bs=4M
# 制作ISO镜像
$ dd if=/dev/cdrom of=cdrom.iso bs=4M
# 备份MBR
$ dd if=/dev/sda of=mbr.backup bs=512 count=1
# 进度显示
$ dd if=/dev/zero of=/dev/null bs=1M count=1000 status=progress
file - 确定文件类型
作用:检测并显示文件的类型。
语法:
file [选项] 文件
示例:
$ file image.png
image.png: PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced
$ file script.sh
script.sh: Bourne-Again shell script, ASCII text executable
$ file /dev/sda1
/dev/sda1: block special (8/1)
$ file -z compressed.txt
compressed.txt: gzip compressed data, was "data.txt", from Unix, last modified: ...
which - 查找命令位置
作用:查找并显示可执行命令的完整路径。
语法:
which [选项] 命令
示例:
$ which ls
/bin/ls
$ which python
/usr/bin/python
# 查找所有匹配项
$ which -a python
/usr/bin/python
/bin/python
# 查找多个命令
$ which ls grep cat
/bin/ls
/bin/grep
/bin/cat
whereis - 查找命令的二进制、源码和手册页
作用:查找命令的二进制文件、源代码和手册页位置。
语法:
whereis [选项] 命令
示例:
$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
$ whereis python
python: /usr/bin/python3.8 /usr/bin/python3 /usr/bin/python3.8-config
# 只查找二进制
$ whereis -b ls
# 只查找手册页
$ whereis -m grep
grep: /usr/share/man/man1/grep.1.gz
2. 查看进程、端口等
ps - 报告进程状态
作用:显示当前系统的进程状态。
语法:
ps [选项]
常用选项:
aux:显示所有进程(BSD风格)-ef:显示所有进程(System V风格)-eLf:显示线程信息
示例:
# 显示当前终端的进程
$ ps
PID TTY TIME CMD
1234 pts/0 00:00:00 bash
5678 pts/0 00:00:00 ps
# 显示所有进程
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 1234 5678 ? Ss May20 0:05 /sbin/init
user 1234 2.5 1.0 5678 8765 pts/0 Ss 10:30 0:01 bash
# 显示进程树
$ ps -ef --forest
# 查找特定进程
$ ps aux | grep nginx
# 显示线程
$ ps -eLf | grep python
top - 动态显示进程状态
作用:实时显示系统的进程和资源使用情况。
语法:
top [选项]
常用选项:
-d:指定更新间隔(秒)-p:监控指定PID-u:显示指定用户的进程-n:指定更新次数后退出
示例:
# 启动top
$ top
# 每5秒更新一次
$ top -d 5
# 显示指定用户的进程
$ top -u username
# 监控特定进程
$ top -p 1234
# 高CPU使用率排序
# 在top界面按 P
# 高内存使用率排序
# 在top界面按 M
top 交互命令:
q:退出P:按CPU排序M:按内存排序k:终止进程r:重新设置优先级1:显示所有CPU核心h:显示帮助
htop - 交互式进程查看器
作用:比 top 更友好的进程查看工具,支持颜色和交互操作。
语法:
htop [选项]
常用选项:
-d:设置更新间隔-u:显示指定用户进程-p:监控指定PID
示例:
# 启动htop
$ htop
# 每10秒更新
$ htop -d 10
# 显示特定用户
$ htop -u username
# 垂直/水平排序
# 使用功能键 F6/F5
kill - 终止进程
作用:向进程发送信号,通常用于终止进程。
语法:
kill [选项] PID
常用信号:
1:SIGHUP - 重新加载配置9:SIGKILL - 强制终止15:SIGTERM - 正常终止(默认)
示例:
# 正常终止进程
$ kill 1234
# 强制终止进程
$ kill -9 1234
# 重启进程(发送HUP信号)
$ kill -1 1234
# 终止多个进程
$ kill 1234 5678 9012
# 列出所有信号
$ kill -l
killall - 按名称终止进程
作用:按进程名称终止所有匹配的进程。
语法:
killall [选项] 进程名
示例:
# 终止所有nginx进程
$ killall nginx
# 强制终止
$ killall -9 firefox
# 交互式终止
$ killall -i nginx
# 按正则表达式终止
$ killall -r 'python.*'
pkill - 按名称或属性终止进程
作用:使用模式匹配来终止进程。
语法:
pkill [选项] 模式
示例:
# 终止所有firefox进程
$ pkill firefox
# 强制终止
$ pkill -9 firefox
# 终止指定用户的进程
$ pkill -u username firefox
# 终止终端进程
$ pkill -t pts/0
pgrep - 查找进程ID
作用:根据名称查找进程的PID。
语法:
pgrep [选项] 模式
示例:
# 查找nginx进程
$ pgrep nginx
1234
5678
# 完整匹配
$ pgrep -x nginx
# 显示进程名称
$ pgrep -l nginx
1234 nginx: worker
5678 nginx: master
# 显示完整命令行
$ pgrep -a nginx
# 查找指定用户的进程
$ pgrep -u username nginx
netstat - 显示网络状态
作用:显示网络连接、路由表、接口统计等信息。
语法:
netstat [选项]
常用选项:
-a:显示所有连接-t:显示TCP连接-u:显示UDP连接-l:显示监听中的套接字-n:显示数字地址-p:显示进程PID/名称-r:显示路由表
示例:
# 显示所有连接
$ netstat -a
# 显示TCP连接
$ netstat -at
# 显示监听端口
$ netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
# 显示所有监听和未监听
$ netstat -tuln | grep LISTEN
# 显示进程ID
$ netstat -tulnp
# 显示路由表
$ netstat -r
ss - Socket统计信息
作用:比 netstat 更快速、更详细的 Socket 统计工具。
语法:
ss [选项]
常用选项:
-a:显示所有-t:显示TCP-u:显示UDP-l:显示监听套接字-n:数字显示-p:显示进程-o:显示定时器信息
示例:
# 显示所有连接
$ ss -a
# 显示TCP连接
$ ss -t
# 显示监听端口
$ ss -tuln
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:631 0.0.0.0:*
# 显示进程信息
$ ss -tulnp
# 显示特定端口
$ ss -tuln 'sport = :80'
# 显示established连接
$ ss -tp state established
# 显示连接状态统计
$ ss -s
Total: 186 (kernel 189)
TCP: 4 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0)
# 显示定时器信息
$ ss -to
lsof - 显示打开的文件
作用:显示打开文件的所有进程。
语法:
lsof [选项]
常用选项:
-i:显示网络文件-p:显示指定进程-u:显示指定用户+D:递归显示目录
示例:
# 显示所有打开的网络连接
$ lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 1234 user 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
nginx 5678 root 6u IPv4 12346 0t0 TCP *:80 (LISTEN)
# 显示端口占用
$ lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 5678 root 6u IPv4 12346 0t0 TCP *:80 (LISTEN)
# 显示指定进程打开的文件
$ lsof -p 1234
# 显示指定用户打开的文件
$ lsof -u username
# 递归显示目录
$ lsof +D /home/user
# 组合使用
$ lsof -i -u username -p 1234
fuser - 识别进程使用文件或端口
作用:识别正在使用指定文件或端口的进程。
语法:
fuser [选项] 文件/端口
常用选项:
-v:详细输出-k:终止进程-i:交互式终止
示例:
# 显示使用文件的进程
$ fuser -v /var/log/syslog
USER PID ACCESS COMMAND
/var/log/syslog: root 1234 F.... rsyslogd
# 显示使用端口的进程
$ fuser -v 80/tcp
USER PID ACCESS COMMAND
80/tcp: root 5678 F.... nginx
# 终止使用文件的进程
$ fuser -k /var/log/syslog
# 交互式终止
$ fuser -ki /mnt/usb
# 显示进程详细信息
$ fuser -v /home
USER PID ACCESS COMMAND
/home: user 1234 rcm.. bash
user 5678 F.... firefox
3. 防火墙
iptables - IPv4 包过滤和NAT
作用:Linux 内核防火墙的规则管理工具。
语法:
iptables [选项] [链] [规则]
常用选项:
-A:追加规则-D:删除规则-L:列出规则-F:清空规则-I:插入规则-P:设置默认策略
示例:
# 查看当前规则
$ iptables -L
$ iptables -L -n -v
# 允许SSH连接
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许已建立的连接
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 拒绝特定IP访问
$ iptables -A INPUT -s 192.168.1.100 -j DROP
# 允许特定端口范围
$ iptables -A INPUT -p tcp --dport 8000:9000 -j ACCEPT
# 删除规则
$ iptables -D INPUT 3
# 清空所有规则
$ iptables -F
# 设置默认策略
$ iptables -P INPUT DROP
$ iptables -P FORWARD DROP
# 保存规则
$ iptables-save > /etc/iptables/rules.v4
# 端口转发
$ iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
firewall-cmd - firewalld 命令行工具
作用:CentOS/RHEL 7+ 默认防火墙管理工具。
语法:
firewall-cmd [选项]
常用选项:
--list-all:列出所有规则--add-port:添加端口--remove-port:移除端口--add-service:添加服务--permanent:永久生效
示例:
# 查看当前区域信息
$ firewall-cmd --list-all
public (active)
services: dhcpv6-client ssh
ports: 80/tcp 443/tcp
masquerade: no
# 临时允许端口
$ firewall-cmd --add-port=80/tcp
# 永久允许端口
$ firewall-cmd --permanent --add-port=80/tcp
# 重新加载配置
$ firewall-cmd --reload
# 临时允许服务
$ firewall-cmd --add-service=http
# 永久允许服务
$ firewall-cmd --permanent --add-service=https
# 查看已开放端口
$ firewall-cmd --list-ports
# 查看已开放服务
$ firewall-cmd --list-services
# 移除端口
$ firewall-cmd --permanent --remove-port=80/tcp
# 启用端口转发
$ firewall-cmd --permanent --add-masquerade
$ firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
# 查看所有区域
$ firewall-cmd --get-zones
# 设置默认区域
$ firewall-cmd --set-default-zone=public
ufw - Uncomplicated Firewall
作用:Ubuntu 默认防火墙管理工具,提供简单的命令行界面。
语法:
ufw [命令]
示例:
# 查看状态
$ ufw status
Status: inactive
# 启用防火墙
$ ufw enable
# 禁用防火墙
$ ufw disable
# 允许SSH
$ ufw allow ssh
# 允许80端口
$ ufw allow 80/tcp
# 允许端口范围
$ ufw allow 8000:9000/tcp
# 拒绝端口
$ ufw deny 23/tcp
# 删除规则
$ ufw delete allow 80/tcp
# 允许特定IP
$ ufw allow from 192.168.1.100
# 允许特定IP到特定端口
$ ufw allow from 192.168.1.100 to any port 22
# 查看详细状态
$ ufw status verbose
# 重置防火墙
$ ufw reset
# 启用日志
$ ufw logging on
nft - nftables 命令行工具
作用:新一代 Linux 防火墙工具,是 iptables 的继任者。
语法:
nft [选项] [命令]
示例:
# 查看规则集
$ nft list ruleset
# 创建表
$ nft add table ip filter
# 创建链
$ nft add chain ip filter input { type filter hook input priority 0 \; }
# 添加规则
$ nft add rule ip filter input tcp dport 22 accept
# 列出规则
$ nft list ruleset
# 删除规则
$ nft delete rule ip filter input handle 3
# 清空规则
$ nft flush ruleset
# 组合命令示例
$ nft -f /etc/nftables.conf
4. Vim/Vi 操作
基本模式
- 普通模式:启动后的默认模式,用于导航和操作
- 插入模式:输入文本
- 命令模式:执行命令
插入模式命令
| 命令 | 作用 | 示例 |
|---|---|---|
i | 在光标前插入 | i → insert text |
a | 在光标后插入 | a → after cursor |
o | 在当前行下方新建行 | o → new line below |
O | 在当前行上方新建行 | O → new line above |
I | 在行首插入 | I → beginning of line |
A | 在行尾插入 | A → end of line |
Esc | 退出插入模式 | 返回普通模式 |
示例:
# 假设光标在 "Hello" 的 H 位置
Hello World
^i → H[插入]ello World
^a → Hello[插入] World
普通模式命令
| 命令 | 作用 | 示例 |
|---|---|---|
dd | 删除当前行 | dd → 删除光标所在行 |
3dd | 删除3行 | 删除光标及下面2行 |
yy | 复制当前行 | yy → 复制行 |
3yy | 复制3行 | 复制3行 |
p | 粘贴到光标后 | p → 粘贴 |
P | 粘贴到光标前 | P → 粘贴到前面 |
u | 撤销 | u → undo |
Ctrl+r | 重做 | Ctrl+r → redo |
x | 删除字符 | x → 删除光标处字符 |
r | 替换字符 | rx → 替换为x |
R | 替换模式 | 进入连续替换 |
gg | 跳到首行 | 文件开头 |
G | 跳到尾行 | 文件末尾 |
3G | 跳到第3行 | 跳到指定行 |
0 | 跳到行首 | 数字0 |
$ | 跳到行尾 | 行尾 |
w | 下一个单词 | 词首 |
e | 单词末尾 | 词尾 |
{} | 段落跳转 | 上/下段落 |
Ctrl+b | 上翻页 | Page Up |
Ctrl+f | 下翻页 | Page Down |
示例:
# 复制粘贴
yy # 复制当前行
p # 粘贴到下一行
# 删除
dd # 删除当前行
3dd # 删除3行
dw # 删除一个单词
# 撤销重做
u # 撤销
Ctrl+r # 重做
搜索命令
| 命令 | 作用 | 示例 |
|---|---|---|
/pattern | 向下搜索 | /hello → 搜索hello |
?pattern | 向上搜索 | ?world → 反向搜索 |
n | 下一个匹配 | 跳到下一个 |
N | 上一个匹配 | 跳到上一个 |
:set nu | 显示行号 | 行号开启 |
:set nonu | 隐藏行号 | 行号关闭 |
:noh | 取消高亮 | 清除搜索高亮 |
示例:
/hello # 向下搜索 hello
n # 跳到下一个 hello
N # 跳到上一个 hello
?goodbye # 向上搜索 goodbye
:set nu # 显示行号
:15 # 跳到第15行
命令模式命令
| 命令 | 作用 | 示例 |
|---|---|---|
:w | 保存 | :w → 保存文件 |
:q | 退出 | :q → 退出 |
:wq | 保存并退出 | :wq 或 ZZ |
:q! | 强制退出(不保存) | :q! |
:x | 保存并退出 | :x |
:w filename | 另存为 | :w new.txt |
:e filename | 打开文件 | :e file.txt |
:r filename | 插入文件 | :r data.txt |
:s/old/new | 替换第一个 | :s/foo/bar/ |
:s/old/new/g | 替换所有 | :s/foo/bar/g |
:%s/old/new/g | 全文替换 | 所有匹配 |
:set all | 显示所有设置 | 配置查看 |
:! command | 执行shell命令 | :!ls |
示例:
:w # 保存
:wq # 保存退出
:x # 保存退出
:q! # 强制退出
:e file.txt # 打开文件
:r data.txt # 插入文件内容
:1,10s/old/new/g # 替换1-10行
:%s/error/correct/g # 全文替换
:!ls -la # 执行shell命令
可视模式命令
| 命令 | 作用 |
|---|---|
v | 进入字符可视模式 |
V | 进入行可视模式 |
Ctrl+v | 进入块可视模式 |
d | 删除选中 |
y | 复制选中 |
p | 粘贴 |
u | 转小写 |
U | 转大写 |
> | 右缩进 |
< | 左缩进 |
示例:
Vjj # 可视选中3行
y # 复制
p # 粘贴
Ctrl+v # 块选择
jjx # 删除选中的块
5. Find 命令
作用:在目录树中搜索文件。
语法:
find [路径] [选项] [表达式]
常用选项:
-name:按文件名搜索-type:按类型搜索(f/d/b/c/l)-size:按大小搜索-mtime:按修改时间搜索-user:按所有者搜索-perm:按权限搜索-exec:对每个匹配执行命令-delete:删除匹配文件
示例:
# 按文件名查找
$ find /home -name "*.txt"
$ find . -name "file.txt"
$ find . -name "*.log" -mtime -7 # 7天内修改的文件
# 按类型查找
$ find . -type f # 普通文件
$ find . -type d # 目录
$ find . -type l # 符号链接
$ find /dev -type b # 块设备
# 按大小查找
$ find . -size +100M # 大于100MB
$ find . -size -1k # 小于1KB
$ find / -size +1G # 大于1GB
# 按时间查找
$ find . -mtime -1 # 1天内修改
$ find . -mtime +7 # 7天前修改
$ find . -atime -1 # 1天内访问
$ find . -ctime -1 # 1天内状态改变
# 按权限查找
$ find . -perm 644 # 精确权限
$ find . -perm -111 # 至少执行权限
# 按所有者查找
$ find . -user username
$ find . -group groupname
$ find . -uid 1000
$ find . -nouser # 无效所有者
# 组合条件
$ find . -name "*.txt" -o -name "*.log"
$ find . -name "*.txt" -a -size +1k
$ find . -not -name "*.tmp"
# 执行命令
$ find . -name "*.bak" -exec rm {} \;
$ find . -name "*.txt" -exec cat {} \;
$ find . -name "*.log" -mtime +7 -exec gzip {} \;
# 查找并删除
$ find . -name "*.tmp" -delete
# 限制搜索深度
$ find . -maxdepth 2 -name "*.txt"
$ find . -mindepth 2 -name "*.txt"
# 查找空文件/目录
$ find . -empty
$ find . -type d -empty
# 显示查找结果
$ find . -name "*.txt" -print
$ find . -name "*.txt" -print0 | xargs -0 cat
# 高级示例
$ find /var/log -name "*.log" -mtime +30 -exec gzip {} \;
$ find /home -type f -perm 777 -exec chmod 755 {} \;
$ find . -type f -size +100M -exec ls -lh {} \;
6. Grep 命令
作用:在文件中搜索匹配模式的行。
语法:
grep [选项] 模式 [文件]
常用选项:
-i:忽略大小写-v:反转匹配-n:显示行号-c:计数-l:只显示文件名-r:递归搜索-E:扩展正则表达式-F:固定字符串-w:完整单词匹配-A:显示匹配后N行-B:显示匹配前N行
示例:
# 基本搜索
$ grep "error" logfile.txt
$ grep -i "error" logfile.txt # 忽略大小写
# 显示行号
$ grep -n "error" logfile.txt
123:error: something went wrong
# 反转匹配
$ grep -v "exclude" file.txt
# 计数
$ grep -c "pattern" file.txt
# 只显示文件名
$ grep -l "pattern" *.txt
# 递归搜索
$ grep -r "error" /var/log/
$ grep -r "TODO" . --include="*.py"
# 正则表达式
$ grep -E "error|warning" logfile.txt
$ grep -E "[0-9]{3}-[0-9]{4}" file.txt
# 显示上下文
$ grep -A 5 "error" file.txt # 显示匹配后5行
$ grep -B 2 "error" file.txt # 显示匹配前2行
$ grep -C 3 "error" file.txt # 显示前后3行
# 完整单词
$ grep -w "the" file.txt
# 固定字符串(比正则快)
$ grep -F "error.code" file.txt
# 安静模式(只返回退出状态)
$ grep -q "pattern" file.txt && echo "Found"
# 颜色高亮
$ grep --color=auto "pattern" file.txt
# 组合示例
$ grep -rn --include="*.js" "TODO" /home/user/project
$ grep -l "error" /var/log/*.log | xargs grep -l "failed"
$ ps aux | grep nginx | grep -v grep
egrep - 扩展正则表达式 grep
作用:等同于 grep -E。
示例:
$ egrep "(error|warning)" logfile.txt
$ egrep "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" access.log
$ egrep "^[0-9]{3}-[0-9]{4}$" file.txt
fgrep - 快速固定字符串 grep
作用:等同于 grep -F,搜索速度更快。
示例:
$ fgrep "error.code.123" file.txt
$ fgrep "192.168.1.1" /etc/hosts
zgrep - 压缩文件 grep
作用:在压缩文件中搜索。
示例:
$ zgrep "error" logfile.gz
$ zgrep -a "pattern" backup.tar.gz
7. 磁盘与文件系统
df - 显示磁盘空间使用情况
作用:显示文件系统的磁盘空间使用情况。
语法:
df [选项] [文件]
常用选项:
-h:人类可读格式-T:显示文件系统类型-i:显示inode使用情况-a:显示所有文件系统
示例:
# 基本用法
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 52403200 12345678 40057522 24% /
tmpfs 2048000 12345 2035655 1% /dev/shm
# 人类可读格式
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 12G 38G 24% /
# 显示类型
$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 50G 12G 38G 24% /
tmpfs tmpfs 2.0G 12M 2.0G 1% /dev/shm
# 显示特定文件系统
$ df -h /home
# 显示inode
$ df -i
du - 估算文件空间使用
作用:估算文件和目录的磁盘使用空间。
语法:
du [选项] [文件/目录]
常用选项:
-h:人类可读格式-s:只显示总计-a:显示所有文件-d N:限制递归深度--max-depth=N:最大深度
示例:
# 当前目录大小
$ du -sh
2.5G .
# 目录树大小
$ du -h /home/user
$ du -sh /home/user/*
# 只显示总大小
$ du -sh /var/log
# 显示文件大小
$ du -ah /home/user
# 限制深度
$ du -h --max-depth=1 /home
# 排序显示
$ du -sh /home/* | sort -h
# 排除目录
$ du -sh --exclude='*.log' /var
# 磁盘使用前10的目录
$ du -ah /home | sort -rh | head -10
mount - 挂载文件系统
作用:将文件系统附加到指定目录。
语法:
mount [-t 文件系统类型] [-o 选项] 设备 目录
示例:
# 查看已挂载
$ mount
# 挂载CD/DVD
$ mount /dev/cdrom /mnt/cdrom
# 挂载U盘
$ mount /dev/sdb1 /mnt/usb
# 挂载NFS
$ mount -t nfs 192.168.1.100:/share /mnt/nfs
# 挂载ISO
$ mount -o loop image.iso /mnt/iso
# 重新挂载(常用)
$ mount -o remount,rw /
# 挂载tmpfs
$ mount -t tmpfs -o size=2G tmpfs /mnt/tmp
# 常用挂载选项
$ mount -o noexec,nosuid,nodev /dev/sdb1 /mnt/usb
umount - 卸载文件系统
作用:卸载已挂载的文件系统。
语法:
umount [选项] 目录/设备
示例:
# 卸载
$ umount /mnt/cdrom
# 卸载设备
$ umount /dev/sdb1
# 强制卸载
$ umount -f /mnt/nfs
# 懒卸载(对NFS有用)
$ umount -l /mnt/nfs
# 查看谁在使用
$ lsof +D /mnt/cdrom
$ fuser -v /mnt/cdrom
fdisk - 磁盘分区工具
作用:创建和修改磁盘分区表。
语法:
fdisk [选项] 设备
示例:
# 查看分区
$ fdisk -l
$ fdisk -l /dev/sda
# 进入交互模式
$ fdisk /dev/sdb
# 常用交互命令
# m - 显示帮助
# p - 显示分区表
# n - 新建分区
# d - 删除分区
# t - 改变分区类型
# w - 保存退出
# q - 不保存退出
lsblk - 列出块设备
作用:列出所有可用块设备的信息。
语法:
lsblk [选项]
示例:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─centos-root 253:0 0 50G 0 lvm /
└─centos-swap 253:1 0 8G 0 lvm [SWAP]
# 显示所有设备
$ lsblk -a
# 显示设备信息
$ lsblk -f
# 输出格式
$ lsblk -p
blkid - 块设备属性
作用:显示块设备的UUID和文件系统类型。
语法:
blkid [选项] [设备]
示例:
# 查看所有设备
$ blkid
# 查看特定设备
$ blkid /dev/sda1
/dev/sda1: UUID="1234-5678" TYPE="vfat"
# 只显示类型
$ blkid -s TYPE -o value /dev/sda1
# 只显示UUID
$ blkid -s UUID -o value /dev/sda1
# 输出脚本格式
$ blkid -p /dev/sda1
parted - 磁盘分区工具
作用:比 fdisk 更强大的分区工具,支持GPT。
语法:
parted [选项] [设备]
示例:
# 交互模式
$ parted /dev/sdb
# 命令行模式
$ parted /dev/sdb mklabel gpt
$ parted /dev/sdb mkpart primary ext4 0% 100%
$ parted /dev/sdb print
$ parted /dev/sdb rm 1
mkfs - 创建文件系统
作用:在分区上创建文件系统。
语法:
mkfs [选项] 设备
示例:
# 创建ext4文件系统
$ mkfs.ext4 /dev/sdb1
$ mkfs -t ext4 /dev/sdb1
# 创建XFS文件系统
$ mkfs.xfs /dev/sdb1
# 创建VFAT文件系统
$ mkfs.vfat /dev/sdb1
# 创建时指定参数
$ mkfs.ext4 -L "MyData" -b 4096 /dev/sdb1
# 查看可用类型
$ mkfs -t help
8. 压缩与打包
tar - 打包工具
作用:创建和解压归档文件。
语法:
tar [选项] [归档文件] [文件...]
常用选项:
-c:创建归档-x:解压归档-t:列出内容-f:指定归档文件-v:显示详情-z:使用 gzip-j:使用 bzip2-J:使用 xz-C:切换目录
示例:
# 创建归档(.tar)
$ tar -cvf archive.tar /home/user
# 创建gzip压缩包(.tar.gz)
$ tar -czvf archive.tar.gz /home/user
# 创建bzip2压缩包(.tar.bz2)
$ tar -cjvf archive.tar.bz2 /home/user
# 创建xz压缩包(.tar.xz)
$ tar -cJvf archive.tar.xz /home/user
# 解压归档
$ tar -xvf archive.tar
$ tar -xzvf archive.tar.gz
$ tar -xjvf archive.tar.bz2
$ tar -xJvf archive.tar.xz
# 解压到指定目录
$ tar -xzvf archive.tar.gz -C /tmp
# 查看归档内容
$ tar -tvf archive.tar.gz
# 追加文件到归档
$ tar -rvf archive.tar newfile.txt
# 从归档中提取单个文件
$ tar -xzvf archive.tar.gz path/to/file
# 排除文件
$ tar -czvf archive.tar.gz /home/user --exclude='*.log'
# 使用tarfile
$ tar -cf archive.tar --files-from=filelist.txt
gzip - gzip压缩工具
作用:压缩和解压文件(.gz格式)。
语法:
gzip [选项] [文件]
示例:
# 压缩文件
$ gzip file.txt
$ ls -l file.txt.gz
# 保持原文件
$ gzip -c file.txt > file.txt.gz
# 解压文件
$ gunzip file.txt.gz
$ gzip -d file.txt.gz
# 解压到标准输出
$ gzip -dc file.txt.gz
# 压缩级别(1-9)
$ gzip -9 file.txt
$ gzip -1 file.txt
# 测试压缩完整性
$ gzip -t file.gz
# 显示压缩比
$ gzip -l file.gz
gunzip - gzip解压工具
作用:解压 .gz 文件。
语法:
gunzip [选项] [文件]
示例:
$ gunzip file.gz
$ gunzip -v file.gz
file.gz: 50.0% -- replaced with file
zip - zip压缩工具
作用:创建 zip 压缩包。
语法:
zip [选项] 归档文件 源文件
示例:
# 压缩文件
$ zip archive.zip file.txt
# 压缩目录
$ zip -r archive.zip /home/user
# 排除文件
$ zip -r archive.zip /home/user -x "*.log"
# 压缩并显示详情
$ zip -rv archive.zip /home/user
# 设置压缩级别
$ zip -9 archive.zip file.txt
# 更新文件
$ zip -u archive.zip newfile.txt
# 加密
$ zip -e archive.zip file.txt
# 分割压缩包
$ zip -s 10m archive.zip -r /home/user
unzip - zip解压工具
作用:解压 zip 文件。
语法:
unzip [选项] 归档文件
示例:
# 解压到当前目录
$ unzip archive.zip
# 解压到指定目录
$ unzip archive.zip -d /tmp/
# 查看内容不解压
$ unzip -l archive.zip
# 测试压缩包
$ unzip -t archive.zip
# 覆盖已存在文件
$ unzip -o archive.zip
# 解压单个文件
$ unzip archive.zip filename
# 解压时显示详情
$ unzip -v archive.zip
# 列出所有文件
$ unzip -l archive.zip
bzip2 - bzip2压缩工具
作用:压缩和解压文件(.bz2格式)。
语法:
bzip2 [选项] [文件]
示例:
# 压缩
$ bzip2 file.txt
$ bzip2 -k file.txt # 保留原文件
# 解压
$ bunzip2 file.txt.bz2
$ bzip2 -d file.txt.bz2
xz - xz压缩工具
作用:高压缩率的压缩工具(.xz格式)。
语法:
xz [选项] [文件]
示例:
# 压缩
$ xz file.txt
$ xz -k file.txt # 保留原文件
# 解压
$ unxz file.txt.xz
$ xz -d file.txt.xz
# 压缩级别
$ xz -9 file.txt
$ xz -0 file.txt
# 测试
$ xz -t file.txt.xz
9. 系统信息与管理
uname - 显示系统信息
作用:显示系统信息。
语法:
uname [选项]
示例:
# 基本信息
$ uname
Linux
# 所有信息
$ uname -a
Linux hostname 5.4.0-74-generic #83-Ubuntu SMP x86_64 GNU/Linux
# 内核版本
$ uname -r
5.4.0-74-generic
# 内核名称
$ uname -s
Linux
# 机器架构
$ uname -m
x86_64
# 处理器类型
$ uname -p
x86_64
# 操作系统
$ uname -o
GNU/Linux
hostname - 显示/设置主机名
作用:显示或设置系统主机名。
语法:
hostname [新主机名]
示例:
# 显示主机名
$ hostname
myserver
# 临时设置(重启失效)
$ hostname newserver
# 显示IP
$ hostname -I
# 显示域名
$ hostname -d
# 永久设置
$ hostnamectl set-hostname newserver
who - 显示登录用户
作用:显示当前登录的用户。
语法:
who [选项]
示例:
# 显示所有登录用户
$ who
user pts/0 2024-05-22 10:30 (192.168.1.100)
root pts/1 2024-05-22 09:00 (:0)
# 显示当前用户
$ whoami
user
# 显示详细信息
$ who -a
$ who -H # 带标题
# 显示用户数
$ who -q
# 显示上次启动时间
$ who -b
system boot 2024-05-20 08:00
whoami - 显示当前用户名
作用:显示当前有效用户名。
语法:
whoami
示例:
$ whoami
user
id - 显示用户和组信息
作用:显示用户ID和组ID。
语法:
id [选项] [用户名]
示例:
# 当前用户信息
$ id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),27(sudo)
# 指定用户信息
$ id root
uid=0(root) gid=0(root) groups=0(root)
# 只显示用户ID
$ id -u
1000
# 只显示组ID
$ id -g
1000
# 显示所有组ID
$ id -G
1000 4 27 46 124 127
# 显示用户名
$ id -un
user
uptime - 显示系统运行时间
作用:显示系统运行时间和负载。
语法:
uptime [选项]
示例:
$ uptime
10:30:00 up 2 days, 2:00, 2 users, load average: 0.52, 0.58, 0.59
$ uptime -p
up 2 days, 2 hours, 30 minutes
$ uptime -s
2024-05-20 08:30:00
dmesg - 显示内核消息
作用:显示或控制内核环形缓冲区消息。
语法:
dmesg [选项]
常用选项:
-T:人类可读时间-w:实时监控-l:过滤级别
示例:
# 查看所有消息
$ dmesg
# 人类可读时间
$ dmesg -T
# 实时监控
$ dmesg -w
# 只显示错误
$ dmesg -T | grep -i error
# 清理缓冲区
$ dmesg -c
# 显示特定级别
$ dmesg -l err
$ dmesg -l warn
free - 显示内存使用情况
作用:显示系统内存使用情况。
语法:
free [选项]
常用选项:
-h:人类可读-m:以MB显示-g:以GB显示-s N:每秒刷新-c N:显示次数
示例:
$ free
total used free shared buff/cache available
Mem: 16384000 8000000 4000000 500000 4384000 7384000
Swap: 2048000 0 2048000
$ free -h
total used free shared buff/cache available
Mem: 15Gi 7.6Gi 3.8Gi 487Mi 4.2Gi 7.0Gi
Swap: 2.0Gi 0B 2.0Gi
# 实时监控
$ free -s 1 -c 10
vmstat - 虚拟内存统计
作用:显示虚拟内存统计信息。
语法:
vmstat [选项] [延迟] [次数]
示例:
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 4000000 12345 67890 0 0 10 20 100 200 5 2 93 0 0
# 每秒刷新
$ vmstat 1
# 每秒刷新10次
$ vmstat 1 10
# 显示详细统计
$ vmstat -d
$ vmstat -a
iostat - CPU和I/O统计
作用:显示CPU和磁盘I/O统计。
语法:
iostat [选项] [延迟] [次数]
示例:
# 基本统计
$ iostat
Linux 5.4.0-74-generic (hostname) 05/22/2024 _x86_64_
avg-cpu: %user %nice %system %iowait %steal %idle
5.23 0.00 2.45 1.23 0.00 91.09
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 10.50 200.50 100.25 500000 250000
# 每秒刷新
$ iostat 1
# 显示详细设备统计
$ iostat -x
$ iostat -p sda
systemctl - 系统服务管理
作用:控制系统和服务管理器。
语法:
systemctl [命令] [服务名]
常用命令:
start:启动服务stop:停止服务restart:重启服务reload:重新加载配置status:查看状态enable:开机启动disable:取消开机启动is-active:检查是否运行is-enabled:检查是否启用
示例:
# 查看服务状态
$ systemctl status nginx
$ systemctl status sshd
# 启动/停止服务
$ sudo systemctl start nginx
$ sudo systemctl stop nginx
# 重启服务
$ sudo systemctl restart nginx
# 重新加载配置
$ sudo systemctl reload nginx
# 开机启动
$ sudo systemctl enable nginx
$ sudo systemctl disable nginx
# 查看运行状态
$ systemctl is-active nginx
active
# 查看启动状态
$ systemctl is-enabled nginx
enabled
# 查看所有运行的服务
$ systemctl list-units --type=service
$ systemctl list-units --type=service --state=running
# 查看失败的单元
$ systemctl --failed
# 电源管理
$ sudo systemctl poweroff
$ sudo systemctl reboot
$ sudo systemctl suspend
$ sudo systemctl hibernate
# 查看依赖
$ systemctl list-dependencies nginx
service - 传统服务管理
作用:运行 System V init 脚本。
语法:
service 服务名 命令
示例:
$ sudo service nginx start
$ sudo service nginx stop
$ sudo service nginx restart
$ sudo service nginx status
# 列出所有服务
$ service --status-all
journalctl - 系统日志查询
作用:查询 systemd 日志。
语法:
journalctl [选项]
常用选项:
-u:指定服务-f:实时追踪-n:显示行数--since:起始时间--until:结束时间
示例:
# 查看所有日志
$ journalctl
# 查看当前启动日志
$ journalctl -b
# 实时追踪
$ journalctl -f
# 查看特定服务日志
$ journalctl -u nginx
$ journalctl -u nginx -u php-fpm
# 按时间查看
$ journalctl --since "2024-05-22 10:00:00"
$ journalctl --since today
$ journalctl --since "-1 hour"
# 查看错误日志
$ journalctl -p err
# 显示最新日志
$ journalctl -n 100
# 显示可执行文件日志
$ journalctl /usr/sbin/nginx
# 查看磁盘使用
$ journalctl --disk-usage
crontab - 定时任务管理
作用:管理定时任务。
语法:
crontab [选项]
时间格式:
* * * * *
分 时 日 月 星期
示例:
# 编辑crontab
$ crontab -e
# 查看crontab
$ crontab -l
# 删除crontab
$ crontab -r
# 编辑指定用户
$ sudo crontab -u username -e
# 查看指定用户crontab
$ sudo crontab -u username -l
# 示例
# 每天凌晨2点执行备份
0 2 * * * /backup/backup.sh
# 每周一早上5点
0 5 * * 1 /backup/weekly.sh
# 每月1号凌晨0点
0 0 1 * * /backup/monthly.sh
# 每5分钟执行
*/5 * * * * /scripts/check.sh
# 每小时第15分钟执行
15 * * * * /scripts/hourly.sh
# 每天10点到18点每小时执行
0 10-18 * * * /scripts/workhours.sh
# 工作日早上9点
0 9 * * 1-5 /scripts/weekday.sh
# 每年的5月22号执行
0 0 22 5 * /annual.sh
10. 网络相关
ping - 测试网络连通性
作用:测试主机之间是否可达。
语法:
ping [选项] 主机
示例:
# 基本用法
$ ping google.com
PING google.com (142.250.185.46) 56(84) bytes of data.
64 bytes from 142.250.185.46: icmp_seq=1 ttl=115 time=15.2 ms
# 指定次数
$ ping -c 4 google.com
# 指定数据包大小
$ ping -s 1000 google.com
# 持续ping直到中断
$ ping -i 2 google.com
# 快速ping
$ ping -f google.com
# 显示详细信息
$ ping -v google.com
traceroute - 路由追踪
作用:显示数据包到达目标主机的路由。
语法:
traceroute [选项] 主机
示例:
# 追踪路由
$ traceroute google.com
# 跳过DNS反向解析
$ traceroute -n google.com
# 指定跳数
$ traceroute -m 20 google.com
# 使用UDP而非ICMP
$ traceroute -U google.com
# 使用TCP
$ traceroute -T google.com
# 等待时间
$ traceroute -w 2 google.com
curl - URL数据传输工具
作用:发送HTTP请求和数据传输。
语法:
curl [选项] [URL]
示例:
# 获取网页
$ curl https://example.com
# 保存到文件
$ curl -o file.html https://example.com
# 显示头部
$ curl -I https://example.com
$ curl -D headers.txt https://example.com
# 发送POST请求
$ curl -X POST -d "name=value" https://api.example.com
$ curl -X POST -F "file=@file.txt" https://api.example.com
# 发送JSON
$ curl -X POST -H "Content-Type: application/json" \
-d '{"name":"test"}' https://api.example.com
# 自定义头部
$ curl -H "Authorization: Bearer token" https://api.example.com
# 跟随重定向
$ curl -L https://short.url
# 显示详细过程
$ curl -v https://example.com
$ curl -vvv https://example.com
# 下载文件
$ curl -O https://example.com/file.zip
# 断点续传
$ curl -C - -O https://example.com/largefile.zip
# 使用代理
$ curl -x http://proxy:8080 https://example.com
# 静默模式
$ curl -s https://example.com
# 限速
$ curl --limit-rate 100k https://example.com/file.zip
# 发送Cookie
$ curl -b "cookie1=value" https://example.com
$ curl -c cookies.txt https://example.com
wget - 文件下载工具
作用:非交互式文件下载器。
语法:
wget [选项] [URL]
示例:
# 基本下载
$ wget https://example.com/file.zip
# 保存为指定名称
$ wget -O output.zip https://example.com/file.zip
# 后台下载
$ wget -b https://example.com/file.zip
# 断点续传
$ wget -c https://example.com/largefile.zip
# 限速
$ wget --limit-rate=100k https://example.com/file.zip
# 递归下载
$ wget -r https://example.com/
# 下载多个文件
$ wget -i filelist.txt
# 镜像网站
$ wget --mirror -p --convert-links https://example.com
# 跟随重定向
$ wget -L https://example.com
# 使用密码
$ wget --user=user --password=pass https://example.com
# 安静模式
$ wget -q https://example.com/file.zip
# 显示进度条
$ wget -nv https://example.com/file.zip
# 指定代理
$ wget -e use_proxy=yes -e http_proxy=proxy:8080 https://example.com
# 自定义用户代理
$ wget -U "Mozilla/5.0" https://example.com
ssh - 安全远程登录
作用:加密的远程登录协议。
语法:
ssh [选项] [用户@]主机 [命令]
示例:
# 基本连接
$ ssh user@hostname
$ ssh hostname
# 指定端口
$ ssh -p 2222 user@hostname
# 使用密钥登录
$ ssh -i ~/.ssh/mykey.pem user@hostname
# 执行远程命令
$ ssh user@hostname "ls -la /home"
# 跳板机
$ ssh -J jumpuser@jump.host user@target.host
# X11转发
$ ssh -X user@hostname
# 详细输出
$ ssh -v user@hostname
# 保持连接
$ ssh -o ServerAliveInterval=60 user@hostname
# 压缩
$ ssh -C user@hostname
scp - 安全复制
作用:通过SSH协议安全复制文件。
语法:
scp [选项] 源 目标
示例:
# 本地到远程
$ scp file.txt user@hostname:/remote/path/
$ scp file.txt user@hostname:/remote/path/newfile.txt
# 远程到本地
$ scp user@hostname:/remote/file.txt /local/path/
# 复制目录
$ scp -r /local/dir user@hostname:/remote/path/
# 指定端口
$ scp -P 2222 file.txt user@hostname:/remote/path/
# 使用密钥
$ scp -i ~/.ssh/mykey.pem file.txt user@hostname:/remote/path/
# 保持文件属性
$ scp -p file.txt user@hostname:/remote/path/
# 压缩传输
$ scp -C file.txt user@hostname:/remote/path/
# 详细输出
$ scp -v file.txt user@hostname:/remote/path/
# 多个文件
$ scp file1.txt file2.txt user@hostname:/remote/path/
rsync - 快速远程同步
作用:快速增量同步文件和目录。
语法:
rsync [选项] 源 目标
示例:
# 基本同步
$ rsync -av /local/dir/ user@hostname:/remote/dir/
# 同步目录(不包含目录本身)
$ rsync -av /local/dir user@hostname:/remote/
# 压缩传输
$ rsync -avz /local/dir user@hostname:/remote/
# 显示差异
$ rsync -avz --dry-run /local/dir/ user@hostname:/remote/dir/
# 排除文件
$ rsync -avz --exclude='*.log' /local/dir/ user@hostname:/remote/
# 删除目标多余文件
$ rsync -avz --delete /local/dir/ user@hostname:/remote/
# 同步符号链接
$ rsync -avzL /local/dir/ user@hostname:/remote/
# 显示进度
$ rsync -avz --progress /local/dir/ user@hostname:/remote/
# 使用SSH端口
$ rsync -avz -e "ssh -p 2222" /local/dir/ user@hostname:/remote/
# 限速
$ rsync -avz --bwlimit=1000 /local/dir/ user@hostname:/remote/
nslookup - DNS查询
作用:查询DNS记录。
语法:
nslookup [主机] [DNS服务器]
示例:
# 查询域名
$ nslookup google.com
# 指定DNS服务器
$ nslookup google.com 8.8.8.8
# 查询MX记录
$ nslookup -type=mx google.com
# 查询其他记录
$ nslookup -type=a google.com
$ nslookup -type=cname www.google.com
$ nslookup -type=txt google.com
$ nslookup -type=ns google.com
dig - DNS查询工具
作用:灵活的DNS查询工具。
语法:
dig [@DNS服务器] 域名 [记录类型]
示例:
# 基本查询
$ dig google.com
# 简短输出
$ dig +short google.com
# 指定DNS服务器
$ dig @8.8.8.8 google.com
# 查询MX记录
$ dig google.com MX
# 查询TXT记录
$ dig google.com TXT
# 追踪DNS解析
$ dig +trace google.com
# 显示所有记录
$ dig google.com ANY
# 反向查询
$ dig -x 8.8.8.8
# 不显示注释
$ dig +nocomments google.com
# 只显示答案
$ dig +noall +answer google.com
telnet - 远程登录(不推荐)
作用:未加密的远程登录和端口测试。
语法:
telnet [主机] [端口]
示例:
# 远程登录
$ telnet hostname
# 测试端口
$ telnet hostname 80
# 测试SMTP
$ telnet mail.example.com 25
nc (netcat) - 网络瑞士军刀
作用:读写网络连接。
语法:
nc [选项] [主机] [端口]
示例:
# 测试端口
$ nc -zv hostname 80
Connection to hostname 80 port [tcp/http] succeeded!
# 扫描端口范围
$ nc -zv hostname 20-30
# 监听端口
$ nc -l 8080
# 文件传输
$ nc -l 8080 < file.txt # 发送端
$ nc hostname 8080 > file.txt # 接收端
# 简单聊天
$ nc -l 8080 # 服务器
$ nc hostname 8080 # 客户端
# 执行命令
$ nc -l 8080 -e /bin/bash # 服务器
$ nc hostname 8080 # 客户端(获得shell)
# 端口重定向
$ nc -l 8080 | nc targethost 80
ifconfig - 网络接口配置
作用:配置和显示网络接口参数。
语法:
ifconfig [接口] [选项]
示例:
# 显示所有接口
$ ifconfig
$ ifconfig -a
# 显示特定接口
$ ifconfig eth0
# 启用接口
$ sudo ifconfig eth0 up
# 禁用接口
$ sudo ifconfig eth0 down
# 设置IP地址
$ sudo ifconfig eth0 192.168.1.100
# 设置子网掩码
$ sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 设置MAC地址
$ sudo ifconfig eth0 hw ether 00:11:22:33:44:55
# 添加别名
$ sudo ifconfig eth0:0 192.168.1.101
# 显示详细
$ ifconfig -v eth0
ip - 网络配置工具
作用:更强大的网络配置工具(推荐)。
语法:
ip [选项] 对象 [命令]
对象:link, addr, route, neigh, rule
示例:
# 显示所有接口
$ ip link show
$ ip link list
# 显示IP Address
$ ip addr show
$ ip a
# 添加IP地址
$ sudo ip addr add 192.168.1.100/24 dev eth0
# 删除IP地址
$ sudo ip addr del 192.168.1.100/24 dev eth0
# 启用/禁用接口
$ sudo ip link set eth0 up
$ sudo ip link set eth0 down
# 设置MAC地址
$ sudo ip link set eth0 address 00:11:22:33:44:55
# 显示路由表
$ ip route show
$ ip r
# 添加路由
$ sudo ip route add 192.168.2.0/24 via 192.168.1.1
$ sudo ip route add default via 192.168.1.1
# 删除路由
$ sudo ip route del 192.168.2.0/24
# 显示邻居表
$ ip neigh show
# 添加静态ARP
$ sudo ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0
# 监控网络
$ ip monitor all
11. 权限与用户
chmod - 改变文件权限
作用:更改文件或目录的访问权限。
语法:
chmod [选项] 权限 文件
权限表示:
-
符号表示:
u(所有者)、g(组)、o(其他)、a(所有) -
操作符:
+(添加)、-(删除)、=(设置) -
权限位:
r(读)、w(写)、x(执行) -
数字表示:
r=4,w=2,x=1- 7 = rwx
- 6 = rw-
- 5 = r-x
- 4 = r–
- 0 = —
示例:
# 添加执行权限
$ chmod +x script.sh
# 所有者添加写权限
$ chmod u+w file.txt
# 设置完整权限
$ chmod 755 script.sh # rwxr-xr-x
$ chmod 644 file.txt # rw-r--r--
$ chmod 700 secret # rwx------
$ chmod 600 private.key # rw-------
# 递归设置
$ chmod -R 755 /var/www/html
# 只设置目录
$ chmod -R u+rwX /path
# 复制权限
$ chmod --reference=file1.txt file2.txt
# 符号方式
$ chmod u=rwx,g=rx,o=r file.sh
$ chmod a+x file.sh
$ chmod u-x,g+w file.sh
# 设置特殊权限
$ chmod 4755 file # SUID
$ chmod 2755 directory # SGID
$ chmod 1755 directory # Sticky bit
chown - 改变文件所有者
作用:更改文件或目录的所有者和所属组。
语法:
chown [选项] [所有者][:组] 文件
示例:
# 更改所有者
$ sudo chown user file.txt
# 更改所有者和组
$ sudo chown user:group file.txt
$ sudo chown user.group file.txt
# 更改组
$ sudo chown :group file.txt
$ sudo chgrp group file.txt
# 递归更改
$ sudo chown -R user:group /var/www/html
# 复制所有权
$ sudo chown --reference=file1.txt file2.txt
# 只更改用户
$ sudo chown user file.txt
# 更改组
$ sudo chown :group file.txt
chgrp - 改变文件所属组
作用:更改文件或目录的所属组。
语法:
chgrp [选项] 组 文件
示例:
# 更改组
$ chgrp developers project/
# 递归更改
$ chgrp -R developers /var/www/html
# 复制组
$ chgrp --reference=file1.txt file2.txt
useradd - 创建用户
作用:创建新的用户账户。
语法:
sudo useradd [选项] 用户名
示例:
# 基本创建
$ sudo useradd username
# 创建并指定主目录
$ sudo useradd -m username
# 指定shell
$ sudo useradd -m -s /bin/bash username
# 指定UID
$ sudo useradd -u 1500 username
# 指定组
$ sudo useradd -g developers username
$ sudo useradd -G sudo,www-data username
# 创建系统用户
$ sudo useradd -r systemuser
# 完整示例
$ sudo useradd -m -s /bin/bash -G sudo,developers -c "John Doe" john
userdel - 删除用户
作用:删除用户账户。
语法:
sudo userdel [选项] 用户名
示例:
# 删除用户
$ sudo userdel username
# 删除用户及主目录
$ sudo userdel -r username
# 强制删除(即使已登录)
$ sudo userdel -f username
usermod - 修改用户账户
作用:修改现有用户账户属性。
语法:
sudo usermod [选项] 用户名
示例:
# 更改用户名
$ sudo usermod -l newname oldname
# 添加组
$ sudo usermod -aG groupname username
# 更改主目录
$ sudo usermod -d /new/home -m username
# 更改shell
$ sudo usermod -s /bin/zsh username
# 锁定账户
$ sudo usermod -L username
# 解锁账户
$ sudo usermod -U username
# 设置到期日期
$ sudo usermod -e 2025-12-31 username
# 修改UID
$ sudo usermod -u 1500 username
passwd - 设置密码
作用:更改用户密码。
语法:
passwd [选项] [用户名]
示例:
# 更改当前用户密码
$ passwd
# 更改其他用户密码(需要root)
$ sudo passwd username
# 删除密码
$ sudo passwd -d username
# 锁定账户
$ sudo passwd -l username
# 解锁账户
$ sudo passwd -u username
# 设置密码过期
$ sudo passwd -x 90 username # 90天后过期
$ sudo passwd -x 0 username # 立即过期
$ sudo passwd -x -1 username # 永不过期
# 查看密码状态
$ sudo passwd -S username
su - 切换用户
作用:切换到另一个用户身份。
语法:
su [选项] [用户]
示例:
# 切换到root
$ su
# 切换到指定用户
$ su username
# 切换并执行命令
$ su -c "command" username
# 切换到用户并加载环境
$ su - username
# 使用root执行单个命令
$ sudo command
sudo - 以root身份执行命令
作用:以其他用户(通常是root)身份执行命令。
语法:
sudo [选项] 命令
示例:
# 执行命令
$ sudo apt update
$ sudo systemctl restart nginx
# 编辑文件
$ sudo -e /etc/hosts
$ sudo vim /etc/hosts
# 以其他用户身份运行
$ sudo -u username command
# 列出权限
$ sudo -l
# 切换到root shell
$ sudo -i
$ sudo su
# 查看sudo日志
$ sudo cat /var/log/auth.log | grep sudo
# 免密码执行
$ sudo -n command
groupadd - 创建组
作用:创建新的用户组。
语法:
sudo groupadd [选项] 组名
示例:
# 创建组
$ sudo groupadd developers
# 创建系统组
$ sudo groupadd -r systemgroup
# 指定GID
$ sudo groupadd -g 1500 developers
12. 文本处理
awk - 文本分析和处理
作用:强大的文本分析工具,适合模式扫描和处理。
语法:
awk [选项] '模式 {操作}' 文件
示例:
# 打印列
$ awk '{print $1}' file.txt # 打印第一列
$ awk '{print $1, $3}' file.txt # 打印第1、3列
# 指定分隔符
$ awk -F: '{print $1}' /etc/passwd
$ awk -F',' '{print $2}' file.csv
# 模式匹配
$ awk '/error/ {print $0}' logfile
$ awk '$3 > 100 {print $0}' file.txt
# 条件判断
$ awk '{if ($3 > 100) print "High:", $0}' file.txt
# 计算
$ awk '{sum += $2} END {print sum}' file.txt
# 内置变量
$ awk '{print NR, $0}' file.txt # NR: 行号
$ awk '{print NF, $0}' file.txt # NF: 字段数
# 多文件处理
$ awk 'NR==FNR {sum1+=$2} NR!=FNR {sum2+=$2} END {print sum1, sum2}' f1 f2
# 输出格式
$ awk '{printf "%-10s %10.2f\n", $1, $2}' file.txt
# BEGIN/END块
$ awk 'BEGIN {print "Start"} {print} END {print "End"}' file.txt
# 复杂示例
$ awk -F: '{
if ($3 >= 1000) print "User:", $1, "UID:", $3
else print "System:", $1
}' /etc/passwd
# 计算平均值
$ awk '{sum+=$2; count++} END {print "Average:", sum/count}' file.txt
# 统计出现次数
$ awk '{count[$1]++} END {for (word in count) print word, count[word]}' file.txt
# 替换
$ awk '{gsub(/old/, "new"); print}' file.txt
sed - 流编辑器
作用:用于对文本进行替换、删除、插入等操作。
语法:
sed [选项] '命令' 文件
常用命令:
s:替换d:删除p:打印i:插入a:追加c:替换行
示例:
# 替换(每行第一个匹配)
$ sed 's/old/new/' file.txt
# 全局替换
$ sed 's/old/new/g' file.txt
# 指定行替换
$ sed '3s/old/new/' file.txt
$ sed '1,5s/old/new/g' file.txt
# 替换多个模式
$ sed -e 's/a/A/g' -e 's/b/B/g' file.txt
# 删除行
$ sed '3d' file.txt # 删除第3行
$ sed '1,5d' file.txt # 删除1-5行
$ sed '/pattern/d' file.txt # 删除匹配行
# 打印行
$ sed -n '3p' file.txt # 打印第3行
$ sed -n '1,5p' file.txt # 打印1-5行
$ sed -n '/pattern/p' file.txt # 打印匹配行
# 插入
$ sed '3i\New line' file.txt # 在第3行前插入
$ sed '1a\New line' file.txt # 在第1行后追加
# 替换整行
$ sed '3c\Replacement line' file.txt
# 原位编辑
$ sed -i 's/old/new/g' file.txt # 直接修改文件
$ sed -i.bak 's/old/new/g' file.txt # 备份后修改
# 使用正则
$ sed 's/[0-9]*/NUM/g' file.txt
$ sed 's/^/START: /' file.txt # 行首添加
$ sed 's/$/ :END/' file.txt # 行尾添加
# 引用shell变量
$ var="value"
$ sed "s/pattern/$var/g" file.txt
# 从文件读取命令
$ sed -f commands.sed file.txt
# 组合示例
$ sed -n '10,20p' file.txt | sed 's/error/ERROR/g'
$ ls -l | sed '1d' # 去掉第一行
sort - 排序文本
作用:对文本行进行排序。
语法:
sort [选项] 文件
常用选项:
-r:逆序-n:数字排序-k:按字段排序-t:指定分隔符-u:去重-f:忽略大小写
示例:
# 基本排序
$ sort file.txt
# 逆序
$ sort -r file.txt
# 数字排序
$ sort -n numbers.txt
$ sort -n -r numbers.txt
# 按字段排序
$ sort -t: -k3 -n /etc/passwd # 按UID排序
# 去重
$ sort -u file.txt
# 忽略大小写
$ sort -f file.txt
# 输出到文件
$ sort -o sorted.txt file.txt
# 合并已排序文件
$ sort -m file1.txt file2.txt
# 检查是否已排序
$ sort -c file.txt
# 多字段排序
$ sort -k2,2 -k3,3n file.txt
# 人类可读数字(1K, 2M等)
$ sort -h file.txt
uniq - 报告或忽略重复行
作用:显示或过滤重复的行。
语法:
uniq [选项] [输入] [输出]
示例:
# 基本去重
$ uniq file.txt
# 计数
$ uniq -c file.txt
3 duplicate line
1 unique line
# 只显示重复行
$ uniq -d file.txt
# 只显示未重复行
$ uniq -u file.txt
# 忽略大小写
$ uniq -i file.txt
# 跳过字段
$ uniq -f 1 file.txt
# 跳过字符
$ uniq -s 3 file.txt
# 组合使用(排序后去重计数)
$ sort file.txt | uniq -c | sort -rn
wc - 统计字节、字、行数
作用:统计文件的行数、字数、字节数。
语法:
wc [选项] 文件
示例:
# 基本统计
$ wc file.txt
100 500 3000 file.txt
# 行数 字数 字节数
# 只显示行数
$ wc -l file.txt
# 只显示字数
$ wc -w file.txt
# 只显示字节数
$ wc -c file.txt
# 显示最长行长度
$ wc -L file.txt
# 统计多个文件
$ wc file1.txt file2.txt
# 标准输入
$ cat file.txt | wc -l
$ ls | wc -l
cut - 剪切文件列
作用:从每行中提取指定字段。
语法:
cut [选项] 文件
示例:
# 按字节
$ cut -b 1-5 file.txt
# 按字符
$ cut -c 1-10 file.txt
# 按字段
$ cut -d: -f1 /etc/passwd # 第一个字段
$ cut -d, -f1,3 file.csv # 第1、3字段
# 范围
$ cut -d: -f1-3 /etc/passwd # 1到3字段
# 补集
$ cut -d: -f1 --complement /etc/passwd
# 更改分隔符
$ cut -d' ' -f1-3 file.txt
# 从文件列表
$ cut -d: -f1 /etc/passwd | sort
tr - 字符转换
作用:转换或删除字符。
语法:
tr [选项] 集合1 [集合2]
示例:
# 大写转小写
$ echo "HELLO" | tr 'A-Z' 'a-z'
hello
# 小写转大写
$ echo "hello" | tr 'a-z' 'A-Z'
HELLO
# 删除字符
$ echo "hello123" | tr -d '0-9'
hello
# 删除重复字符
$ echo "hellloooo" | tr -s 'o'
helllo
# 压缩字符
$ echo "aaabbbccc" | tr -s 'a-z'
abbbccc
# 删除控制字符
$ cat file.txt | tr -d '\r'
# 替换集合
$ echo "abc" | tr 'abc' '123'
123
# 使用POSIX字符类
$ cat file.txt | tr '[:upper:]' '[:lower:]'
$ cat file.txt | tr '[:space:]' '\t'
# 补集
$ echo "a1b2c3" | tr -c '0-9' '\n'
# 删除非数字
$ echo "abc123def456" | tr -cd '0-9'
123456
diff - 比较文件差异
作用:比较两个文件的差异。
语法:
diff [选项] 文件1 文件2
示例:
# 基本比较
$ diff file1.txt file2.txt
# 统一格式
$ diff -u file1.txt file2.txt
# 并排格式
$ diff -y file1.txt file2.txt
# 忽略大小写
$ diff -i file1.txt file2.txt
# 忽略空格
$ diff -w file1.txt file2.txt
# 只显示是否不同
$ diff -q file1.txt file2.txt
# 递归比较
$ diff -r dir1 dir2
# 排除文件
$ diff -r -x "*.txt" dir1 dir2
# 忽略空白行
$ diff -B file1.txt file2.txt
# 创建补丁
$ diff -u file1.txt file2.txt > patch.diff
# 应用补丁
$ patch -p1 < patch.diff
# 版本比较(显示上下文)
$ diff -c file1.txt file2.txt
comm - 逐行比较两个排序文件
作用:逐行比较两个已排序的文件。
语法:
comm [选项] 文件1 文件2
输出三列:
- 第1列:只在文件1中
- 第2列:只在文件2中
- 第3列:两文件共有
示例:
# 基本比较
$ comm file1.txt file2.txt
# 隐藏列
$ comm -1 file1.txt file2.txt # 隐藏第1列
$ comm -2 file1.txt file2.txt # 隐藏第2列
$ comm -3 file1.txt file2.txt # 隐藏第3列
# 只显示共同行
$ comm -12 file1.txt file2.txt
# 只显示只在file1中的行
$ comm -23 file1.txt file2.txt
# 只显示只在file2中的行
$ comm -13 file1.txt file2.txt
13. 进程与作业控制
jobs - 显示作业列表
作用:显示当前终端的后台作业。
语法:
jobs [选项]
示例:
# 查看后台作业
$ jobs
[1]- Running sleep 100 &
[2]+ Stopped vim file.txt
# 显示PID
$ jobs -l
[1]- 12345 Running sleep 100 &
[2]+ 12346 Stopped vim file.txt
# 显示进程组ID
$ jobs -p
# 运行状态
$ jobs -r # 只显示运行中的
$ jobs -s # 只显示停止的
fg - 将作业放到前台
作用:将后台作业放到前台运行。
语法:
fg [作业号]
示例:
# 将最近的后台作业放到前台
$ fg
# 将指定作业放到前台
$ fg %1
# 按名称
$ fg %vim
bg - 将作业放到后台
作用:将停止的作业在后台继续运行。
语法:
bg [作业号]
示例:
# 挂起当前作业
$ Ctrl+Z
# 将挂起的作业在后台运行
$ bg
# 指定作业
$ bg %1
nohup - 不挂断运行命令(后台运行进程)
作用:即使终端关闭,命令也继续运行。
语法:
nohup 命令 &
示例:
# 后台运行
$ nohup ./script.sh &
# 指定输出
$ nohup ./script.sh > output.log 2>&1 &
# 组合示例
$ nohup ./backup.sh > /var/log/backup.log 2>&1 &
# 查看是否在运行
$ ps aux | grep backup
screen - 终端多路复用器
作用:创建多个终端会话,支持断开后重新连接。
语法:
screen [选项] [命令]
常用选项:
-S:命名会话-ls:列出所有会话-r:重新连接-d:分离会话-x:附加到已连接会话
示例:
# 创建新会话
$ screen
# 创建命名会话
$ screen -S mysession
# 列出所有会话
$ screen -ls
There is a screen on:
12345.mysession (Detached)
12346.oldsession (Attached)
# 分离会话
$ Ctrl+A D
# 重新连接
$ screen -r mysession
$ screen -r 12345
# 强制重新连接
$ screen -d -r mysession
# 附加到已连接会话
$ screen -x mysession
# 创建并执行命令
$ screen -S backup ./backup.sh
# 在screen中常用快捷键
# Ctrl+A D - 分离
# Ctrl+A C - 创建新窗口
# Ctrl+A N - 下一个窗口
# Ctrl+A P - 上一个窗口
# Ctrl+A " - 窗口列表
# Ctrl+A K - 关闭当前窗口
# Ctrl+A \ - 关闭所有窗口并终止会话
tmux - 终端多路复用器(现代版)
作用:比 screen 更现代的终端管理器。
语法:
tmux [命令] [参数]
常用命令:
new:创建新会话attach:连接会话detach:分离ls:列表kill-server:关闭服务器
示例:
# 创建新会话
$ tmux
# 创建命名会话
$ tmux new -s mysession
# 列出会话
$ tmux ls
# 分离
$ Ctrl+B D
# 连接会话
$ tmux attach
$ tmux attach -t mysession
# 在会话中执行命令
$ tmux new -d -s mysession './script.sh'
# 发送命令到窗口
$ tmux send-keys -t mysession:0 './script.sh' C-m
# 窗口操作
$ Ctrl+B C # 创建窗口
$ Ctrl+B N # 下一个窗口
$ Ctrl+B P # 上一个窗口
$ Ctrl+B L # 上一个窗口
$ Ctrl+B 0-9 # 切换窗口
$ Ctrl+B & # 关闭窗口
# 窗格操作
$ Ctrl+B % # 垂直分割
$ Ctrl+B " # 水平分割
$ Ctrl+B O # 切换窗格
$ Ctrl+B X # 关闭窗格
$ Ctrl+B Z # 最大化/恢复窗格
# 其他操作
$ tmux kill-session -t mysession
$ tmux kill-server
# 配置示例
$ cat ~/.tmux.conf
set -g mouse on
set -g prefix C-a
bind C-a send-prefix
14. 帮助与文档
man - 显示命令手册
作用:显示命令的详细帮助文档。
语法:
man [选项] 命令
常用选项:
-k:搜索手册-f:简要说明-a:显示所有匹配章节
示例:
# 查看命令手册
$ man ls
$ man grep
$ man ssh
# 搜索手册
$ man -k "copy files"
$ man -k "network"
# 查看所有章节
$ man -a ls
# 指定章节
$ man 5 passwd
# 显示简要说明
$ man -f ls
ls (1) - list directory contents
# 其他
$ man man # 查看man命令本身
$ man 2 read # 系统调用
$ man 3 printf # C库函数
info - 显示GNU info文档
作用:比 man 更详细的超文本帮助系统。
语法:
info [命令]
示例:
$ info ls
$ info emacs
$ info grep
# 导航
# n - 下一个节点
# p - 上一个节点
# u - 上一层
# m - 选择菜单项
# q - 退出
–help - 命令内置帮助
作用:显示命令的简要帮助信息。
语法:
命令 --help
示例:
$ ls --help
$ grep --help
$ tar --help
whatis - 显示命令简介
作用:显示命令的简要说明(一行)。
语法:
whatis 命令
示例:
$ whatis ls
ls (1) - list directory contents
$ whatis grep sed awk
grep (1) - print lines matching a pattern
sed (1) - stream editor for filtering and transforming text
awk (1) - pattern scanning and processing language
# 更新whatis数据库
$ sudo mandb
附录:常用快捷键
Bash 快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl+C | 终止当前命令 |
Ctrl+Z | 挂起当前命令 |
Ctrl+D | 退出当前shell/EOF |
Ctrl+L | 清屏 |
Ctrl+U | 删除光标前所有 |
Ctrl+K | 删除光标后所有 |
Ctrl+W | 删除光标前单词 |
Ctrl+A | 跳到行首 |
Ctrl+E | 跳到行尾 |
Ctrl+R | 搜索历史命令 |
Ctrl+S | 暂停输出 |
Ctrl+Q | 恢复输出 |
Tab | 自动补全 |
Tab Tab | 显示所有补全选项 |
附录:常用系统路径
| 路径 | 说明 |
|---|---|
/ | 根目录 |
/home | 用户主目录 |
/root | root用户主目录 |
/etc | 系统配置文件 |
/var | 变量数据(日志、缓存) |
/usr | 用户程序 |
/bin | 基本命令 |
/sbin | 系统管理命令 |
/tmp | 临时文件 |
/proc | 进程信息(虚拟) |
/dev | 设备文件 |
/mnt | 挂载点 |
/media | 可移动媒体 |
更多推荐


所有评论(0)