Linux 命令大全:新手入门必看的 80+ 实用命令详解

释放双眼,带上耳机,听听看~!

写在前面

刚接触 Linux 的时候,面对黑乎乎的终端窗口,很多人都会懵:这玩意儿怎么用?命令敲错了会不会把系统搞崩?

别慌,Linux 命令其实没那么难。日常工作中真正高频使用的命令也就几十个,掌握了这些,90% 的场景都能应付。这篇文章把这些命令按功能分好类,每个都配上实际例子,照着敲一遍就能学会。

建议先收藏,以后遇到问题直接查对应分类,比百度搜半天快多了。

19715cbbdb215d2f11e6801cb35b4494


一、文件和目录操作(最常用的)

1. ls – 查看目录内容

这是用得最多的命令,查看当前目录有什么文件和文件夹。

ls                  # 查看当前目录
ls -l               # 详细列表,显示文件大小、权限、时间
ls -a               # 显示隐藏文件(以.开头的)
ls -lh              # 文件大小用 K/M/G 显示,更直观
ls /home            # 查看指定目录

例子:

ls -lh
# 输出类似:
# drwxr-xr-x 2 root root 4.0K Jan 10 10:00 Documents
# -rw-r--r-- 1 root root 2.5M Jan 10 09:30 photo.jpg

d 开头的是目录,- 开头的是文件,4.0K 和 2.5M 是大小。


2. cd – 切换目录

从一个目录跳到另一个目录。

cd /home            # 进入 home 目录
cd Documents        # 进入当前目录下的 Documents
cd ..               # 返回上一级目录
cd ~                # 回到用户主目录(比如 /root 或 /home/用户名)
cd -                # 返回上一次所在的目录

小技巧: cd 后面不写路径,默认回到主目录,等于 cd ~。


3. pwd – 显示当前路径

有时候转了好几层目录,忘了自己在哪,pwd 告诉你当前位置。

pwd
# 输出:/home/user/Documents/Projects

4. mkdir – 创建目录

mkdir test              # 创建一个叫 test 的目录
mkdir -p a/b/c          # 创建多层目录,a 下面有 b,b 下面有 c
mkdir test1 test2       # 同时创建多个目录

-p 参数很好用,一次性建多层目录,不用一层一层建。


5. rm – 删除文件和目录

这个命令用得很多,但也有点危险,删了就找不回来了。

rm file.txt             # 删除文件
rm -r folder            # 删除目录(必须加 -r)
rm -rf folder           # 删除目录且不提示确认(f 是强制)
rm -i file.txt          # 删除前询问确认

注意事项:

  • 删目录必须加 -r,否则报错
  • rm -rf 没有确认提示,慎用,尤其是 rm -rf /(这会删掉整个系统)
  • 建议习惯用 rm -i,删前多确认一次

6. cp – 复制文件和目录

cp file1.txt file2.txt          # 把 file1 复制一份叫 file2
cp file.txt /home/backup/       # 复制到指定目录
cp -r folder1 folder2           # 复制目录(必须加 -r)
cp -p file.txt backup.txt       # 复制时保留原文件的权限和时间

7. mv – 移动或重命名

mv 有两个功能:移动文件到其他目录,或者给文件改名字。

mv old.txt new.txt              # 重命名文件
mv file.txt /home/docs/         # 移动文件到其他目录
mv folder1 /home/backup/        # 移动目录
mv *.txt /home/docs/            # 把所有 txt 文件移到 docs 目录

8. touch – 创建空文件或更新时间戳

touch newfile.txt       # 创建一个空文件
touch existing.txt      # 更新文件的时间戳(访问和修改时间)
touch a.txt b.txt       # 同时创建多个文件

创建空文件干嘛用?有时候脚本需要判断文件是否存在,先 touch 一个占位。


9. cat – 查看文件内容

小文件直接 cat,大文件别用,会刷屏。

cat file.txt               # 显示文件全部内容
cat -n file.txt            # 显示内容并带行号
cat a.txt b.txt > c.txt    # 把 a 和 b 合并写入 c

10. more 和 less – 分页查看大文件

文件太大,cat 会刷屏,用 more 或 less 分页看。

more largefile.txt     # 分页查看,按空格翻页,按 q 退出
less largefile.txt     # 比 more 更好用,可以上下翻页,按 q 退出

less 功能更强,可以搜索(按 / 输入关键词),建议大文件都用 less。


11. head 和 tail – 查看文件开头或结尾

只看文件的前几行或后几行。

head file.txt             # 显示前 10 行
head -n 20 file.txt       # 显示前 20 行
tail file.txt             # 显示后 10 行
tail -n 50 file.txt       # 显示后 50 行
tail -f logfile.txt       # 实时查看文件尾部(日志监控常用)

tail -f 监控日志特别有用,日志文件不断更新,你能实时看到新内容。


12. find – 查找文件

不知道文件在哪,find 帮你找。

find /home -name "*.txt"          # 在 home 目录找所有 txt 文件
find . -name "test*"              # 在当前目录找以 test 开头的文件
find / -size +100M                # 找大于 100M 的文件
find /home -type d                # 只找目录
find . -mtime -7                  # 找最近 7 天修改过的文件

find 功能很强,可以按名字、大小、类型、时间等多种条件搜索。


13. grep – 搜索文件内容

在文件里找关键词,grep 是神器。

grep "error" logfile.txt          # 在文件里找 error这个词
grep -i "error" logfile.txt       # 忽略大小写,Error、ERROR都能匹配
grep -n "error" logfile.txt       # 显示行号
grep -r "error" /home/logs/       # 递归搜索整个目录
grep -c "error" logfile.txt       # 只显示匹配了多少行
grep -v "error" logfile.txt       # 显示不包含 error 的行

配合其他命令用更强大:

