12类Linux常用命令
目录
一、引言:为什么需要学习 Linux 命令?
二、文件与目录管理命令
1. ls:列出目录内容
2. cd:切换目录
3. pwd:显示当前目录路径
4. mkdir:创建目录
5. touch:创建空文件或修改时间戳
6. cp:复制文件或目录
7. mv:移动文件或目录(重命名)
8. rm:删除文件或目录
9. ln:创建链接文件
三、文本处理命令
1. cat:查看文件内容(正序)
2. tac:查看文件内容(倒序)
3. more:分页查看文件内容
4. less:分页查看文件内容(增强版)
5. head:查看文件开头内容
6. tail:查看文件结尾内容
7. grep:文本搜索工具
8. sed:流编辑器
9. awk:文本分析工具
10. sort:排序文本行
11. uniq:去重文本行
12. wc:统计文本信息
13. cut:提取列
14. tr:字符替换或删除
四、用户与权限管理命令
1. useradd:创建用户
2. userdel:删除用户
3. usermod:修改用户属性
4. passwd:修改用户密码
5. groupadd:创建用户组
6. groupdel:删除用户组
7. su:切换用户
8. sudo:以其他用户身份执行命令
9. chmod:修改文件/目录权限
10. chown:修改文件/目录所有者
11. chgrp:修改文件/目录所属组
五、进程管理命令
1. ps:查看进程状态
2. top:动态监控进程
3. htop:增强版进程监控工具
4. kill:终止进程
5. pkill:按进程名终止进程
6. jobs:查看后台任务
7. fg:将后台任务切换到前台
8. bg:将挂起的后台任务恢复运行
9. nohup:让进程在后台持续运行
六、网络管理命令
1. ifconfig:配置网络接口(传统工具)
2. ip:网络配置工具(新一代)
3. ping:测试网络连通性
4. traceroute:跟踪网络路由
5. netstat:查看网络状态(传统工具)
6. ss:查看网络状态(新一代)
7. ssh:远程登录
8. scp:远程拷贝文件
9. wget:下载文件
10. curl:数据传输工具
七、系统信息查询命令
1. uname:查看内核信息
2. hostname:查看或设置主机名
3. uptime:查看系统负载和运行时间
4. free:查看内存使用情况
5. df:查看磁盘分区使用情况
6. du:查看目录或文件大小
7. lscpu:查看 CPU 信息
八、软件包管理命令
1. apt(Debian/Ubuntu 系)
2. yum(RHEL/CentOS 6/7)
3. dnf(RHEL/CentOS 8+、Fedora)
4. pacman(Arch Linux)
5. dpkg(Debian/Ubuntu 底层工具)
6. rpm(RHEL/CentOS 底层工具)
九、磁盘管理命令
1. fdisk:磁盘分区工具
2. mkfs:格式化文件系统
3. mount:挂载文件系统
4. umount:卸载文件系统
5. df:查看磁盘使用情况(已介绍,略)
6. du:查看目录大小(已介绍,略)
7. lsblk:查看块设备信息(已介绍,略)
8. parted:高级分区工具
十、压缩与解压命令
1. tar:归档工具
2. gzip:压缩/解压 .gz 文件
3. bzip2:压缩/解压 .bz2 文件
4. xz:压缩/解压 .xz 文件
5. zip/unzip:压缩/解压 .zip 文件
十一、其他实用命令
1. history:查看命令历史
2. alias/unalias:命令别名
3. crontab:定时任务
4. date:查看/设置系统时间
5. cal:显示日历
6. which:查找命令路径
7. whereis:查找命令相关文件
8. man:查看命令手册
9. info:查看命令信息
10. echo:输出文本
11. clear:清屏
12. exit:退出 Shell
十二、学习建议
一、引言:为什么需要学习 Linux 命令?
Linux 命令行(通常通过 Bash、Zsh 等 Shell 实现)是 Linux 系统的“灵魂”。与图形界面(GUI)相比,命令行具有以下优势:
-
1. 高效性:通过简单命令即可完成复杂操作,无需多次点击鼠标。
-
2. 自动化:结合脚本(如 Shell 脚本)可实现任务自动化,减少重复劳动。
-
3. 远程管理:通过 SSH 等工具可远程管理服务器,无需物理接触。
-
4. 资源占用低:命令行界面资源消耗远小于图形界面,适合服务器等资源受限环境。
-
5. 灵活性:命令组合(如管道、重定向)可实现复杂功能,远超图形界面的固定操作。
学习 Linux 命令需要理解“命令 + 选项 + 参数”的基本结构。例如:ls -l /home
中,ls
是命令(列出目录内容),-l
是选项(长格式显示),/home
是参数(操作对象)。
二、文件与目录管理命令
文件和目录是 Linux 系统中最基本的操作对象,相关命令是日常使用最频繁的工具。
1. ls
:列出目录内容
功能:显示指定目录中的文件和子目录信息。
语法:ls [选项] [目录/文件]
常用选项:
-
•
-l
:以长格式显示(包含权限、所有者、大小、修改时间等)。 -
•
-a
:显示所有文件(包括隐藏文件,以.
开头的文件)。 -
•
-h
:以人类可读格式显示文件大小(如K
、M
、G
)。 -
•
-d
:仅显示目录本身信息,而非目录内容。 -
•
-i
:显示文件的 inode(索引节点号)。 -
•
-r
:逆序显示。 -
•
-t
:按修改时间排序(最新在前)。
示例:
# 显示当前目录下的所有文件(包括隐藏文件),长格式且人类可读大小
$ ls -lah
total 32K
drwxr-xr-x 4 user group 4.0K Jan 15 10:30 .
drwxr-xr-x 5 root root 4.0K Jan 10 09:15 ..
-rw------- 1 user group 256 Jan 12 14:20 .bash_history
-rw-r--r-- 1 user group 220 Jan 10 09:15 .bash_logout
-rw-r--r-- 1 user group 3.7K Jan 10 09:15 .bashrc
drwxr-xr-x 2 user group 4.0K Jan 15 10:30 documents
-rw-r--r-- 1 user group 512 Jan 15 10:25 notes.txt# 显示 /home 目录本身的信息(而非内容)
$ ls -ld /home
drwxr-xr-x 5 root root 4.0K Jan 10 09:15 /home# 按修改时间逆序显示当前目录文件(最旧在前)
$ ls -lrt
2. cd
:切换目录
功能:更改当前工作目录。
语法:cd [目录路径]
特殊路径:
-
•
~
:用户主目录(等同于/home/用户名
,root 用户为/root
)。 -
•
-
:上一次所在的目录(类似“后退”功能)。 -
•
..
:上级目录。 -
•
.
:当前目录(较少使用,通常可省略)。
示例:
# 切换到用户主目录
$ cd ~
# 或直接
$ cd# 切换到上级目录
$ cd ..# 切换到上一次所在的目录
$ cd -# 切换到绝对路径 /var/log
$ cd /var/log
3. pwd
:显示当前目录路径
功能:打印当前工作目录的绝对路径。
语法:pwd [选项]
常用选项:-P
(显示物理路径,解析符号链接)。
示例:
$ pwd
/home/user/documents# 若当前目录是符号链接,-P 选项显示实际路径
$ ln -s /var/log /home/user/log_link
$ cd log_link
$ pwd
/home/user/log_link
$ pwd -P
/var/log
4. mkdir
:创建目录
功能:创建新的目录。
语法:mkdir [选项] 目录名
常用选项:-p
(递归创建多级目录,若父目录不存在则自动创建)。
示例:
# 创建单个目录
$ mkdir test_dir# 递归创建多级目录(若 parent_dir 不存在,会自动创建)
$ mkdir -p parent_dir/child_dir/grandchild_dir# 创建目录并设置权限(如 755)
$ mkdir -m 755 new_dir
5. touch
:创建空文件或修改时间戳
功能:
-
• 若文件不存在,创建空文件;
-
• 若文件存在,修改文件的访问时间(atime)和修改时间(mtime)为当前时间。
语法:touch [选项] 文件名
常用选项: -
•
-a
:仅修改访问时间。 -
•
-m
:仅修改修改时间。 -
•
-t
:指定时间戳(格式[[CC]YY]MMDDhhmm[.ss]
)。
示例:
# 创建空文件
$ touch new_file.txt# 批量创建多个文件
$ touch file1.txt file2.txt file3.txt# 仅修改文件的访问时间为当前时间
$ touch -a existing_file.txt# 指定修改文件的时间戳为 2023年1月1日12:00
$ touch -t 202301011200.00 old_file.txt
6. cp
:复制文件或目录
功能:将文件或目录复制到指定位置。
语法:cp [选项] 源文件/目录 目标文件/目录
常用选项:
-
•
-r
/-R
:递归复制目录(复制目录时必须使用)。 -
•
-i
:覆盖前提示确认(interactive 模式)。 -
•
-p
:保留源文件的权限、所有者、时间戳等属性。 -
•
-a
:归档模式,等同于-dpR
,保留所有属性(常用于备份)。 -
•
-v
:显示复制过程的详细信息。
示例:
# 复制文件到目标目录(目标目录存在)
$ cp file.txt /tmp/# 复制文件并重命名(目标目录不存在,则重命名)
$ cp file.txt new_file.txt# 递归复制目录(保留属性)
$ cp -av source_dir/ /backup/source_dir_backup# 覆盖前提示确认
$ cp -i file.txt /tmp/file.txt
cp: overwrite '/tmp/file.txt'? y
7. mv
:移动文件或目录(重命名)
功能:
-
• 将文件或目录移动到指定位置;
-
• 若目标位置与源位置相同,则实现重命名。
语法:mv [选项] 源文件/目录 目标文件/目录
常用选项:-i
(覆盖前提示确认),-v
(显示移动过程)。
示例:
# 移动文件到目录
$ mv file.txt /tmp/# 重命名文件
$ mv old_name.txt new_name.txt# 移动目录并重命名
$ mv source_dir/ /backup/new_source_dir# 覆盖前提示确认
$ mv -i file.txt /tmp/file.txt
mv: overwrite '/tmp/file.txt'? y
8. rm
:删除文件或目录
功能:删除文件或目录(删除后不可恢复,需谨慎操作!)。
语法:rm [选项] 文件/目录
常用选项:
-
•
-r
/-R
:递归删除目录(删除目录时必须使用)。 -
•
-f
:强制删除,不提示确认(force 模式)。 -
•
-i
:删除前提示确认(interactive 模式,默认对普通文件不提示,需配合-i
)。
示例:
# 删除文件(默认不提示)
$ rm file.txt# 删除前提示确认
$ rm -i file.txt
rm: remove regular file 'file.txt'? y# 递归删除目录(强制删除,不提示)
$ rm -rf temp_dir/# 危险操作!切勿执行:强制删除根目录下的所有文件(系统会崩溃)
# $ rm -rf /
9. ln
:创建链接文件
功能:创建文件或目录的链接(链接分为硬链接和软链接/符号链接)。
语法:ln [选项] 源文件 链接文件
链接类型:
-
• 硬链接:通过 inode(文件的唯一标识)链接,与源文件指向同一数据块,删除源文件不影响硬链接(除非所有硬链接均被删除)。不能跨文件系统创建,不能对目录创建。
-
• 软链接:类似于 Windows 的快捷方式,存储源文件的路径,删除源文件后软链接失效(显示为红色闪烁)。可跨文件系统,可对目录创建。
常用选项:-s
(创建软链接,默认创建硬链接)。
示例:
# 创建硬链接
$ ln source_file.txt hard_link.txt
# 查看硬链接与源文件的 inode(相同)
$ ls -i source_file.txt hard_link.txt
123456 source_file.txt
123456 hard_link.txt# 创建软链接
$ ln -s /var/log/syslog syslog_link
# 查看软链接(显示链接目标)
$ ls -l syslog_link
lrwxrwxrwx 1 user group 12 Jan 15 11:00 syslog_link -> /var/log/syslog# 删除源文件后,软链接失效
$ rm /var/log/syslog
$ ls -l syslog_link
lrwxrwxrwx 1 user group 12 Jan 15 11:00 syslog_link -> /var/log/syslog
三、文本处理命令
Linux 系统中,配置文件、日志文件等均为文本文件,文本处理命令是日常运维的核心工具。
1. cat
:查看文件内容(正序)
功能:将文件内容输出到标准输出(终端),适合查看小文件。
语法:cat [选项] 文件
常用选项:-n
(显示行号),-A
(显示所有字符,包括制表符 ^I
和换行符 $
)。
示例:
# 查看 /etc/os-release 文件内容(系统版本信息)
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy# 查看文件并显示行号
$ cat -n /etc/passwd | head -51 root:x:0:0:root:/root:/bin/bash2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin3 bin:x:2:2:bin:/bin:/usr/sbin/nologin4 sys:x:3:3:sys:/dev:/usr/sbin/nologin5 sync:x:4:65534:sync:/bin:/bin/sync
2. tac
:查看文件内容(倒序)
功能:与 cat
相反,将文件内容按行倒序输出(最后一行先显示)。
语法:tac [选项] 文件
示例:
# 倒序查看 /etc/passwd 的最后 5 行
$ tac /etc/passwd | head -5
user:x:1000:1000:user,,,:/home/user:/bin/bash
sshd:x:125:65534::/run/sshd:/usr/sbin/nologin
systemd-network:x:124:124:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:123:124:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
messagebus:x:122:124::/nonexistent:/usr/sbin/nologin
3. more
:分页查看文件内容
功能:分页显示大文件内容,支持翻页、退出等操作(不可向上翻页)。
语法:more 文件
操作快捷键:
-
•
空格
/f
:向下翻一页。 -
•
Enter
:向下翻一行。 -
•
q
:退出查看。 -
•
b
:向上翻一页(部分版本支持)。
示例:
# 分页查看大日志文件 /var/log/syslog
$ more /var/log/syslog
4. less
:分页查看文件内容(增强版)
功能:比 more
更强大的分页查看工具,支持向上/向下翻页、搜索、跳转等。
语法:less 文件
操作快捷键:
-
•
空格
/Page Down
:向下翻一页。 -
•
Page Up
/b
:向上翻一页。 -
•
j
/↓
:向下翻一行。 -
•
k
/↑
:向上翻一行。 -
•
/关键词
:向下搜索关键词。 -
•
?关键词
:向上搜索关键词。 -
•
n
:跳转到下一个搜索结果。 -
•
N
:跳转到上一个搜索结果。 -
•
g
:跳转到文件开头。 -
•
G
:跳转到文件结尾。 -
•
q
:退出查看。
示例:
# 查看 /var/log/syslog 并搜索 "error"
$ less /var/log/syslog
# 输入 /error 后按 Enter,可高亮显示 "error" 所在行
# 按 n 跳转到下一个 "error",按 N 跳转到上一个
5. head
:查看文件开头内容
功能:显示文件的前几行(默认 10 行)。
语法:head [选项] 文件
常用选项:-n 行数
(指定显示的行数),-c 字节数
(指定显示的字节数)。
示例:
# 显示 /etc/passwd 的前 5 行
$ head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync# 显示文件的前 20 字节
$ head -c 20 /etc/passwd
root:x:0:0:root:/roo
6. tail
:查看文件结尾内容
功能:显示文件的后几行(默认 10 行),常用于查看日志文件的最新更新。
语法:tail [选项] 文件
常用选项:
-
•
-n 行数
:指定显示的行数。 -
•
-f
:实时跟踪文件更新(新增内容会实时显示,按Ctrl+C
终止)。 -
•
-c 字节数
:指定显示的字节数。
示例:
# 显示 /var/log/syslog 的最后 5 行
$ tail -n 5 /var/log/syslog
Jan 15 11:30:01 ubuntu systemd[1]: Started Daily apt activities.
Jan 15 11:30:01 ubuntu systemd[1]: Reached target Timer Units.
Jan 15 11:30:01 ubuntu systemd[1]: Starting Daily apt activities.
Jan 15 11:30:01 ubuntu systemd[1]: Started Session 2 of user user.
Jan 15 11:30:01 ubuntu systemd[1]: Started Session 1 of user user.# 实时跟踪日志文件更新(新日志会实时显示)
$ tail -f /var/log/syslog
# 此时若系统有新日志(如执行 apt update),会实时输出
7. grep
:文本搜索工具
功能:在文件中搜索指定关键词(支持正则表达式),输出包含关键词的行。
语法:grep [选项] 模式 文件
常用选项:
-
•
-i
:忽略大小写。 -
•
-v
:反向匹配(输出不包含关键词的行)。 -
•
-r
/-R
:递归搜索目录中的所有文件。 -
•
-n
:显示匹配行的行号。 -
•
-l
:仅显示包含匹配内容的文件名(不显示具体行)。 -
•
-E
:使用扩展正则表达式(如|
表示“或”)。 -
•
-o
:仅输出匹配的内容(而非整行)。
示例:
# 在 /etc/passwd 中搜索包含 "user" 的行(忽略大小写)
$ grep -i "user" /etc/passwd
user:x:1000:1000:user,,,:/home/user:/bin/bash# 搜索不包含 "nologin" 的行(显示可登录用户)
$ grep -v "nologin" /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/sync
user:x:1000:1000:user,,,:/home/user:/bin/bash# 递归搜索 /var/log 目录中包含 "error" 的行,并显示行号
$ grep -rn "error" /var/log/
/var/log/auth.log:12: Jan 15 10:20:01 ubuntu sshd[1234]: Failed password for root from 192.168.1.100 port 22 ssh2
/var/log/syslog:56: Jan 15 11:05:01 ubuntu kernel: [ 12.345] Error: Driver 'pcspkr' is already registered# 使用扩展正则表达式搜索 "error" 或 "warning"
$ grep -E "error|warning" /var/log/syslog
8. sed
:流编辑器
功能:对文本进行“流式编辑”(逐行处理),支持删除、替换、插入、打印等操作,适合批量修改文件。
语法:sed [选项] '命令' 文件
常用选项:
-
•
-i
:直接修改文件(默认输出到终端,不修改原文件)。 -
•
-e
:支持多个命令(如sed -e '命令1' -e '命令2' 文件
)。 -
•
-n
:取消默认输出(仅输出处理后的行,常与p
命令配合)。
常用命令:
-
•
p
:打印行。 -
•
d
:删除行。 -
•
s/旧字符串/新字符串/
:替换字符串(默认替换每行的第一个匹配项)。 -
•
s/旧字符串/新字符串/g
:全局替换(替换每行的所有匹配项)。 -
•
行号s/旧字符串/新字符串/
:替换指定行的字符串。
示例:
# 打印 /etc/passwd 的第 3 行(-n 取消默认输出,3p 打印第 3 行)
$ sed -n '3p' /etc/passwd
bin:x:2:2:bin:/bin:/usr/sbin/nologin# 删除文件的第 2-5 行(输出到终端,不修改原文件)
$ sed '2,5d' /etc/passwd# 将文件中的 "bash" 替换为 "zsh"(全局替换)
$ sed 's/bash/zsh/g' /etc/passwd# 直接修改文件,将第 1 行的 "root" 替换为 "administrator"
$ sed -i '1s/root/administrator/' /etc/passwd# 多命令:删除第 2 行,并将 "user" 替换为 "test"
$ sed -e '2d' -e 's/user/test/g' /etc/passwd
9. awk
:文本分析工具
功能:一种强大的文本处理工具,按行处理文本,支持条件判断、循环、数组等编程功能,适合提取列、统计、格式化输出。
语法:awk [选项] '模式 {动作}' 文件
工作原理:
-
• 将文件按行读取,每行称为一条“记录”(record),默认以换行符分隔。
-
• 每条记录按列分割,默认以空格/制表符分隔,列称为“字段”(field),
$1
表示第 1 列,$2
表示第 2 列,$0
表示整行。 -
• 对匹配“模式”的记录执行“动作”。
常用选项:-F
:指定字段分隔符(默认为空格)。
示例:
# 提取 /etc/passwd 中每行的第 1 列(用户名)和第 7 列(登录Shell)
# -F ":" 指定分隔符为冒号,{print $1, $7} 打印第 1 和第 7 列
$ awk -F ":" '{print $1, $7}' /etc/passwd
root /bin/bash
daemon /usr/sbin/nologin
bin /usr/sbin/nologin
user /bin/bash# 统计 /etc/passwd 中可登录用户(Shell 为 /bin/bash)的数量
# $7=="/bin/bash" 是模式,{count++} 是动作,END{print count} 在所有行处理后输出
$ awk -F ":" '$7=="/bin/bash" {count++} END{print count}' /etc/passwd
2# 提取 /var/log/syslog 中包含 "error" 的行,并打印行号和第 5 列(时间)
$ awk '/error/ {print NR, $5}' /var/log/syslog
12 11:30:01
56 11:05:01# 计算文件中每行第 2 列的总和(假设第 2 列为数字)
$ awk '{sum += $2} END{print "Sum:", sum}' data.txt
10. sort
:排序文本行
功能:对文件中的行进行排序(默认按字母顺序)。
语法:sort [选项] 文件
常用选项:
-
•
-n
:按数值大小排序(默认按字符串排序,如 10 会排在 2 前面)。 -
•
-r
:逆序排序(从大到小)。 -
•
-k 列号
:按指定列排序(需配合-t
指定分隔符)。 -
•
-t 分隔符
:指定字段分隔符(默认为空格)。 -
•
-u
:去重排序(仅保留唯一的行)。
示例:
# 对数字文件按数值排序(默认字符串排序会出错)
$ cat numbers.txt
10
2
15
3
$ sort -n numbers.txt
2
3
10
15# 逆序排序
$ sort -nr numbers.txt
15
10
3
2# 对 /etc/passwd 按第 3 列(UID)数值排序
$ sort -t ":" -k 3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
user:x:1000:1000:user,,,:/home/user:/bin/bash# 去重排序
$ cat names.txt
alice
bob
alice
charlie
$ sort -u names.txt
alice
bob
charlie
11. uniq
:去重文本行
功能:去除文件中连续的重复行(需先排序才能去除所有重复行)。
语法:uniq [选项] 文件
常用选项:
-
•
-c
:显示每行重复的次数。 -
•
-d
:仅显示重复的行(仅显示一次)。 -
•
-u
:仅显示不重复的行。
示例:
# 去除连续重复行(未排序时,仅去除连续重复)
$ cat test.txt
apple
banana
apple
orange
banana
$ uniq test.txt
apple
banana
apple
orange
banana# 先排序,再去重(去除所有重复行)
$ sort test.txt | uniq
apple
banana
orange# 显示每行重复次数
$ sort test.txt | uniq -c2 apple2 banana1 orange
12. wc
:统计文本信息
功能:统计文件的行数、单词数、字节数。
语法:wc [选项] 文件
常用选项:
-
•
-l
:仅统计行数。 -
•
-w
:仅统计单词数(以空格/制表符分隔)。 -
•
-c
:仅统计字节数。 -
•
-m
:仅统计字符数(多字节字符如中文会按字符统计,与-c
不同)。
示例:
# 统计 /etc/passwd 的行数、单词数、字节数
$ wc /etc/passwd35 59 1786 /etc/passwd
# 输出顺序:行数、单词数、字节数、文件名# 仅统计行数
$ wc -l /etc/passwd
35 /etc/passwd# 统计当前目录下所有 .txt 文件的总行数
$ wc -l *.txt10 file1.txt20 file2.txt30 total
13. cut
:提取列
功能:从文件的每行中提取指定的列或字符。
语法:cut [选项] 文件
常用选项:
-
•
-d 分隔符
:指定字段分隔符(默认为制表符)。 -
•
-f 列号
:指定提取的列(如-f 1,3
提取第 1 和第 3 列,-f 1-3
提取第 1 到 3 列)。 -
•
-c 字符范围
:按字符提取(如-c 1-5
提取每行的前 5 个字符)。
示例:
# 提取 /etc/passwd 的第 1 列(用户名)和第 6 列(主目录)
$ cut -d ":" -f 1,6 /etc/passwd
root:/root
daemon:/usr/sbin
user:/home/user# 提取每行的前 3 个字符
$ echo "hello world" | cut -c 1-3
hel
14. tr
:字符替换或删除
功能:对输入的字符进行替换、删除或压缩(常通过管道接收输入)。
语法:tr [选项] 字符集1 字符集2
常用选项:
-
•
-d
:删除字符集中的字符。 -
•
-s
:压缩重复字符(将多个连续重复字符替换为一个)。
示例:
# 将小写字母替换为大写字母
$ echo "hello world" | tr "a-z" "A-Z"
HELLO WORLD# 删除所有数字
$ echo "a1b2c3d4" | tr -d "0-9"
abcd# 压缩多个连续空格为一个空格
$ echo "hello world" | tr -s " "
hello world
四、用户与权限管理命令
Linux 是多用户多任务操作系统,用户与权限管理是系统安全的核心。
1. useradd
:创建用户
功能:创建新用户(需 root 权限)。
语法:useradd [选项] 用户名
常用选项:
-
•
-m
:自动创建用户主目录(默认不创建)。 -
•
-s 登录Shell
:指定用户的登录 Shell(如/bin/bash
、/usr/sbin/nologin
)。 -
•
-g 组名
:指定用户的初始组(组需已存在)。 -
•
-G 组名1,组名2
:指定用户的附加组(多个组用逗号分隔)。 -
•
-u UID
:指定用户的 UID(用户标识号,默认为系统自动分配)。 -
•
-c 备注
:添加用户备注信息(存储在/etc/passwd
的备注字段)。
示例:
# 创建用户 testuser,自动创建主目录,指定登录 Shell 为 /bin/bash
$ sudo useradd -m -s /bin/bash testuser# 创建用户 devuser,指定初始组为 developers,附加组为 docker, sudo
$ sudo useradd -m -g developers -G docker,sudo devuser# 创建用户 with UID 2000,备注为 "Developer"
$ sudo useradd -m -u 2000 -c "Developer" developer
2. userdel
:删除用户
功能:删除用户(需 root 权限)。
语法:userdel [选项] 用户名
常用选项:-r
(删除用户主目录及邮件池,默认不删除)。
示例:
# 删除用户 testuser(不删除主目录)
$ sudo userdel testuser# 删除用户 devuser 及其主目录
$ sudo userdel -r devuser
3. usermod
:修改用户属性
功能:修改已存在用户的属性(需 root 权限)。
语法:usermod [选项] 用户名
常用选项:与 useradd
类似,如 -s
(修改 Shell)、-g
(修改初始组)、-G
(修改附加组)、-u
(修改 UID)、-c
(修改备注)等。
示例:
# 将用户 testuser 的登录 Shell 修改为 /bin/zsh
$ sudo usermod -s /bin/zsh testuser# 将用户 testuser 添加到附加组 docker
$ sudo usermod -aG docker testuser
# 注意:-a 表示追加,不加 -a 会覆盖原有附加组# 修改用户 testuser 的备注为 "Test User"
$ sudo usermod -c "Test User" testuser
4. passwd
:修改用户密码
功能:修改用户密码(普通用户只能修改自己的密码,root 可修改所有用户密码)。
语法:passwd [选项] 用户名
常用选项:-d
(删除密码,用户可无密码登录,不安全),-l
(锁定用户账户),-u
(解锁用户账户)。
示例:
# 普通用户修改自己的密码
$ passwd
Changing password for user.
Current password:
New password:
Retype new password:
passwd: password updated successfully# root 用户修改 testuser 的密码
$ sudo passwd testuser
New password:
Retype new password:
passwd: password updated successfully# 锁定用户 testuser
$ sudo passwd -l testuser
passwd: password expiry information changed.# 解锁用户 testuser
$ sudo passwd -u testuser
passwd: password expiry information changed.
5. groupadd
:创建用户组
功能:创建新用户组(需 root 权限)。
语法:groupadd [选项] 组名
常用选项:-g GID
(指定组的 GID,组标识号,默认系统自动分配)。
示例:
# 创建组 developers
$ sudo groupadd developers# 创建组 docker 并指定 GID 1500
$ sudo groupadd -g 1500 docker
6. groupdel
:删除用户组
功能:删除用户组(需 root 权限,组中不能有用户)。
语法:groupdel 组名
示例:
# 删除组 testgroup(需确保组中无用户)
$ sudo groupdel testgroup
7. su
:切换用户
功能:切换到指定用户(需输入目标用户的密码,root 切换到普通用户无需密码)。
语法:su [选项] [用户名]
常用选项:-
/-l
(完全切换,加载目标用户的环境变量,推荐使用)。
示例:
# 切换到 root 用户(需输入 root 密码)
$ su -
Password:
# root@ubuntu:/home/user# # 切换到 testuser 用户(需输入 testuser 密码)
$ su - testuser
Password:
# testuser@ubuntu:~$ # 从 root 切换到普通用户(无需密码)
$ su - testuser
# testuser@ubuntu:~$
8. sudo
:以其他用户身份执行命令
功能:以 root 或其他用户身份执行命令(普通用户需在 /etc/sudoers
文件中有权限)。
语法:sudo [选项] 命令
常用选项:-u 用户名
(指定以哪个用户身份执行,默认为 root),-i
(以目标用户身份登录,类似 su -
)。
示例:
# 以 root 身份执行 apt update(需输入当前用户密码)
$ sudo apt update# 以 testuser 身份执行 whoami
$ sudo -u testuser whoami
testuser# 以 root 身份登录(类似 `su -`)
$ sudo -i
# root@ubuntu:~#
9. chmod
:修改文件/目录权限
功能:修改文件或目录的访问权限(权限分为读 r
、写 w
、执行 x
,分别对应数字 4、2、1)。
语法:chmod [选项] 权限 文件/目录
权限表示方式:
-
• 数字模式:将用户(u)、组(g)、其他(o)的权限相加。例如:
-
•
755
:用户rwx
(4+2+1=7),组r-x
(4+0+1=5),其他r-x
(5)。 -
•
644
:用户rw-
(6),组r--
(4),其他r--
(4)。
-
-
• 符号模式:使用
u
(用户)、g
(组)、o
(其他)、a
(所有)配合+
(添加)、-
(移除)、=
(设置)权限。例如:-
•
u+x
:给用户添加执行权限。 -
•
go-w
:移除组和其他用户的写权限。
-
常用选项:-R
(递归修改目录及其子目录/文件的权限)。
示例:
# 数字模式:将文件 script.sh 的权限设置为 755(用户可读写执行,组和其他可读执行)
$ chmod 755 script.sh# 符号模式:给文件 file.txt 的用户添加写权限
$ chmod u+w file.txt# 递归将目录 /data 及其子目录/文件的权限设置为 755
$ chmod -R 755 /data# 移除文件 file.txt 的组和其他用户的所有权限(仅用户有读写执行)
$ chmod go=--- file.txt
10. chown
:修改文件/目录所有者
功能:修改文件或目录的所有者和所属组(需 root 权限)。
语法:chown [选项] 所有者:所属组 文件/目录
常用选项:-R
(递归修改目录及其子目录/文件的所有者)。
示例:
# 将文件 file.txt 的所有者修改为 testuser
$ sudo chown testuser file.txt# 将文件 file.txt 的所有者修改为 testuser,所属组修改为 developers
$ sudo chown testuser:developers file.txt# 递归将目录 /data 的所有者修改为 testuser,所属组修改为 developers
$ sudo chown -R testuser:developers /data# 仅修改所属组(所有者不变)
$ sudo chown :developers file.txt
11. chgrp
:修改文件/目录所属组
功能:修改文件或目录的所属组(需 root 权限或文件所有者且为目标组成员)。
语法:chgrp [选项] 所属组 文件/目录
常用选项:-R
(递归修改目录及其子目录/文件的所属组)。
示例:
# 将文件 file.txt 的所属组修改为 developers
$ sudo chgrp developers file.txt# 递归将目录 /data 的所属组修改为 developers
$ sudo chgrp -R developers /data
五、进程管理命令
进程是程序执行的实例,Linux 系统中需要通过进程管理命令监控系统运行状态、管理进程。
1. ps
:查看进程状态
功能:显示当前系统中的进程信息。
语法:ps [选项]
常用选项:
-
•
aux
:显示所有用户的进程(包括无终端的进程),以 BSD 格式输出。 -
•
-ef
:显示所有进程,以 System V 格式输出(包含父进程 ID PPID)。 -
•
-u 用户名
:显示指定用户的进程。 -
•
-p PID
:显示指定 PID 的进程。 -
•
--sort=列名
:按指定列排序(如--sort=-%cpu
按 CPU 使用率降序)。
示例:
# 显示所有进程(BSD 格式),按 CPU 使用率降序排序
$ ps aux --sort=-%cpu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 123 10.0 5.0 123456 7890 ? R 10:30 2:30 /usr/bin/python3
user 456 5.0 2.0 56789 1234 pts/0 S 10:35 0:10 vim file.txt
root 789 0.1 1.0 34567 567 ? S 09:00 0:01 /usr/sbin/sshd# 显示所有进程(System V 格式),包含 PPID
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:00 ? 00:00:01 /sbin/init
root 789 1 0 09:00 ? 00:00:01 /usr/sbin/sshd
user 1234 789 0 10:30 pts/0 00:00:00 -bash
user 5678 1234 5 10:35 pts/0 00:00:10 vim file.txt# 显示用户 testuser 的进程
$ ps -u testuserPID TTY TIME CMD5678 pts/0 00:00:10 vim7890 pts/1 00:00:05 bash
2. top
:动态监控进程
功能:实时显示系统中进程的动态信息(CPU、内存、进程状态等)。
语法:top [选项]
常用选项:-d 秒数
(指定刷新间隔,默认 3 秒),-p PID
(监控指定 PID 的进程)。
交互快捷键:
-
•
M
:按内存使用率排序。 -
•
P
:按 CPU 使用率排序(默认)。 -
•
k
:终止指定进程(输入 PID 后按 Enter)。 -
•
r
:重新设置进程的优先级(renice)。 -
•
q
:退出top
。
示例:
# 启动 top,按 CPU 使用率排序
$ top
# 输出示例:
top - 11:50:01 up 2 days, 10:30, 2 users, load average: 0.10, 0.05, 0.01
Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.0 us, 2.0 sy, 0.0 ni, 93.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8000.0 total, 3000.0 free, 2000.0 used, 3000.0 buff/cache
MiB Swap: 2000.0 total, 2000.0 free, 0.0 used. 5000.0 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND1234 root 20 0 123456 78900 12345 R 10.0 5.0 2:30.00 python35678 user 20 0 56789 12340 5678 S 5.0 2.0 0:10.00 vim
3. htop
:增强版进程监控工具
功能:top
的增强版,界面更友好,支持鼠标操作、进程树显示、自定义列等。
语法:htop [选项]
交互快捷键:与 top
类似,支持方向键选择进程,F2
进入设置,F9
终止进程,F10
退出。
示例:
# 启动 htop
$ htop
# 界面示例(支持颜色、进程树、自定义列等):PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command1234 root 20 0 123M 78M 12M R 10.0 5.0 2:30.00 python35678 user 20 0 56M 12M 5M S 5.0 2.0 0:10.00 vim1 root 20 0 2M 1M 1M S 0.0 0.1 0:00.01 systemd
4. kill
:终止进程
功能:向指定进程发送信号(默认终止信号 SIGTERM
,允许进程清理资源后退出)。
语法:kill [选项] PID
常用信号:
-
•
15
/SIGTERM
:正常终止(默认信号,进程可捕获并忽略)。 -
•
9
/SIGKILL
:强制终止(进程无法捕获,立即退出,可能导致数据丢失)。 -
•
1
/SIGHUP
:重新加载配置(如让守护进程重新读取配置文件)。
示例:
# 终止 PID 为 1234 的进程(默认 SIGTERM)
$ kill 1234# 强制终止 PID 为 5678 的进程(SIGKILL)
$ kill -9 5678# 让 PID 为 789 的进程重新加载配置(SIGHUP)
$ kill -1 789
5. pkill
:按进程名终止进程
功能:按进程名(或其他属性)终止进程,无需手动查找 PID。
语法:pkill [选项] 进程名
常用选项:-u 用户名
(终止指定用户的进程),-f
(匹配进程的完整命令行,而非仅进程名)。
示例:
# 终止所有名为 vim 的进程
$ pkill vim# 终止用户 testuser 的所有 bash 进程
$ pkill -u testuser bash# 终止命令行包含 "python3 script.py" 的进程
$ pkill -f "python3 script.py"
6. jobs
:查看后台任务
功能:显示当前 Shell 会话中的后台任务(包括运行中和挂起的任务)。
语法:jobs [选项]
常用选项:-l
(显示 PID),-r
(仅显示运行中的任务),-s
(仅显示挂起的任务)。
示例:
# 将命令放到后台运行(末尾加 &)
$ sleep 1000 &
[1] 1234# 将前台任务挂起到后台(Ctrl+Z)
$ sleep 2000
^Z
[2]+ Stopped sleep 2000# 查看后台任务
$ jobs
[1]- Running sleep 1000 &
[2]+ Stopped sleep 2000# 查看后台任务及其 PID
$ jobs -l
[1]- 1234 Running sleep 1000 &
[2]+ 5678 Stopped sleep 2000
7. fg
:将后台任务切换到前台
功能:将指定的后台任务切换到前台继续运行。
语法:fg 任务号
示例:
# 将任务号 2(sleep 2000)切换到前台
$ fg 2
sleep 2000
# 此时任务在前台运行,按 Ctrl+C 可终止
8. bg
:将挂起的后台任务恢复运行
功能:将挂起(Stopped)的后台任务恢复到后台运行。
语法:bg 任务号
示例:
# 将任务号 2(sleep 2000,已挂起)恢复到后台运行
$ bg 2
[2]+ sleep 2000 &# 查看任务状态(已从 Stopped 变为 Running)
$ jobs
[1]- Running sleep 1000 &
[2]+ Running sleep 2000 &
9. nohup
:让进程在后台持续运行
功能:让进程在后台运行,并且不受终端关闭的影响(退出 Shell 后进程继续运行)。
语法:nohup 命令 &
说明:默认将输出重定向到当前目录的 nohup.out
文件,若当前目录不可写,则重定向到 ~/nohup.out
。
示例:
# 让 script.py 在后台持续运行,输出到 nohup.out
$ nohup python3 script.py &
[1] 1234# 指定输出文件
$ nohup python3 script.py > script.log 2>&1 &
# 2>&1 表示将标准错误(2)重定向到标准输出(1),即所有输出都写入 script.log
六、网络管理命令
网络管理是 Linux 系统运维的重要部分,包括网络配置、连接测试、端口监控等。
1. ifconfig
:配置网络接口(传统工具)
功能:查看或配置网络接口(如 IP 地址、子网掩码、MAC 地址等),属于 net-tools
工具包(新系统推荐使用 ip
命令)。
语法:ifconfig [接口名] [选项]
常用选项:up
(启用接口),down
(禁用接口),inet IP地址
(设置 IP 地址),netmask 子网掩码
(设置子网掩码)。
示例:
# 查看所有网络接口信息
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20<link>ether 08:00:27:4e:66:a1 txqueuelen 1000 (Ethernet)RX packets 12345 bytes 1234567 (1.2 MB)TX packets 6789 bytes 789012 (789.0 KB)interrupts:16 base address:0xd000lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 12 bytes 720 (720.0 B)TX packets 12 bytes 720 (720.0 B)# 启用 eth0 接口
$ sudo ifconfig eth0 up# 禁用 eth0 接口
$ sudo ifconfig eth0 down# 设置 eth0 的 IP 地址为 192.168.1.200,子网掩码 255.255.255.0
$ sudo ifconfig eth0 inet 192.168.1.200 netmask 255.255.255.0
2. ip
:网络配置工具(新一代)
功能:ifconfig
的替代工具,功能更强大,支持更多网络协议和配置(属于 iproute2
工具包)。
语法:ip [选项] 对象 {命令}
常用对象:link
(网络接口),addr
(IP 地址),route
(路由表),neigh
(ARP 缓存)。
示例:
# 查看所有网络接口信息(类似 ifconfig)
$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000link/ether 08:00:27:4e:66:a1 brd ff:ff:ff:ff:ff:ff# 查看接口的 IP 地址信息(类似 ifconfig)
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe4e:66a1/64 scope linkvalid_lft forever preferred_lft forever# 给 eth0 添加 IP 地址 192.168.1.200/24
$ sudo ip addr add 192.168.1.200/24 dev eth0# 删除 eth0 的 IP 地址 192.168.1.200/24
$ sudo ip addr del 192.168.1.200/24 dev eth0# 查看路由表
$ ip route show
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
3. ping
:测试网络连通性
功能:通过 ICMP 协议测试与目标主机的连通性(发送 ICMP 回显请求,等待回显应答)。
语法:ping [选项] 目标主机
常用选项:-c 次数
(指定发送的包数量,默认一直发送),-i 秒数
(指定发送间隔,默认 1 秒),W 超时时间
(指定等待应答的超时时间,秒)。
示例:
# 测试与百度服务器的连通性,发送 4 个包
$ ping -c 4 www.baidu.com
PING www.a.shifen.com (182.61.200.7) 56(84) bytes of data.
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=1 ttl=54 time=10.2 ms
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=2 ttl=54 time=9.8 ms
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=3 ttl=54 time=10.5 ms
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=4 ttl=54 time=9.9 ms--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 9.800/10.100/10.500/0.300 ms# 测试与局域网主机 192.168.1.1 的连通性,发送间隔 2 秒
$ ping -i 2 192.168.1.1
4. traceroute
:跟踪网络路由
功能:显示数据包从本地主机到目标主机所经过的路由器(网关)列表,帮助定位网络故障。
语法:traceroute [选项] 目标主机
常用选项:-n
:以数字形式显示 IP 地址(不解析主机名,加快速度),-w 超时时间
:指定等待每个响应的超时时间(秒)。
示例:
# 跟踪到百度服务器的路由(不解析主机名)
$ traceroute -n www.baidu.com
traceroute to www.baidu.com (182.61.200.7), 30 hops max, 60 byte packets1 192.168.1.1 1.234 ms 1.567 ms 1.890 ms2 100.64.0.1 10.123 ms 10.456 ms 10.789 ms3 202.96.128.86 20.123 ms 20.456 ms 20.789 ms4 202.96.128.1 30.123 ms 30.456 ms 30.789 ms5 182.61.200.7 40.123 ms 40.456 ms 40.789 ms
5. netstat
:查看网络状态(传统工具)
功能:显示网络连接、路由表、接口统计等信息,属于 net-tools
工具包(新系统推荐使用 ss
)。
语法:netstat [选项]
常用选项:
-
•
-a
:显示所有连接(包括监听和非监听)。 -
•
-t
:仅显示 TCP 连接。 -
•
-u
:仅显示 UDP 连接。 -
•
-n
:以数字形式显示地址和端口(不解析服务名)。 -
•
-l
:仅显示监听状态的连接。 -
•
-p
:显示进程的 PID 和名称(需 root 权限)。
示例:
# 查看所有 TCP 连接(数字形式,显示进程)
$ sudo netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 789/sshd
tcp 0 0 192.168.1.100:22 192.168.1.1:54321 ESTABLISHED 1234/sshd: user
tcp6 0 0 :::22 :::* LISTEN 789/sshd# 查看所有监听的 UDP 端口
$ sudo netstat -nulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:68 0.0.0.0:* 567/dhclient
6. ss
:查看网络状态(新一代)
功能:netstat
的替代工具,速度更快,支持更多过滤选项(属于 iproute2
工具包)。
语法:ss [选项]
常用选项:与 netstat
类似,如 -t
(TCP)、-u
(UDP)、-n
(数字形式)、-l
(监听)、-p
(进程)。
示例:
# 查看所有 TCP 监听连接(数字形式,显示进程)
$ sudo ss -tlpn
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=789,fd=3))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=789,fd=4))# 查看所有已建立的 TCP 连接
$ ss -t estab
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.1.100:22 192.168.1.1:54321
7. ssh
:远程登录
功能:通过 SSH 协议安全地远程登录到其他主机(默认端口 22)。
语法:ssh [选项] 用户名@主机名
常用选项:-p 端口
(指定 SSH 端口,非默认 22 时使用),-i 密钥文件
(指定私钥文件,用于免密登录)。
示例:
# 以用户 testuser 身份登录到主机 192.168.1.200
$ ssh testuser@192.168.1.200
The authenticity of host '192.168.1.200 (192.168.1.200)' can't be established.
ECDSA key fingerprint is SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890.
Are you sure you want to continue connecting (yes/no)? yes
Password:
# 登录成功后,终端会切换到远程主机# 使用私钥文件免密登录(需提前配置公钥到远程主机的 ~/.ssh/authorized_keys)
$ ssh -i ~/.ssh/id_rsa testuser@192.168.1.200# 指定端口 2222 登录
$ ssh -p 2222 testuser@192.168.1.200
8. scp
:远程拷贝文件
功能:通过 SSH 协议在本地主机和远程主机之间安全地拷贝文件。
语法:scp [选项] 源文件 目标文件
常用选项:-r
(递归拷贝目录),-P 端口
(指定 SSH 端口),-i 密钥文件
(指定私钥文件)。
示例:
# 将本地文件 file.txt 拷贝到远程主机 192.168.1.200 的 /tmp 目录(用户 testuser)
$ scp file.txt testuser@192.168.1.200:/tmp/
Password:
file.txt 100% 512 1.2KB/s 00:00 # 将远程主机 192.168.1.200 的 /tmp/file.txt 拷贝到本地当前目录
$ scp testuser@192.168.1.200:/tmp/file.txt ./# 递归拷贝本地目录 data/ 到远程主机的 /home/testuser/
$ scp -r data/ testuser@192.168.1.200:/home/testuser/# 指定端口 2222 拷贝
$ scp -P 2222 file.txt testuser@192.168.1.200:/tmp/
9. wget
:下载文件
功能:从 HTTP、HTTPS、FTP 等协议下载文件,支持断点续传、后台下载等。
语法:wget [选项] URL
常用选项:
-
•
-O 文件名
:指定下载后的文件名(默认为 URL 中的文件名)。 -
•
-c
:断点续传(若下载中断,可从断点继续)。 -
•
-b
:后台下载(下载日志写入 wget-log 文件)。 -
•
-r
:递归下载(下载整个网站或目录)。 -
•
-l 深度
:指定递归深度(与-r
配合使用)。
示例:
# 下载 https://example.com/file.txt,保存为 local_file.txt
$ wget -O local_file.txt https://example.com/file.txt# 断点续传下载(若之前下载中断)
$ wget -c https://example.com/large_file.zip# 后台下载 https://example.com/file.iso
$ wget -b https://example.com/file.iso
Continuing in background, pid 1234.
Output will be written to ‘wget-log’.# 递归下载 https://example.com/dir/ 目录,深度为 2
$ wget -r -l 2 https://example.com/dir/
10. curl
:数据传输工具
功能:支持 HTTP、HTTPS、FTP、SMTP 等多种协议,用于上传/下载数据、测试 API 接口等。
语法:curl [选项] URL
常用选项:
-
•
-O
:下载文件并保留原文件名(与wget
类似)。 -
•
-o 文件名
:下载文件并指定文件名。 -
•
-X 请求方法
:指定 HTTP 请求方法(如GET
、POST
、PUT
)。 -
•
-H 头部
:设置 HTTP 请求头(如Content-Type: application/json
)。 -
•
-d 数据
:设置 POST 请求的数据(如{"key":"value"}
)。 -
•
-I
:仅获取 HTTP 响应头(不下载内容)。
示例:
# 下载 https://example.com/file.txt,保留原文件名
$ curl -O https://example.com/file.txt# 下载文件并指定文件名
$ curl -o local_file.txt https://example.com/file.txt# 发送 POST 请求,数据为 JSON 格式
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"test","age":20}' https://api.example.com/users# 获取 HTTP 响应头
$ curl -I https://example.com
HTTP/2 200
server: nginx
date: Mon, 15 Jan 2024 11:00:00 GMT
content-type: text/html
七、系统信息查询命令
系统信息查询命令用于获取 Linux 系统的硬件、内核、版本等信息,帮助了解系统状态。
1. uname
:查看内核信息
功能:显示系统的内核信息(如内核版本、主机名、硬件架构等)。
语法:uname [选项]
常用选项:-a
(显示所有信息),-r
(显示内核版本),-s
(显示内核名称),-n
(显示主机名),-m
(显示硬件架构)。
示例:
# 显示所有内核信息
$ uname -a
Linux ubuntu 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux# 显示内核版本
$ uname -r
5.15.0-76-generic# 显示硬件架构
$ uname -m
x86_64
2. hostname
:查看或设置主机名
功能:查看或设置系统的主机名(需 root 权限修改)。
语法:hostname [选项] [主机名]
常用选项:-s
(显示短主机名,仅第一个 .
前的部分),-f
(显示完全限定域名 FQDN)。
示例:
# 查看当前主机名
$ hostname
ubuntu# 查看完全限定域名
$ hostname -f
ubuntu.example.com# 修改主机名为 newhost(临时生效,重启后失效)
$ sudo hostname newhost# 永久修改主机名(需修改 /etc/hostname 和 /etc/hosts)
$ sudo vim /etc/hostname
# 将内容改为 newhost
$ sudo vim /etc/hosts
# 将 127.0.1.1 对应的主机名改为 newhost
$ sudo reboot
3. uptime
:查看系统负载和运行时间
功能:显示系统的运行时间、登录用户数、系统负载(1 分钟、5 分钟、15 分钟的平均负载)。
语法:uptime
示例:
$ uptime11:50:01 up 2 days, 10:30, 2 users, load average: 0.10, 0.05, 0.01
# 输出说明:
# 11:50:01:当前时间
# up 2 days, 10:30:系统已运行 2 天 10 小时 30 分钟
# 2 users:当前有 2 个用户登录
# load average: 0.10, 0.05, 0.01:1 分钟、5 分钟、15 分钟的平均负载(负载值与 CPU 核心数相关,若超过核心数表示系统压力大)
4. free
:查看内存使用情况
功能:显示系统的物理内存、交换内存(swap)的使用情况。
语法:free [选项]
常用选项:-h
(以人类可读格式显示,如 K、M、G),-m
(以 MB 为单位显示),-g
(以 GB 为单位显示)。
示例:
# 以人类可读格式显示内存使用情况
$ free -htotal used free shared buff/cache available
Mem: 7.7Gi 1.9Gi 3.1Gi 123Mi 2.7Gi 5.3Gi
Swap: 2.0Gi 0B 2.0Gi
# 输出说明:
# total:总内存
# used:已使用内存(包括 buff/cache)
# free:完全空闲的内存
# shared:共享内存
# buff/cache:缓存和缓冲区内存(可被回收,实际可用内存为 free + buff/cache)
# available:可用内存(应用程序可使用的内存,考虑了可回收的 buff/cache)
5. df
:查看磁盘分区使用情况
功能:显示文件系统的磁盘分区使用情况(总容量、已用、可用、使用百分比等)。
语法:df [选项]
常用选项:-h
(人类可读格式),-T
(显示文件系统类型),-t 类型
(仅显示指定类型的文件系统),-x 类型
(不显示指定类型的文件系统)。
示例:
# 以人类可读格式显示磁盘分区使用情况
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 12G 7.0G 63% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 1.1M 1.6G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sdb1 100G 50G 50G 50% /data# 显示文件系统类型
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 20971520 12582912 7372808 63% /
tmpfs tmpfs 4096000 0 4096000 0% /dev/shm
6. du
:查看目录或文件大小
功能:统计目录或文件占用的磁盘空间(默认显示子目录的大小)。
语法:du [选项] [目录/文件]
常用选项:-h
(人类可读格式),-s
(仅显示总计,不显示子目录),-a
(显示所有文件和目录的大小),--max-depth=层数
(指定显示的目录深度)。
示例:
# 统计当前目录下各子目录的大小(人类可读格式)
$ du -h *
1.2G documents
500M downloads
100K notes.txt# 统计 /data 目录的总大小(不显示子目录)
$ du -sh /data
50G /data# 统计当前目录下所有文件和目录的大小,深度为 2 层
$ du -h --max-depth=2 .
1.2G ./documents
500M ./downloads
100K ./notes.txt
1.7G .
7. lscpu
:查看 CPU 信息
功能:显示 CPU 的详细信息(型号、核心数、线程数、架构等)。
语法:lscpu
示例:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 158
Model name: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
Stepping: 9
CPU MHz: 2712.000
BogoMIPS: 5424.00
Virtualization: VT-x
L1d cache: 64 KiB
L1i cache: 64 KiB
L2 cache: 512 KiB
L3 cache: 3 MiB
八、软件包管理命令
软件包管理是 Linux 系统的核心功能,用于安装、更新、卸载软件包。不同发行版使用不同的包管理工具:Debian/Ubuntu 使用 apt
,RHEL/CentOS 使用 yum
/dnf
,Arch Linux 使用 pacman
。
1. apt
(Debian/Ubuntu 系)
功能:Advanced Package Tool,Debian/Ubuntu 系列系统的包管理工具,用于管理 .deb
软件包。
常用子命令:
-
•
update
:更新软件包列表(从/etc/apt/sources.list
定义的源获取最新包信息)。 -
•
upgrade
:升级已安装的软件包(不删除旧包,不安装新包)。 -
•
full-upgrade
:完整升级(可处理依赖关系变化,可能删除旧包)。 -
•
install
:安装软件包(自动解决依赖)。 -
•
remove
:卸载软件包(保留配置文件)。 -
•
purge
:彻底卸载软件包(删除配置文件)。 -
•
autoremove
:自动删除不再需要的依赖包(如卸载主包后的孤立包)。 -
•
search
:搜索软件包(按名称或描述)。 -
•
show
:显示软件包的详细信息(版本、依赖、大小等)。 -
•
list
:列出已安装或可用的软件包。
示例:
# 更新软件包列表(首次安装软件前建议执行)
$ sudo apt update# 升级所有已安装的软件包
$ sudo apt upgrade# 安装 nginx Web 服务器
$ sudo apt install nginx# 彻底卸载 nginx(删除配置文件)
$ sudo apt purge nginx# 自动删除不再需要的依赖包
$ sudo apt autoremove# 搜索包含 "http" 的软件包
$ apt search http# 查看 nginx 包的详细信息
$ apt show nginx
2. yum
(RHEL/CentOS 6/7)
功能:Yellowdog Updater Modified,RHEL/CentOS 6/7 系统的包管理工具,用于管理 .rpm
软件包。
常用子命令:
-
•
update
:检查并更新软件包(类似apt upgrade
)。 -
•
install
:安装软件包。 -
•
remove
/erase
:卸载软件包。 -
•
search
:搜索软件包。 -
•
info
:显示软件包信息。 -
•
list
:列出已安装或可用的软件包。 -
•
autoremove
:自动删除孤立包。
示例:
# 安装 httpd Web 服务器
$ sudo yum install httpd# 更新所有软件包
$ sudo yum update# 卸载 httpd
$ sudo yum remove httpd# 搜索包含 "mysql" 的软件包
$ yum search mysql# 查看 httpd 包的信息
$ yum info httpd
3. dnf
(RHEL/CentOS 8+、Fedora)
功能:Dandified YUM,yum
的升级版,性能更好,依赖管理更高效,用于 RHEL/CentOS 8+ 和 Fedora 系统。
常用子命令:与 yum
基本兼容,新增了一些功能(如 group list
列出软件包组)。
示例:
# 安装 nginx
$ sudo dnf install nginx# 更新所有软件包
$ sudo dnf upgrade# 列出可用的软件包组
$ dnf group list# 安装 "Development Tools" 软件包组
$ sudo dnf group install "Development Tools"
4. pacman
(Arch Linux)
功能:Arch Linux 的包管理工具,简洁高效,支持滚动更新。
常用子命令:
-
•
-Syu
:同步软件包数据库并升级系统(常用更新命令)。 -
•
-S
:安装软件包(如pacman -S nginx
)。 -
•
-R
:卸载软件包(如pacman -R nginx
)。 -
•
-Rs
:卸载软件包及其孤立依赖(如pacman -Rs nginx
)。 -
•
-Q
:查询已安装的软件包(如pacman -Q nginx
)。 -
•
-Ss
:搜索软件包(如pacman -Ss firefox
)。
示例:
# 同步数据库并升级系统
$ sudo pacman -Syu# 安装 vim
$ sudo pacman -S vim# 卸载 vim 及其孤立依赖
$ sudo pacman -Rs vim# 搜索包含 "libre" 的软件包
$ pacman -Ss libre
5. dpkg
(Debian/Ubuntu 底层工具)
功能:Debian 系统的底层包管理工具,用于直接操作 .deb
文件(不自动解决依赖,需配合 apt
使用)。
常用选项:
-
•
-i
:安装.deb
文件(如dpkg -i package.deb
)。 -
•
-r
:卸载软件包(保留配置文件)。 -
•
-P
:彻底卸载软件包(删除配置文件)。 -
•
-l
:列出已安装的软件包(如dpkg -l | grep nginx
)。 -
•
-L
:列出软件包安装的文件(如dpkg -L nginx
)。
示例:
# 安装本地 .deb 文件(需手动解决依赖)
$ sudo dpkg -i google-chrome.deb
# 若提示依赖问题,用 apt 修复
$ sudo apt -f install# 彻底卸载软件包
$ sudo dpkg -P nginx# 查看 nginx 安装的文件列表
$ dpkg -L nginx
6. rpm
(RHEL/CentOS 底层工具)
功能:RHEL 系统的底层包管理工具,用于直接操作 .rpm
文件(不自动解决依赖)。
常用选项:
-
•
-i
:安装.rpm
文件(如rpm -ivh package.rpm
,v
显示详细信息,h
显示进度条)。 -
•
-e
:卸载软件包(如rpm -e nginx
)。 -
•
-q
:查询软件包(如rpm -q nginx
)。 -
•
-qa
:列出所有已安装的软件包(如rpm -qa | grep mysql
)。 -
•
-ql
:列出软件包安装的文件(如rpm -ql nginx
)。
示例:
# 安装本地 .rpm 文件
$ sudo rpm -ivh nginx.rpm# 卸载软件包
$ sudo rpm -e nginx# 查询软件包是否安装
$ rpm -q nginx# 列出所有已安装的软件包
$ rpm -qa
九、磁盘管理命令
磁盘管理涉及分区、格式化、挂载等操作,是系统存储管理的基础。
1. fdisk
:磁盘分区工具
功能:交互式磁盘分区工具,用于创建、删除、修改磁盘分区(支持 MBR 和 GPT 分区表)。
语法:fdisk [选项] 磁盘设备
常用选项:-l
(列出所有磁盘的分区信息)。
交互命令(进入 fdisk
后):
-
•
m
:显示帮助菜单。 -
•
p
:打印当前分区表。 -
•
n
:创建新分区。 -
•
d
:删除分区。 -
•
t
:修改分区类型(如 Linux 分区类型为 83,Swap 为 82)。 -
•
w
:保存修改并退出。 -
•
q
:不保存修改并退出。
示例:
# 列出所有磁盘的分区信息
$ sudo fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x12345678Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 41943039 39843840 19G 83 Linux# 对 /dev/sdb 进行分区(新磁盘)
$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): n
Partition typep primary (0 primary, 0 extended, 4 free)e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +10GCreated a new partition 1 of type 'Linux' and of size 10 GiB.Command (m for help): w
The partition table has been altered.
Syncing disks.
2. mkfs
:格式化文件系统
功能:将分区格式化为指定的文件系统(如 ext4、xfs、ntfs 等)。
语法:mkfs.文件类型 [选项] 分区设备
常用文件类型:
-
•
ext4
:Linux 常用文件系统(日志型,支持大文件和大分区)。 -
•
xfs
:高性能文件系统(适合大文件存储,如数据库)。 -
•
ntfs
:Windows 文件系统(需安装ntfs-3g
支持)。
示例:
# 将 /dev/sdb1 格式化为 ext4 文件系统
$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: 12345678-1234-1234-1234-1234567890ab
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done# 将 /dev/sdc1 格式化为 xfs 文件系统
$ sudo mkfs.xfs /dev/sdc1
3. mount
:挂载文件系统
功能:将格式化后的分区挂载到指定目录(挂载点),使文件系统可访问。
语法:mount [选项] 设备 挂载点
常用选项:-t 文件类型
(指定文件系统类型,如 ext4
),-o 挂载选项
(如 ro
只读、rw
读写、defaults
默认选项)。
示例:
# 创建挂载点目录
$ sudo mkdir /data# 将 /dev/sdb1 挂载到 /data(ext4 文件系统)
$ sudo mount /dev/sdb1 /data# 查看已挂载的文件系统
$ mount
/dev/sda1 on / type ext4 (rw,relatime)
/dev/sdb1 on /data type ext4 (rw,relatime)# 以只读方式挂载 /dev/sdc1 到 /backup
$ sudo mount -o ro /dev/sdc1 /backup
4. umount
:卸载文件系统
功能:卸载已挂载的文件系统(需确保挂载点未被使用)。
语法:umount [选项] 挂载点或设备
常用选项:-l
(延迟卸载,当文件系统不再使用时自动卸载)。
示例:
# 卸载 /data 挂载点
$ sudo umount /data# 卸载设备 /dev/sdb1
$ sudo umount /dev/sdb1# 若挂载点被占用,使用 -l 延迟卸载
$ sudo umount -l /data
5. df
:查看磁盘使用情况(已介绍,略)
功能:显示文件系统的磁盘空间使用情况(详见第七部分)。
6. du
:查看目录大小(已介绍,略)
功能:统计目录或文件的磁盘占用空间(详见第七部分)。
7. lsblk
:查看块设备信息(已介绍,略)
功能:列出块设备(硬盘、分区)的树形结构(详见第七部分)。
8. parted
:高级分区工具
功能:支持 GPT 分区表的交互式分区工具,可处理大于 2TB 的磁盘(fdisk
仅支持 MBR,最大 2TB)。
语法:parted [选项] 磁盘设备
交互命令:
-
•
print
:显示当前分区表。 -
•
mklabel gpt
:创建 GPT 分区表(默认为 MBR)。 -
•
mkpart
:创建新分区(需指定分区类型、文件系统类型、起始和结束位置)。 -
•
rm
:删除分区。 -
•
quit
:退出。
示例:
# 对 /dev/sdd 进行分区(GPT 分区表)
$ sudo parted /dev/sdd
GNU Parted 3.3
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary ext4 0% 100%
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdd: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number Start End Size File system Name Flags1 1049kB 500GB 500GB ext4 primary(parted) quit
十、压缩与解压命令
压缩与解压命令用于减小文件大小,节省存储空间,便于文件传输。Linux 中常用的压缩工具有 gzip
、bzip2
、xz
,以及归档工具 tar
。
1. tar
:归档工具
功能:将多个文件或目录打包成一个归档文件(.tar
),常与压缩工具结合使用(如 .tar.gz
、.tar.bz2
)。
语法:tar [选项] 归档文件 [文件/目录]
常用选项:
-
•
-c
:创建归档文件。 -
•
-x
:解压归档文件。 -
•
-v
:显示处理过程(verbose)。 -
•
-f
:指定归档文件名(必须放在选项最后)。 -
•
-z
:调用gzip
压缩/解压(.tar.gz
或.tgz
)。 -
•
-j
:调用bzip2
压缩/解压(.tar.bz2
)。 -
•
-J
:调用xz
压缩/解压(.tar.xz
)。 -
•
-C
:指定解压目录。
示例:
# 将 /data 目录打包为 data.tar(不压缩)
$ tar -cvf data.tar /data# 将 /data 目录打包并用 gzip 压缩为 data.tar.gz
$ tar -czvf data.tar.gz /data# 将 /data 目录打包并用 bzip2 压缩为 data.tar.bz2
$ tar -cjvf data.tar.bz2 /data# 将 /data 目录打包并用 xz 压缩为 data.tar.xz
$ tar -cJvf data.tar.xz /data# 解压 data.tar.gz 到当前目录
$ tar -xzvf data.tar.gz# 解压 data.tar.bz2 到 /tmp 目录
$ tar -xjvf data.tar.bz2 -C /tmp# 查看 data.tar.gz 中的文件列表(不解压)
$ tar -tzvf data.tar.gz
2. gzip
:压缩/解压 .gz
文件
功能:压缩文件为 .gz
格式,或解压 .gz
文件(压缩后原文件会被删除)。
语法:gzip [选项] 文件
常用选项:-d
(解压文件,等同于 gunzip
),-r
(递归压缩目录中的文件),-k
(保留原文件,不删除)。
示例:
# 压缩 file.txt 为 file.txt.gz(删除原文件)
$ gzip file.txt# 压缩 file.txt 并保留原文件
$ gzip -k file.txt# 解压 file.txt.gz(删除原 .gz 文件)
$ gzip -d file.txt.gz
# 或使用 gunzip
$ gunzip file.txt.gz# 递归压缩 /data 目录中的所有文件
$ gzip -r /data
3. bzip2
:压缩/解压 .bz2
文件
功能:压缩文件为 .bz2
格式,压缩率比 gzip
高,但速度较慢(压缩后原文件会被删除)。
语法:bzip2 [选项] 文件
常用选项:-d
(解压文件,等同于 bunzip2
),-k
(保留原文件),-z
(压缩,默认选项)。
示例:
# 压缩 file.txt 为 file.txt.bz2(删除原文件)
$ bzip2 file.txt# 压缩 file.txt 并保留原文件
$ bzip2 -k file.txt# 解压 file.txt.bz2(删除原 .bz2 文件)
$ bzip2 -d file.txt.bz2
# 或使用 bunzip2
$ bunzip2 file.txt.bz2
4. xz
:压缩/解压 .xz
文件
功能:压缩文件为 .xz
格式,压缩率比 bzip2
更高,但速度最慢(压缩后原文件会被删除)。
语法:xz [选项] 文件
常用选项:-d
(解压文件,等同于 unxz
),-k
(保留原文件),-z
(压缩,默认选项)。
示例:
# 压缩 file.txt 为 file.txt.xz(删除原文件)
$ xz file.txt# 压缩 file.txt 并保留原文件
$ xz -k file.txt# 解压 file.txt.xz(删除原 .xz 文件)
$ xz -d file.txt.xz
# 或使用 unxz
$ unxz file.txt.xz
5. zip
/unzip
:压缩/解压 .zip
文件
功能:zip
用于创建 .zip
归档文件(支持压缩多个文件和目录),unzip
用于解压 .zip
文件(兼容 Windows 的 .zip
格式)。
语法:
-
•
zip [选项] 归档文件 [文件/目录]
-
•
unzip [选项] 归档文件
常用选项:
-
•
zip
:-r
(递归压缩目录),-m
(压缩后删除原文件)。 -
•
unzip
:-d
(指定解压目录),-l
(查看.zip
文件列表)。
示例:
# 将 /data 目录压缩为 data.zip(递归包含子目录)
$ zip -r data.zip /data# 压缩 file1.txt 和 file2.txt 为 files.zip
$ zip files.zip file1.txt file2.txt# 解压 data.zip 到当前目录
$ unzip data.zip# 解压 data.zip 到 /tmp 目录
$ unzip data.zip -d /tmp# 查看 data.zip 中的文件列表
$ unzip -l data.zip
十一、其他实用命令
1. history
:查看命令历史
功能:显示当前用户在 Shell 中执行过的命令历史(默认存储在 ~/.bash_history
)。
语法:history [选项]
常用选项:-c
(清空命令历史),-d 行号
(删除指定行的历史命令)。
示例:
# 查看最近 10 条命令历史
$ history 10101 ls -l102 cd /data103 pwd104 tar -czvf data.tar.gz /data105 gzip file.txt106 history 10# 清空命令历史
$ history -c# 删除第 102 条历史命令
$ history -d 102# 执行历史命令中的第 101 条(!101)
$ !101
ls -l
2. alias
/unalias
:命令别名
功能:alias
用于为命令创建别名(简化长命令或自定义命令),unalias
用于删除别名。
语法:
-
•
alias 别名='命令'
-
•
unalias 别名
示例:
# 创建别名 ll(等同于 'ls -alh')
$ alias ll='ls -alh'# 使用别名
$ ll
total 32K
drwxr-xr-x 4 user group 4.0K Jan 15 14:30 .
drwxr-xr-x 5 root root 4.0K Jan 10 09:15 ..
-rw------- 1 user group 256 Jan 12 14:20 .bash_history
-rw-r--r-- 1 user group 220 Jan 10 09:15 .bash_logout# 创建别名 grep='grep --color=auto'(高亮显示匹配结果)
$ alias grep='grep --color=auto'# 删除别名 ll
$ unalias ll# 查看所有别名
$ alias
alias ll='ls -alh'
alias grep='grep --color=auto'
3. crontab
:定时任务
功能:设置周期性执行的定时任务(如每日备份、每周清理日志等)。
语法:crontab [选项]
常用选项:-e
(编辑当前用户的定时任务),-l
(列出当前用户的定时任务),-r
(删除当前用户的定时任务)。
定时任务格式:
* * * * * 命令
│ │ │ │ │
│ │ │ │ └─ 星期几(0-6,0 表示周日)
│ │ │ └─── 月份(1-12)
│ │ └───── 日期(1-31)
│ └─────── 小时(0-23)
└───────── 分钟(0-59)
特殊符号:
-
•
*
:任意值。 -
•
,
:分隔多个值(如1,3,5
表示 1 点、3 点、5 点)。 -
•
-
:范围(如1-5
表示 1 到 5)。 -
•
/
:步长(如*/10
表示每 10 分钟)。
示例:
# 编辑当前用户的定时任务
$ crontab -e
# 添加以下内容(每天凌晨 3 点备份 /data 目录到 /backup)
0 3 * * * tar -czvf /backup/data_$(date +\%Y\%m\%d).tar.gz /data
# 注意:在 crontab 中,% 需要转义为 \%# 列出当前用户的定时任务
$ crontab -l
0 3 * * * tar -czvf /backup/data_$(date +\%Y\%m\%d).tar.gz /data# 删除当前用户的定时任务
$ crontab -r
4. date
:查看/设置系统时间
功能:显示或设置系统的日期和时间。
语法:date [选项] [+格式]
常用选项:-s
(设置时间,需 root 权限)。
常用格式:
-
•
%Y
:4 位年份(如 2024)。 -
•
%m
:2 位月份(01-12)。 -
•
%d
:2 位日期(01-31)。 -
•
%H
:2 位小时(00-23)。 -
•
%M
:2 位分钟(00-59)。 -
•
%S
:2 位秒(00-59)。 -
•
%F
:短日期格式(%Y-%m-%d)。 -
•
%T
:短时间格式(%H:%M:%S)。
示例:
# 显示当前时间(默认格式)
$ date
Mon Jan 15 14:30:00 CST 2024# 显示当前时间(自定义格式)
$ date +"%Y-%m-%d %H:%M:%S"
2024-01-15 14:30:00# 显示当前时间戳(Unix 时间,秒数)
$ date +%s
1705315800# 将时间戳转换为可读时间
$ date -d @1705315800
Mon Jan 15 14:30:00 CST 2024# 设置系统时间为 2024-01-01 12:00:00(需 root 权限)
$ sudo date -s "2024-01-01 12:00:00"
5. cal
:显示日历
功能:显示指定月份或年份的日历。
语法:cal [选项] [月份] [年份]
常用选项:-3
(显示上个月、当前月、下个月的日历),-y
(显示当前年份的日历)。
示例:
# 显示当前月份的日历
$ calJanuary 2024
Su Mo Tu We Th Fr Sa1 2 3 4 5 67 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31# 显示 2024 年 1 月的日历
$ cal 1 2024# 显示当前年份的日历
$ cal -y# 显示上个月、当前月、下个月的日历
$ cal -3December 2023 January 2024 February 2024
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa1 2 1 2 3 4 5 6 1 2 33 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29
31
6. which
:查找命令路径
功能:查找指定命令的可执行文件路径(在 $PATH
环境变量中搜索)。
语法:which 命令
示例:
# 查找 ls 命令的路径
$ which ls
/bin/ls# 查找 python3 命令的路径
$ which python3
/usr/bin/python3# 查找不存在的命令(返回空)
$ which not_exist
7. whereis
:查找命令相关文件
功能:查找命令的可执行文件、源代码、帮助文件等路径(比 which
更全面)。
语法:whereis 命令
示例:
# 查找 ls 命令的相关文件
$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz# 查找 python3 命令的相关文件
$ whereis python3
python3: /usr/bin/python3 /usr/bin/python3.8 /usr/lib/python3.8 /usr/share/man/man1/python3.1.gz
8. man
:查看命令手册
功能:显示指定命令的详细手册(包括语法、选项、示例等)。
语法:man [章节] 命令
手册章节:
-
• 1:用户命令(如
ls
、cd
)。 -
• 2:系统调用(如
open
、read
)。 -
• 3:库函数(如
printf
、malloc
)。 -
• 4:设备文件(如
/dev/sda
)。 -
• 5:配置文件格式(如
/etc/passwd
)。 -
• 6:游戏。
-
• 7:杂项(如
man-pages
)。 -
• 8:管理命令(如
fdisk
、mkfs
)。
示例:
# 查看 ls 命令的手册(默认章节 1)
$ man ls# 查看 passwd 配置文件的手册(章节 5)
$ man 5 passwd# 退出手册(按 q)
9. info
:查看命令信息
功能:比 man
更详细的命令信息工具,支持超链接导航(类似网页)。
语法:info 命令
示例:
# 查看 ls 命令的 info 信息
$ info ls
# 导航快捷键:
# 空格:下一页
# Del:上一页
# Tab:跳转到下一个链接
# Enter:进入链接
# q:退出
10. echo
:输出文本
功能:将文本输出到标准输出(终端),常用于变量输出、重定向等。
语法:echo [选项] [文本]
常用选项:-e
(解析转义字符,如 \n
换行、\t
制表符),-n
(不输出末尾换行符)。
示例:
# 输出普通文本
$ echo "Hello, Linux!"
Hello, Linux!# 输出变量值
$ name="Linux"
$ echo "My name is $name"
My name is Linux# 解析转义字符(换行)
$ echo -e "Line 1\nLine 2"
Line 1
Line 2# 不输出末尾换行符
$ echo -n "No newline: "
No newline: $
11. clear
:清屏
功能:清空终端屏幕内容(将光标移动到左上角,屏幕内容并未真正删除,可通过滚动查看)。
语法:clear
示例:
# 清屏
$ clear
12. exit
:退出 Shell
功能:退出当前 Shell 会话(若为登录 Shell,则退出系统)。
语法:exit [状态码]
状态码:0 表示成功,非 0 表示失败(可自定义)。
示例:
# 退出当前 Shell(状态码 0)
$ exit# 退出当前 Shell 并返回状态码 1(表示失败)
$ exit 1
十二、学习建议
Linux 命令数量庞大,初学者无需一次性掌握所有命令,建议按以下路径学习:
-
1. 基础操作:先掌握文件管理(
ls
、cd
、cp
、mv
、rm
)、文本查看(cat
、less
、head
、tail
)、系统信息(uname
、df
、free
)等日常高频命令。 -
2. 文本处理:学习
grep
、sed
、awk
三大文本处理工具,这是运维和脚本编程的核心。 -
3. 权限与用户:理解
chmod
、chown
、useradd
、passwd
等权限和用户管理命令,保障系统安全。 -
4. 进程与网络:掌握
ps
、top
、kill
、netstat
/ss
、ping
、ssh
等进程和网络管理命令,监控系统状态。 -
5. 进阶工具:学习
crontab
(定时任务)、tar
(压缩解压)、apt
/yum
(软件包管理)等进阶工具,提升工作效率。
学习方法:
-
• 多动手:每个命令都要亲自尝试,结合实际场景(如用
grep
搜索日志,用tar
备份文件)。 -
• 查手册:遇到不熟悉的命令,及时用
man
或--help
查看帮助文档。 -
• 写脚本:将常用命令组合成 Shell 脚本(如自动备份脚本),实现自动化。
-
• 参与社区:在 Linux 论坛(如 Stack Overflow、V2EX)提问或回答问题,加深理解