cat logfile.txt | grep "error"    # 先 cat 再 grep
ps aux | grep nginx               # 查找 nginx 进程

14. ln – 创建链接

链接分两种:软链接(类似快捷方式)和硬链接。

ln -s /home/file.txt link.txt     # 创建软链接(最常用)
ln /home/file.txt hardlink.txt    # 创建硬链接

软链接更常用,删了原文件,软链接会失效;硬链接相当于文件的另一个入口,删了原文件,硬链接还能访问。


15. tree – 树状显示目录结构

比 ls 更直观,能看到目录的层级结构。

tree                # 显示当前目录的树状结构
tree -L 2           # 只显示 2 层深度
tree /home          # 显示指定目录
tree -d             # 只显示目录,不显示文件

如果系统没有 tree,需要先安装:yum install tree 或 apt install tree


16. file – 查看文件类型

有时候文件没后缀名,不知道是什么类型,file 命令告诉你。

file photo.jpg
# 输出:photo.jpg: JPEG image data, JFIF standard 1.01

file document.pdf
# 输出:document.pdf: PDF document, version 1.4

file script.sh
# 输出:script.sh: Bourne-Again shell script, ASCII text executable

17. stat – 查看文件详细信息

比 ls -l 更详细,能看到访问时间、修改时间、状态改变时间。

stat file.txt
# 输出包含:
# Size: 1024        # 文件大小
# Access: 2025-01-10 10:00:00   # 访问时间
# Modify: 2025-01-09 15:30:00   # 修改时间
# Change: 2025-01-09 15:30:00   # 状态改变时间

二、文件内容编辑和处理

18. echo – 输出文本

echo "Hello World"              # 输出文字
echo "Hello" > file.txt         # 把文字写入文件(覆盖原有内容)
echo "Hello" >> file.txt        # 追加到文件末尾
echo -n "Hello"                 # 输出不换行
echo $PATH                      # 输出环境变量的值

写脚本时经常用 echo 输出提示信息或者写入文件。


19. wc – 统计文件行数、字数、字节数

wc file.txt             # 显示行数、字数、字节数
wc -l file.txt          # 只显示行数
wc -w file.txt          # 只显示字数
wc -c file.txt          # 只显示字节数
wc -l *.txt             # 统计所有 txt 文件的行数

20. sort – 排序文件内容

sort file.txt               # 按字母顺序排序
sort -n file.txt            # 按数字排序
sort -r file.txt            # 反向排序
sort -u file.txt            # 排序并去重
sort -k 2 file.txt          # 按第 2 列排序

21. uniq – 去除重复行

uniq file.txt               # 去除连续重复的行
uniq -c file.txt            # 显示每行出现的次数
sort file.txt | uniq        # 先排序再去重(更彻底)

uniq 只去除连续重复的行,配合 sort 用效果更好。


22. cut – 提取文件中的列

文件是按列排列的(比如 CSV),提取某一列用 cut。

cut -d ',' -f 1 file.csv         # 用逗号分隔,取第 1 列
cut -d ':' -f 1,3 /etc/passwd    # 用冒号分隔,取第 1 和第 3 列
cut -c 1-5 file.txt              # 取每行的第 1-5 个字符

23. diff – 比较两个文件的差异

diff file1.txt file2.txt         # 显示差异
diff -u file1.txt file2.txt      # 用 unified 格式显示(更易读)
diff -r folder1 folder2          # 比较两个目录的差异

24. sed – 流编辑器(替换文本)

sed 功能很强大,最常用的是替换文本。

sed 's/old/new/' file.txt            # 把每行第一个 old 替换为 new
sed 's/old/new/g' file.txt           # 把所有 old 替换为 new(g 表示全局)
sed -i 's/old/new/g' file.txt        # 直接修改文件(-i 表示修改原文件)
sed '/^$/d' file.txt                 # 删除空行
sed '5d' file.txt                    # 删除第 5 行

sed 还能做很多复杂操作,但这几个是最常用的。


25. awk – 文本处理工具

awk 比 sed 更强大,可以按列处理数据,还能做计算。

awk '{print $1}' file.txt            # 打印每行的第 1 列(默认空格分隔)
awk -F ',' '{print $1,$3}' file.csv  # 用逗号分隔,打印第 1 和第 3 列
awk '{sum += $1} END {print sum}' numbers.txt   # 计算第 1 列的总和
awk '$3 > 100' file.txt              # 打印第 3 列大于 100 的行
awk 'NR==5' file.txt                 # 只打印第 5 行

awk 适合处理结构化文本,比如日志分析、数据提取。


26. tr – 字符转换

tr 'a-z' 'A-Z' file.txt          # 小写转大写
tr 'A-Z' 'a-z' file.txt          # 大写转小写
tr -d '0-9' file.txt             # 删除所有数字
tr -s ' ' file.txt               # 把多个空格压缩成一个

27. tee – 同时输出到屏幕和文件

tee output.txt               # 输出到屏幕并写入文件
tee -a output.txt            # 追加写入文件
ls | tee list.txt            # ls 结果显示在屏幕并写入 list.txt

配合管道使用,既能看到结果又能保存记录。


三、压缩和解压

28. tar – 打包和压缩(最常用)

tar 是 Linux 最常用的打包工具,配合 gzip 或 bzip2 压缩。

tar -cvf archive.tar folder          # 打包文件夹(不压缩)
tar -czvf archive.tar.gz folder      # 打包并用 gzip 压缩
tar -cjvf archive.tar.bz2 folder     # 打包并用 bzip2 压缩
tar -xvf archive.tar                 # 解包
tar -xzvf archive.tar.gz             # 解包 gzip 压缩的文件
tar -xjvf archive.tar.bz2            # 解包 bzip2 压缩的文件
tar -xzvf archive.tar.gz -C /home/   # 解包到指定目录

参数解释:

  • c:创建(打包)
  • x:解包
  • v:显示过程
  • f:指定文件名
  • z:gzip 压缩/解压
  • j:bzip2 压缩/解压
  • C:指定目标目录

记住这几个组合就够了:打包用 czvf,解压用 xzvf。


29. gzip 和 gunzip – gzip 压缩解压

gzip file.txt                # 压缩文件,生成 file.txt.gz(原文件消失)
gzip -k file.txt             # 压缩但保留原文件
gunzip file.txt.gz           # 解压
gzip -d file.txt.gz          # 解压(等于 gunzip)
gzip -r folder               # 递归压缩目录里的所有文件

gzip 只能压缩单个文件,要压缩多个文件先用 tar 打包。


30. zip 和 unzip – zip 格式压缩解压

zip 格式在 Windows 上很常见,Linux 也能用。

zip archive.zip file1 file2          # 压缩多个文件
zip -r archive.zip folder            # 压缩目录
unzip archive.zip                    # 解压
unzip archive.zip -d /home/          # 解压到指定目录
unzip -l archive.zip                 # 查看压缩包内容(不解压)

31. xz 和 unxz – xz 格式压缩解压

xz 压缩率比 gzip 更高,但速度慢一些。

xz file.txt                  # 压缩文件,生成 file.txt.xz
xz -k file.txt               # 压缩但保留原文件
xz -d file.txt.xz            # 解压
unxz file.txt.xz             # 解压(等于 xz -d)

四、系统信息查看

32. uname – 查看系统信息

uname -a                     # 显示所有系统信息
uname -r                     # 只显示内核版本
uname -m                     # 显示系统架构(x86_64 等)
uname -n                     # 显示主机名

33. hostname – 查看和设置主机名

hostname                     # 显示主机名
hostname newname             # 设置新主机名(临时生效)
hostnamectl set-hostname newname    # 永久设置主机名(CentOS 7+)

34. uptime – 查看系统运行时间和负载

uptime
# 输出类似:
# 10:30:00 up 5 days, 2:15, 3 users, load average: 0.5, 0.3, 0.1

up 5 days:系统运行了 5 天
load average:系统负载,三个数值分别是 1 分钟、5 分钟、15 分钟的平均负载。一般超过 CPU 核心数就说明负载较高。


35. date – 显示和设置时间

date                         # 显示当前时间
date +%Y-%m-%d               # 只显示日期(格式:2025-01-10)
date +%H:%M:%S               # 只显示时间
date -s "2025-01-10 10:00:00"    # 设置时间

36. cal – 显示日历

cal                          # 显示当月日历
cal 2025                     # 显示 2025 年全年日历
cal 1 2025                   # 显示 2025 年 1 月

37. free – 查看内存使用情况

free                         # 显示内存使用(单位 KB)
free -h                      # 用 MB/GB 显示,更直观
free -m                      # 单位 MB

输出解释:

  • total:总内存
  • used:已使用
  • free:空闲
  • available:可用(包括可回收的缓存)
  • buff/cache:缓冲和缓存

看内存够不够,主要看 available。


38. df – 查看磁盘使用情况

df                           # 显示磁盘使用
df -h                        # 用 MB/GB 显示
df -T                        # 显示文件系统类型
df -i                        # 显示 inode 使用情况

inode 是什么?Linux 系统中,文件存储需要两个东西:数据块(存内容)和 inode(存元信息,比如权限、时间)。有时候磁盘空间还有很多,但 inode 满了,也无法创建新文件。


39. du – 查看目录占用空间

du folder                    # 显示目录占用
du -h folder                 # 用 MB/GB 显示
du -sh folder                # 只显示总大小(不显示子目录)
du -h --max-depth=1 folder   # 只显示 1 层深度
du -ah | sort -rh | head -10 # 找出占用最大的 10 个文件/目录

40. top – 实时查看系统状态

top 是查看系统状态的”神器”,能看到 CPU、内存、进程等信息。

top                          # 打开 top 监控界面

进入 top 后:

  • 按 P:按 CPU 使用率排序
  • 按 M:按内存使用率排序
  • 按 T:按运行时间排序
  • 按 k:输入 PID 可以杀进程
  • 按 q:退出

常用看几项:

  • CPU 使用率:us(用户)、sy(系统)、id(空闲)
  • 内存:看 free 和 available
  • 进程列表:看哪个进程占用高

41. htop – 更友好的系统监控

htop 比 top 界面更美观,操作更方便。

htop                         # 打开 htop

需要先安装:yum install htop 或 apt install htop

htop 可以鼠标点击操作,支持横向滚动,比 top 好用很多。


42. vmstat – 查看系统性能统计

vmstat                       # 显示一次统计
vmstat 1 5                   # 每秒刷新,共刷新 5 次
vmstat -s                    # 显示详细统计

43. iostat – 查看 IO 状态

iostat                       # 显示 IO 统计
iostat -x                    # 更详细的信息
iostat 1 5                   # 每秒刷新,共 5 次

44. lsblk – 查看块设备信息

lsblk                        # 显示块设备(硬盘、分区等)
lsblk -f                     # 显示文件系统类型和挂载点

45. lspci – 查看 PCI 设备

lspci                        # 显示 PCI 设备列表
lspci -v                     # 详细信息

看网卡、显卡等硬件信息用这个。


46. lsusb – 查看 USB 设备

lsusb                        # 显示 USB 设备列表
lsusb -v                     # 详细信息

47. dmidecode – 查看硬件信息

dmidecode -t system          # 查看系统信息(制造商、型号等)
dmidecode -t memory          # 查看内存信息
dmidecode -t processor       # 查看处理器信息

需要 root 权限。


五、进程管理

48. ps – 查看进程

ps                           # 显示当前用户的进程
ps aux                       # 显示所有进程详细信息
ps -ef                       # 另一种格式显示所有进程
ps aux | grep nginx          # 查找 nginx 进程

输出解释(aux 格式):

  • USER:运行进程的用户
  • PID:进程 ID
  • %CPU:CPU 使用率
  • %MEM:内存使用率
  • COMMAND:进程命令

49. pgrep 和 pkill – 查找和杀死进程

pgrep nginx                  # 查找 nginx 进程的 PID
pgrep -u root nginx          # 查找 root 用户运行的 nginx 进程
pkill nginx                  # 杀死所有 nginx 进程
pkill -9 nginx               # 强制杀死(-9 是强制信号)
pkill -u root                # 杀死 root 用户的所有进程

比 ps | grep 再 kill 方便多了。


50. kill – 杀死进程

kill 1234                    # 杀死 PID 为 1234 的进程
kill -9 1234                 # 强制杀死
kill -l                      # 列出所有信号

常用信号:

  • 15(默认):正常终止,进程可以清理资源
  • 9:强制终止,进程立即结束
  • 2:中断(Ctrl+C)
  • 1:重启进程

51. killall – 按名字杀死进程

killall nginx                # 杀死所有 nginx 进程
killall -9 nginx             # 强制杀死
killall -u root nginx        # 只杀死 root 用户运行的

52. nice 和 renice – 设置进程优先级

优先级范围:-20(最高)到 19(最低)。默认是 0。

nice -n 10 ./script.sh       # 以优先级 10 运行脚本(较低)
nice -n -5 ./script.sh       # 以优先级 -5 运行(较高)
renice -n 5 -p 1234          # 把 PID 1234 的优先级改为 5
renice -n -10 -u root        # 把 root 用户所有进程优先级改为 -10

53. nohup – 后台运行不中断

SSH 断开后,前台进程会被杀掉。nohup 让进程在后台持续运行。

nohup ./script.sh &          # 后台运行,输出写到 nohup.out
nohup ./script.sh > output.log 2>&1 &   # 输出到指定文件

& 表示后台运行,2>&1 表示把错误输出也写到文件里。


54. jobs、fg、bg – 作业控制

jobs                         # 查看后台作业
fg %1                        # 把作业 1 调到前台
bg %1                        # 把作业 1 放到后台继续运行
Ctrl+Z                       # 暂停当前前台进程(放入后台)
Ctrl+C                       # 终止当前前台进程

55. watch – 定时执行命令

watch -n 1 free -h           # 每秒刷新内存使用情况
watch -n 5 "ps aux | grep nginx"   # 每 5 秒查看 nginx 进程
watch -d free -h             # 高亮显示变化的部分

六、网络相关

56. ifconfig – 查看和配置网络接口

ifconfig                     # 显示所有网络接口
ifconfig eth0                # 只显示 eth0
ifconfig eth0 192.168.1.100  # 设置 IP 地址(临时)
ifconfig eth0 up             # 启用网卡
ifconfig eth0 down           # 禁用网卡

CentOS 7+ 可能没有 ifconfig,用 ip 命令替代。


57. ip – 新一代网络配置命令

ip addr                      # 显示所有 IP 地址
ip addr show eth0            # 显示 eth0 的 IP
ip link                      # 显示网络接口
ip link set eth0 up          # 启用网卡
ip link set eth0 down        # 禁用网卡
ip addr add 192.168.1.100/24 dev eth0   # 设置 IP 地址
ip route                     # 显示路由表
ip route add default via 192.168.1.1    # 设置默认路由

58. ping – 测试网络连通性

ping 192.168.1.1             # ping IP
ping www.baidu.com           # ping 域名
ping -c 5 192.168.1.1        # ping 5 次后停止
ping -i 2 192.168.1.1        # 每次间隔 2 秒
ping -s 1000 192.168.1.1     # 发送 1000 字节的包

ping 不通不一定是网络问题,可能是对方禁 ping 或防火墙拦截。


59. traceroute – 查看网络路径

traceroute www.baidu.com     # 查看到达百度经过的路由
traceroute -n 192.168.1.100  # 不解析域名,只显示 IP

能看到网络包经过哪些路由器,哪一段慢。


60. nslookup 和 dig – DNS 查询

nslookup www.baidu.com       # 查询域名解析
nslookup www.baidu.com 8.8.8.8   # 用指定 DNS 服务器查询
dig www.baidu.com            # 更详细的 DNS 信息
dig @8.8.8.8 www.baidu.com   # 用指定 DNS 查询
dig +short www.baidu.com     # 只显示解析结果

61. netstat – 查看网络连接和端口

netstat                      # 显示所有网络连接
netstat -tunlp               # 显示 TCP/UDP 端口和对应进程
netstat -an                  # 显示所有连接(包括监听)
netstat -rn                  # 显示路由表
netstat -i                   # 显示网络接口统计

看端口占用常用:netstat -tunlp | grep 80


62. ss – 新一代网络统计工具

ss 比 netstat 更快,功能更强。

ss                           # 显示所有 socket
ss -tunlp                    # 显示 TCP/UDP 端口和进程
ss -s                        # 显示统计摘要
ss -l                        # 只显示监听的 socket
ss -tan | grep :80           # 查看端口 80 的连接

63. curl – 发送 HTTP 请求

curl http://www.baidu.com    # 获取网页内容
curl -I http://www.baidu.com # 只获取响应头
curl -o file.html http://www.baidu.com   # 保存到文件
curl -X POST -d "data=test" http://example.com/api   # POST 请求
curl -H "Content-Type: application/json" http://example.com   # 自定义请求头
curl -u user:pass http://example.com    # 带认证
curl --proxy http://proxy.example.com:8080 http://www.baidu.com   # 使用代理

curl 功能很强,测试 API、下载文件、模拟请求都能用。


64. wget – 下载文件

wget http://example.com/file.zip     # 下载文件
wget -O newname.zip http://example.com/file.zip   # 重命名保存
wget -c http://example.com/file.zip  # 断点续传
wget -b http://example.com/file.zip  # 后台下载
wget -r http://example.com/          # 递归下载整个网站
wget --limit-rate=1m http://example.com/file.zip   # 限速下载

65. ssh – 远程连接

ssh user@192.168.1.100       # 连接远程服务器
ssh -p 2222 user@192.168.1.100   # 指定端口
ssh -i key.pem user@192.168.1.100   # 使用密钥登录
ssh -L 8080:localhost:80 user@192.168.1.100   # 本地端口转发
ssh -R 80:localhost:8080 user@192.168.1.100   # 远程端口转发

66. scp – 远程复制文件

scp file.txt user@192.168.1.100:/home/   # 上传文件到远程
scp user@192.168.1.100:/home/file.txt ./   # 从远程下载文件
scp -r folder user@192.168.1.100:/home/    # 上传目录
scp -P 2222 file.txt user@192.168.1.100:/home/   # 指定端口

67. sftp – 安全文件传输

sftp user@192.168.1.100      # 连接远程

进入 sftp 后可用命令:

  • put file.txt:上传文件
  • get file.txt:下载文件
  • ls:查看远程目录
  • cd:切换远程目录
  • lcd:切换本地目录
  • quit:退出

68. nmap – 网络扫描工具

nmap 192.168.1.100           # 扫描主机开放的端口
nmap -p 80,443 192.168.1.100 # 只扫描指定端口
nmap -sV 192.168.1.100       # 检测端口服务版本
nmap -A 192.168.1.100        # 全面扫描
nmap 192.168.1.0/24          # 扫描整个网段

需要先安装:yum install nmap 或 apt install nmap


七、用户和权限管理

69. useradd – 创建用户

useradd username             # 创建用户
useradd -m username          # 创建用户并创建主目录
useradd -s /bin/bash username    # 指定 shell
useradd -g groupname username    # 指定主组
useradd -G group1,group2 username    # 指定附加组

70. userdel – 删除用户

userdel username             # 删除用户
userdel -r username          # 删除用户和主目录

71. usermod – 修改用户

usermod -l newname oldname   # 改用户名
usermod -s /bin/zsh username # 修改 shell
usermod -G group1,group2 username   # 修改附加组
usermod -aG group username   # 添加到附加组(不覆盖原有组)
usermod -L username          # 锁定用户
usermod -U username          # 解锁用户

72. passwd – 设置密码

passwd                       # 修改自己的密码
passwd username              # 修改指定用户密码(需要 root)
passwd -l username           # 锁定用户密码
passwd -u username           # 解锁用户密码
passwd -d username           # 删除用户密码(不能登录)
passwd -e username           # 强制用户下次登录时改密码

73. groupadd – 创建组

groupadd groupname           # 创建组
groupadd -g 1000 groupname   # 指定 GID

74. groupdel – 删除组

groupdel groupname           # 删除组

75. groups – 查看用户所属组

groups                       # 查看自己所属组
groups username              # 查看指定用户所属组

76. id – 查看用户信息

id                           # 查看自己的 UID、GID、组
id username                  # 查看指定用户信息
id -u username               # 只显示 UID
id -g username               # 只显示主 GID

77. who – 查看登录用户

who                          # 显示所有登录用户
who -b                       # 显示系统启动时间
who -r                       # 显示运行级别

78. w – 显示登录用户和活动

w                            # 显示登录用户和正在做的事

比 who 更详细,能看到用户正在运行的命令。


79. last – 查看登录历史

last                         # 显示所有登录历史
last -n 10                   # 只显示最近 10 次
last username                # 只显示指定用户的登录历史
last -x                      # 显示系统重启和关机记录

80. su – 切换用户

su                           # 切换到 root
su username                  # 切换到指定用户
su - username                # 切换用户并加载其环境变量
su -c "command" username     # 以指定用户执行命令

su – 会切换到新用户的环境,su 只切换用户但不切换环境。


81. sudo – 以 root 权限执行命令

普通用户需要 root 权限执行某些命令,用 sudo。

sudo command                 # 以 root 权限执行命令
sudo -u username command     # 以指定用户执行命令
sudo -l                      # 查看自己可以用 sudo 执行哪些命令
sudo -k                      # 清除 sudo 密码缓存(下次执行要重新输入密码)
sudo -b command              # 后台执行命令

需要先配置 sudo 权限:visudo 编辑 /etc/sudoers 文件,添加:

username ALL=(ALL) ALL

82. chmod – 修改文件权限

Linux 文件权限分三部分:用户(u)、组(g)、其他人(o)。每部分有读(r=4)、写(w=2)、执行(x=1)三种权限。

chmod 755 file.sh            # 用户:7=4+2+1(读写执行),组:5=4+1(读执行),其他人:5(读执行)
chmod 644 file.txt           # 用户读写,组和他人只读
chmod +x file.sh             # 给所有人添加执行权限
chmod u+w file.txt           # 给用户添加写权限
chmod g-r file.txt           # 移除组的读权限
chmod -R 755 folder          # 递归修改目录权限

常用权限组合:

  • 755:脚本、程序(用户全权限,其他人可读可执行)
  • 644:普通文件(用户读写,其他人只读)
  • 600:私密文件(只有用户能读写)
  • 777:所有人全权限(慎用)

83. chown – 修改文件所有者

chown user file.txt          # 改用户
chown user:group file.txt    # 改用户和组
chown :group file.txt        # 只改组
chown -R user:group folder   # 递归修改目录
chown --reference=ref.txt file.txt   # 复制参考文件的权限

84. chgrp – 修改文件所属组

chgrp group file.txt         # 改组
chgrp -R group folder        # 递归修改

等于 chown :group file.txt。


85. umask – 设置默认权限

新创建的文件默认权限是多少?umask 决定的。

umask                        # 显示当前 umask 值(比如 0022)
umask 022                    # 设置 umask(新文件默认 755,目录 644)
umask 077                    # 设置 umask(新文件只有用户有权限)

umask 是权限的”补码”,实际权限 = 777 – umask。


86. lsattr 和 chattr – 查看和设置文件属性

除了普通权限,Linux 还有特殊属性。

lsattr file.txt              # 查看属性
chattr +i file.txt           # 设置不可修改属性(连 root 都不能改)
chattr -i file.txt           # 移除不可修改属性
chattr +a file.txt           # 只能追加内容,不能修改或删除
chattr -a file.txt           # 移除追加属性

+i 很有用,保护重要配置文件不被误改。


八、磁盘和文件系统管理

87. fdisk – 磁盘分区工具

fdisk -l                     # 查看所有磁盘分区
fdisk /dev/sdb               # 对 sdb 磁盘分区

进入 fdisk 后可用命令:

  • n:新建分区
  • d:删除分区
  • p:查看分区表
  • w:保存退出
  • q:不保存退出

88. mkfs – 格式化分区

mkfs.ext4 /dev/sdb1          # 格式化为 ext4
mkfs.xfs /dev/sdb1           # 格式化为 xfs
mkfs -t ext4 /dev/sdb1       # 指定类型格式化

89. mount 和 umount – 挂载和卸载

mount /dev/sdb1 /mnt         # 挂载分区到 /mnt 目录
mount -t ext4 /dev/sdb1 /mnt # 指定文件系统类型挂载
mount -o ro /dev/sdb1 /mnt   # 只读挂载
mount /dev/cdrom /mnt        # 挂载光驱
umount /mnt                  # 卸载
umount -l /mnt               # 强制卸载(忙碌时)

永久挂载要写入 /etc/fstab 文件:

/dev/sdb1    /mnt    ext4    defaults    0 0

90. blkid – 查看块设备 UUID

blkid                        # 显示所有块设备的 UUID 和类型
blkid /dev/sdb1              # 显示指定设备的 UUID

写 /etc/fstab 用 UUID 更稳定,比设备名可靠。


91. e2fsck – 检查和修复 ext 文件系统

e2fsck /dev/sdb1             # 检查文件系统
e2fsck -p /dev/sdb1          # 自动修复
e2fsck -f /dev/sdb1          # 强制检查

检查前要先卸载分区。


92. xfs_repair – 检查和修复 xfs 文件系统

xfs_repair /dev/sdb1         # 检查和修复 xfs 文件系统
xfs_repair -n /dev/sdb1      # 只检查不修复

九、软件包管理

93. yum – CentOS/RHEL 软件包管理

yum install package          # 安装软件包
yum remove package           # 删除软件包
yum update                   # 更新所有软件包
yum update package           # 更新指定软件包
yum search keyword           # 搜索软件包
yum list installed           # 列出已安装软件包
yum info package             # 显示软件包信息
yum clean all                # 清理缓存
yum history                  # 查看安装历史
yum reinstall package        # 重新安装

94. dnf – CentOS 8+/Fedora 软件包管理

dnf 是 yum 的下一代,命令基本一样:

dnf install package
dnf remove package
dnf update
dnf search keyword
dnf list installed
dnf info package
dnf clean all

95. apt – Debian/Ubuntu 软件包管理

apt install package          # 安装软件包
apt remove package           # 删除软件包
apt purge package            # 删除软件包和配置文件
apt update                   # 更新软件源
apt upgrade                  # 升级所有软件包
apt search keyword           # 搜索软件包
apt show package             # 显示软件包信息
apt list --installed         # 列出已安装软件包
apt autoremove               # 清理不需要的依赖包
apt clean                   # 清理下载缓存

apt-get 和 apt 命令差不多,apt 是 apt-get 的简化版,推荐用 apt。


96. rpm – RPM 包管理(低层)

rpm -ivh package.rpm         # 安装 rpm 包
rpm -e package               # 删除软件包
rpm -qa                      # 列出所有已安装包
rpm -qi package              # 显示软件包信息
rpm -ql package              # 显示软件包安装的文件列表
rpm -qf /path/file           # 查看文件属于哪个包
rpm -V package               # 检查软件包文件是否被修改

rpm 直接安装 rpm 文件,不自动解决依赖,建议用 yum/dnf。


97. dpkg – Debian 包管理(低层)

dpkg -i package.deb          # 安装 deb 包
dpkg -r package              # 删除软件包
dpkg -P package              # 删除软件包和配置文件
dpkg -l                      # 列出所有已安装包
dpkg -L package              # 显示软件包安装的文件列表
dpkg -S /path/file           # 查看文件属于哪个包

dpkg 直接安装 deb 文件,不自动解决依赖,建议用 apt。


98. pip – Python 包管理

pip install package          # 安装 Python 包
pip uninstall package        # 删除 Python 包
pip list                     # 列出已安装包
pip show package             # 显示包信息
pip freeze                   # 输出已安装包列表(用于导出依赖)
pip install -r requirements.txt    # 从文件安装依赖
pip search keyword           # 搜索包(已禁用)
pip --version                # 显示 pip 版本
pip install --upgrade package    # 升级包

99. npm – Node.js 包管理

npm install package          # 安装包
npm install -g package       # 全局安装
npm uninstall package        # 删除包
npm list                     # 列出已安装包
npm update package           # 更新包
npm run script               # 运行脚本
npm init                     # 创建 package.json
npm search keyword           # 搜索包

十、服务管理

100. systemctl – CentOS 7+/Ubuntu 16+ 服务管理

systemctl start service      # 启动服务
systemctl stop service       # 停止服务
systemctl restart service    # 重启服务
systemctl status service     # 查看服务状态
systemctl enable service     # 设置开机自启
systemctl disable service    # 关闭开机自启
systemctl is-enabled service # 查看是否开机自启
systemctl list-units --type=service    # 列出所有服务
systemctl list-unit-files --type=service   # 列出所有服务配置文件
systemctl daemon-reload      # 重载配置文件(修改配置后)

101. service – 传统服务管理

CentOS 6 和老版本用 service 命令。

service service_name start    # 启动服务
service service_name stop     # 停止服务
service service_name restart  # 重启服务
service service_name status   # 查看状态
service --status-all          # 查看所有服务状态

102. journalctl – 查看系统日志

journalctl                    # 查看所有日志
journalctl -u nginx           # 只看 nginx 服务日志
journalctl -f                 # 实时查看日志
journalctl --since today      # 只看今天的日志
journalctl --since "2025-01-10"   # 查看指定日期后的日志
journalctl -p err             # 只看错误级别日志
journalctl -b                 # 只看本次启动的日志
journalctl -k                 # 只看内核日志

103. chkconfig – 设置服务开机自启(老版本)

chkconfig --list              # 查看所有服务开机自启状态
chkconfig service on          # 设置开机自启
chkconfig service off         # 关闭开机自启
chkconfig --add service       # 添加服务到管理列表
chkconfig --del service       # 从管理列表删除服务

CentOS 7+ 用 systemctl enable/disable 替代。


十一、系统关机和重启

104. shutdown – 关机

shutdown                     # 一分钟后关机
shutdown -h now              # 立即关机
shutdown -h +10              # 10 分钟后关机
shutdown -h 20:00            # 20:00 关机
shutdown -c                  # 取消关机
shutdown -k now              # 只发送警告不关机

105. reboot – 重启

reboot                       # 重启
reboot -f                    # 强制重启(不调用 shutdown)

106. poweroff – 关机

poweroff                     # 关机
poweroff -f                  # 强制关机

等于 shutdown -h now。


107. halt – 停机

halt                         # 停机
halt -p                      # 停机并关闭电源
halt -f                      # 强制停机

108. init – 切换运行级别

init 0                       # 关机
init 6                       # 重启
init 3                       # 切换到多用户模式(无图形界面)
init 5                       # 切换到图形界面模式

十二、其他实用命令

109. history – 查看命令历史

history                      # 显示所有历史命令
history 10                   # 显示最近 10 条
history -c                   # 清空历史
!10                          # 执行第 10 条历史命令
!ls                          # 执行最近的 ls 命令
!!                           # 执行上一条命令

110. alias – 设置命令别名

alias                        # 显示所有别名
alias ll='ls -l'             # 设置 ll 别名
alias l='ls -lah'            # 设置 l 别名
unalias ll                   # 删除别名

写进 ~/.bashrc 永久生效。


111. source – 执行脚本文件

source ~/.bashrc             # 执行配置文件(重新加载)
source script.sh             # 执行脚本(在当前 shell)

等于 . ~/.bashrc。


112. export – 设置环境变量

export                       # 显示所有环境变量
export VAR=value             # 设置环境变量
export PATH=$PATH:/new/path  # 添加路径到 PATH

写进 ~/.bashrc 或 /etc/profile 永久生效。


113. env – 显示环境变量

env                          # 显示所有环境变量
env -i command               # 清空环境变量执行命令
env VAR=value command        # 设置临时环境变量执行命令

114. set – 显示 shell 变量

set                          # 显示所有变量(包括环境变量和 shell 变量)
set -o                       # 显示 shell 选项
set -e                       # 脚本出错立即退出
set -x                       # 显示执行的命令

115. unset – 删除变量

unset VAR                    # 删除变量
unset -f func                # 删除函数

116. crontab – 定时任务管理

crontab -l                   # 查看定时任务
crontab -e                   # 编辑定时任务
crontab -r                   # 删除所有定时任务
crontab -u user -l           # 查看指定用户的定时任务

定时任务格式:分 时 日 月 周 命令

例子:

# 每分钟执行
* * * * * /path/script.sh

# 每小时执行
0 * * * * /path/script.sh

# 每天 8 点执行
0 8 * * * /path/script.sh

# 每周一 8 点执行
0 8 * * 1 /path/script.sh

# 每月 1 号 0 点执行
0 0 1 * * /path/script.sh

117. at – 执行一次性定时任务

at now + 5 minutes           # 5 分钟后执行
at 10:00                     # 10 点执行
at 10:00 tomorrow            # 明天 10 点执行
atq                          # 查看待执行任务
atrm job_number              # 删除任务

输入命令后 Ctrl+D 保存。


118. time – 测量命令执行时间

time command                 # 测量命令执行时间
time -v command              # 详细输出

输出类似:

real    0m1.234s    # 实际时间
user    0m0.500s    # 用户态时间
sys     0m0.100s    # 内核态时间

119. man – 查看命令手册

man ls                       # 查看 ls 命令手册
man -k keyword               # 搜索包含关键词的手册
man 5 passwd                 # 查看第 5 章手册(配置文件)

手册章节:

  • 1:用户命令
  • 2:系统调用
  • 3:库函数
  • 4:特殊文件
  • 5:配置文件
  • 6:游戏
  • 7:杂项
  • 8:管理命令

120. info – 查看信息文档

info ls                      # 查看 ls 信息文档
info coreutils               # 查看 coreutils 信息

比 man 更详细,有超链接。


121. help – 查看内置命令帮助

help                         # 显示所有内置命令
help cd                      # 查看 cd 命令帮助

shell 内置命令(cd、echo 等)没有 man 手册,用 help。


122. whereis – 查找命令位置

whereis ls                   # 查找 ls 的位置
whereis -b ls                # 只查找二进制文件
whereis -m ls                # 只查找手册文件

123. which – 查找命令路径

which ls                     # 显示 ls 命令的完整路径
which -a ls                  # 显示所有匹配的路径

124. type – 查看命令类型

type ls                      # 查看 ls 是什么类型
type cd                      # 查看 cd 是什么类型

输出可能是:

  • alias:别名
  • builtin:内置命令
  • file:外部命令文件

125. locate – 快速查找文件

locate file.txt              # 快速查找文件
locate -i file.txt           # 忽略大小写
locate -r "\.txt$"           # 使用正则表达式

locate 比 find 快,因为它搜索预先建立的数据库。数据库需要定期更新:updatedb


126. updatedb – 更新 locate 数据库

updatedb                     # 更新 locate 数据库

127. xargs – 构建命令行参数

find . -name "*.txt" | xargs rm      # 找出所有 txt 文件并删除
find . -name "*.txt" | xargs -I {} mv {} backup/    # 移动到 backup 目录
cat urls.txt | xargs -n 1 curl       # 每行一个参数执行 curl
ls | xargs -n 3 echo                 # 每次传递 3 个参数

管道传递的结果,有些命令不能直接接收(比如 rm),需要 xargs 转换。


128. banner – 打印大字标题

banner "HELLO"               # 打印大字 HELLO

需要安装:yum install banner 或 apt install sysvbanner


129. yes – 持续输出

yes                          # 持续输出 y
yes "hello"                  # 持续输出 hello
yes | rm -r folder           # 删除时自动回答 y

130. seq – 生成数字序列

seq 10                       # 输出 1 到 10
seq 5 10                     # 输出 5 到 10
seq 1 2 10                   # 输出 1,3,5,7,9(步长 2)
seq -s ',' 1 10              # 输出 1,2,3,4,5,6,7,8,9,10(分隔符)
seq -w 1 10                  # 输出 01,02,...,10(等宽)

131. sleep – 延迟

sleep 5                      # 廜迟 5 秒
sleep 1m                     # 廜迟 1 分钟
sleep 1h                     # 廜迟 1 小时
sleep 0.5                    # 廜迟 0.5 秒

132. clear – 清屏

clear                        # 清屏

等于 Ctrl+L。


133. reset – 重置终端

reset                        # 重置终端

终端显示乱码时用这个重置。


134. script – 记录终端会话

script session.log           # 开始记录会话到 session.log
script -a session.log        # 追加记录
exit                         # 结束记录(或 Ctrl+D)

135. sha256sum – 计算文件 SHA256 哈希

sha256sum file.txt           # 计算哈希值
sha256sum -c checksum.txt    # 验证哈希值

类似的还有 sha1sum、sha512sum、md5sum。


136. base64 – 编码解码

base64 file.txt              # 编码文件内容
base64 -d encoded.txt        # 解码
echo "hello" | base64        # 编码字符串
echo "aGVsbG8=" | base64 -d  # 解码字符串

137. hexdump – 查看文件十六进制内容

hexdump file.txt             # 显示十六进制
hexdump -C file.txt          # 显示十六进制和 ASCII
hexdump -n 100 file.txt      # 只显示前 100 字节

138. dd – 复制和转换文件

dd 功能很强大,常用于磁盘操作。

dd if=/dev/sda of=disk.img   # 复制磁盘到文件
dd if=disk.img of=/dev/sdb   # 从文件复制到磁盘
dd if=/dev/zero of=test.bin bs=1M count=100   # 创建 100M 文件
dd if=file.txt of=new.txt bs=512 count=10     # 只复制前 512*10 字节

参数:

  • if:输入文件
  • of:输出文件
  • bs:块大小
  • count:块数量

139. split – 分割文件

split -b 100M largefile.bin  # 按 100M 分割
split -l 1000 largefile.txt  # 按 1000 行分割
split -b 100M largefile.bin part_   # 分割文件命名为 part_aa, part_ab...

140. paste – 合并文件行

paste file1.txt file2.txt    # 逐行合并两个文件
paste -d ',' file1.txt file2.txt    # 用逗号分隔合并
paste -s file.txt            # 把所有行合并成一行

写在最后

这篇文章整理了 140 多个 Linux 常用命令,覆盖了文件操作、内容处理、压缩解压、系统信息、进程管理、网络、用户权限、磁盘管理、软件包、服务管理、关机重启、定时任务等方面。

实际工作中,经常用的也就 30-40 个,把这些练熟了,大部分场景都能搞定。遇到问题先查对应的分类,比到处百度省事得多。

建议:

  1. 先把文件操作(ls、cd、mkdir、rm、cp、mv)练熟,这是基本功
  2. grep、find、tar 这三个是高频命令,务必掌握
  3. 遇到不会的命令,先 man 一下看看手册
  4. 建个自己的命令速查表,常用的记下来

有问题欢迎留言讨论,我会持续更新这篇文章。

声明:本站所有文章,如无特殊说明或标注,均来自于互联网,下载的软件和资源请在24小时之内删除,本站提供的资源只可作为下载、学习交流使用,其版权归原作者所有,其产生的任何后果均自己承担,本站不作任何责任承担,具体可查看本站免责声明。如已声明或标注原创,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,客服链接:点此前往,投诉邮箱:nc08wlkj@163.com

给TA赞赏
共{{data.count}}人
人已赞赏
技术教程

eNSP常用配置命令实战:跟着做就能学会

2026-4-24 22:05:49

技术分享

OpenClaw:开源AI代理框架如何重塑人机协作新范式

2026-3-23 23:55:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索