💌 所属专栏:【Linux】
😀 作 者:兰舟比特 🐾
🚀 个人简介:热爱开源系统与嵌入式技术,专注 Linux、网络通信、编程技巧、面试总结与软件工具分享,持续输出实用干货!
💡 欢迎大家:这里是兰舟比特的技术小站,喜欢的话请点赞、收藏、评论三连击!有问题欢迎留言交流😘😘😘
💻 Linux常用命令终极指南:从入门到精通
摘要:本文是一份全面、实用的Linux命令速查手册,涵盖文件操作、系统管理、网络配置、文本处理等核心领域。无论你是Linux新手还是需要复习的资深用户,这份指南都能帮助你提高命令行效率。文中包含100+高频命令、详细解释和实用示例,助你成为命令行高手!
📌 目录
- 前言:为什么需要掌握Linux命令?
- 第一部分:基础文件与目录操作
- 第二部分:系统信息与管理
- 第三部分:文本处理命令
- 第四部分:网络相关命令
- 第五部分:进程管理
- 第六部分:权限管理
- 第七部分:压缩与解压
- 第八部分:高级技巧与组合使用
- 结语:持续学习与效率提升
前言:为什么需要掌握Linux命令?
在当今的IT世界中,Linux系统无处不在:
- 90%的公有云基础设施运行在Linux上
- 超过80%的开发者使用Linux作为开发环境
- 几乎所有的服务器和嵌入式设备都基于Linux
掌握Linux命令行不仅能提高你的工作效率,还能加深对操作系统原理的理解。命令行相比图形界面有以下优势:
- 效率更高:熟练后操作速度远超GUI
- 可脚本化:自动化重复任务
- 远程友好:SSH连接下表现更佳
- 资源占用少:在低配设备上也能流畅运行
无论你是开发人员、系统管理员还是嵌入式工程师,这份指南都将成为你的得力助手!
第一部分:基础文件与目录操作
🔹 目录导航
1. pwd
- 显示当前工作目录
$ pwd
/home/user/projects
- 作用:Print Working Directory,显示当前所在目录的完整路径
- 使用场景:当你不确定自己在文件系统中的位置时
2. ls
- 列出目录内容
$ ls -la /etc
- 常用选项:
-l
:长格式显示(权限、所有者、大小等)-a
:显示隐藏文件(以.
开头的文件)-h
:人性化显示文件大小(KB、MB等)-t
:按修改时间排序-r
:反向排序
- 实用技巧:
# 按扩展名分组列出 ls -X # 只显示目录 ls -d */ # 按大小排序 ls -lS
3. cd
- 更改当前目录
$ cd /var/log
$ cd ~ # 回到家目录
$ cd .. # 返回上一级目录
$ cd - # 返回上一个工作目录
- 常用技巧:
cd
:不带参数直接回到家目录cd -
:在最近两个目录间切换cd /path/to/dir
:绝对路径导航
🔹 文件操作
4. touch
- 创建空文件或更新文件时间戳
$ touch newfile.txt
$ touch -t 202310150830.00 existing.txt # 设置特定时间戳
- 用途:创建测试文件、更新文件时间戳以触发某些操作
5. cp
- 复制文件或目录
$ cp file1.txt file2.txt
$ cp -r directory/ new_directory/ # 递归复制目录
$ cp -i source dest # 交互式,覆盖前询问
$ cp -v source dest # 显示详细操作过程
- 重要选项:
-r
或-R
:递归复制目录-i
:交互模式,覆盖前确认-v
:详细模式,显示操作过程-p
:保留文件属性(权限、时间戳等)
6. mv
- 移动或重命名文件
$ mv oldname.txt newname.txt # 重命名
$ mv file.txt /path/to/destination/ # 移动文件
$ mv -i source dest # 交互式,覆盖前询问
- 用途:文件重命名、移动文件到其他目录
- 注意:
mv
命令在同一个文件系统内是"重命名"操作,非常快速;跨文件系统则是"复制+删除"
7. rm
- 删除文件或目录
$ rm file.txt
$ rm -r directory/ # 递归删除目录
$ rm -i file.txt # 交互式删除,确认每个文件
$ rm -f file.txt # 强制删除,不提示
$ rm -rf directory/ # 谨慎使用!递归强制删除
- 警告:
rm -rf /
会删除整个系统文件,切勿执行! - 安全建议:考虑使用
trash-cli
代替rm
,提供回收站功能
8. mkdir
- 创建目录
$ mkdir newdir
$ mkdir -p path/to/nested/dir # 创建多级目录
$ mkdir -m 700 private_dir # 创建时设置权限
- 常用选项:
-p
:创建多级目录(父目录不存在时自动创建)-m
:设置目录权限(如-m 700
)
9. rmdir
- 删除空目录
$ rmdir empty_dir
$ rmdir -p path/to/empty/dir # 递归删除空目录
- 注意:只能删除空目录,非空目录需用
rm -r
第二部分:系统信息与管理
🔹 系统信息
10. uname
- 显示系统信息
$ uname -a
Linux hostname 5.4.0-80-generic #90-Ubuntu SMP Fri Jul 9 22:49:34 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
- 常用选项:
-a
:显示所有信息-s
:内核名称(如Linux)-r
:内核版本-m
:机器硬件名称
11. lsb_release
- 显示Linux发行版信息
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
- 用途:确定当前Linux发行版的详细信息
12. hostname
- 显示或设置系统主机名
$ hostname
my-computer
$ hostname new-name # 临时更改主机名(需要root权限)
🔹 硬件信息
13. lscpu
- 显示CPU信息
$ lscpu
Architecture: x86_64
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
...
- 用途:查看CPU架构、核心数、线程数等信息
14. free
- 显示内存使用情况
$ free -h
total used free shared buff/cache available
Mem: 15Gi 5.2Gi 3.1Gi 454Mi 7.1Gi 10Gi
Swap: 2.0Gi 0B 2.0Gi
- 常用选项:
-h
:人性化显示(自动使用GB、MB等单位)-m
:以MB为单位-g
:以GB为单位
15. df
- 显示磁盘空间使用情况
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 28G 42% /
/dev/sdb1 1.8T 1.2T 500G 70% /data
- 常用选项:
-h
:人性化显示-T
:显示文件系统类型--total
:显示总计
16. du
- 估算文件空间使用情况
$ du -sh /var/log
1.2G /var/log
$ du -h --max-depth=1 /home
4.0K /home/user1
2.3G /home/user2
2.3G /home
- 常用选项:
-s
:仅显示总计-h
:人性化显示--max-depth=N
:指定显示深度
🔹 系统监控
17. top
- 实时显示系统资源使用情况
$ top
- 交互命令:
P
:按CPU使用排序M
:按内存使用排序k
:终止进程r
:重新设置进程优先级q
:退出
18. htop
- 增强版top(需安装)
$ htop
- 优势:彩色界面、垂直和水平滚动、更好的交互体验
- 安装:
sudo apt install htop
(Debian/Ubuntu)
19. ps
- 显示当前进程状态
$ ps aux
$ ps -ef
$ ps -u username # 显示特定用户的进程
$ ps -p 1234 # 显示特定PID的进程
- 常用选项组合:
aux
:BSD风格,显示所有用户的所有进程-ef
:System V风格,显示完整格式
20. vmstat
- 虚拟内存统计
$ vmstat 2 5 # 每2秒采样一次,共5次
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 123456 789012 345678 0 0 123 45 678 901 10 20 70 0 0
- 用途:监控系统整体性能,特别是内存和I/O
第三部分:文本处理命令
🔹 基本文本操作
21. cat
- 连接并显示文件内容
$ cat file.txt
$ cat file1.txt file2.txt > combined.txt
$ cat -n file.txt # 显示行号
- 用途:查看小文件内容、合并文件
- 注意:大文件使用
less
或more
更合适
22. less
- 分页查看文件内容
$ less large_file.log
- 交互命令:
空格
:向下翻页b
:向上翻页/pattern
:搜索文本n
:下一个匹配N
:上一个匹配q
:退出
23. head
和 tail
- 查看文件开头和结尾
$ head -n 10 file.txt # 显示前10行
$ tail -n 20 file.txt # 显示后20行
$ tail -f logfile.log # 实时跟踪文件变化(常用语日志监控)
$ tail -F logfile.log # 增强版-f,文件轮转后继续跟踪
- 用途:快速查看文件开头/结尾内容,监控日志文件
🔹 文本搜索与过滤
24. grep
- 文本搜索工具
$ grep "error" logfile.log
$ grep -i "warning" logfile.log # 忽略大小写
$ grep -r "pattern" /path/to/dir # 递归搜索目录
$ grep -v "success" logfile.log # 反向选择,显示不匹配的行
$ grep -n "text" file.txt # 显示匹配行及行号
$ grep -c "error" logfile.log # 统计匹配行数
- 高级用法:
# 使用扩展正则表达式 grep -E "error|fail" logfile.log # 只显示匹配部分 grep -o "error[0-9]+" logfile.log # 从标准输入读取 cat logfile.log | grep "error"
25. awk
- 强大的文本处理语言
# 打印第一列
$ awk '{print $1}' file.txt
# 打印包含"error"的行的第一列
$ awk '/error/ {print $1}' logfile.log
# 使用自定义分隔符
$ awk -F':' '{print $1}' /etc/passwd
# 条件过滤
$ awk '$3 > 100' data.txt
# 统计
$ awk '{sum += $1} END {print sum}' numbers.txt
- 特点:适合结构化文本处理,特别擅长处理列式数据
26. sed
- 流编辑器
# 替换文本(将file.txt中所有"old"替换为"new")
$ sed 's/old/new/g' file.txt
# 替换并保存到原文件
$ sed -i 's/old/new/g' file.txt
# 删除包含"pattern"的行
$ sed '/pattern/d' file.txt
# 打印第5-10行
$ sed -n '5,10p' file.txt
# 多重替换
$ sed -e 's/old1/new1/g' -e 's/old2/new2/g' file.txt
- 用途:文本替换、删除、插入等操作,特别适合自动化脚本
🔹 文本统计与排序
27. wc
- 统计单词、行数和字节数
$ wc file.txt
100 500 3000 file.txt # 行数 单词数 字节数
$ wc -l file.txt # 仅显示行数
$ wc -w file.txt # 仅显示单词数
$ wc -c file.txt # 仅显示字节数
$ wc -m file.txt # 显示字符数
- 常用场景:统计日志文件行数、代码行数等
28. sort
- 对文本行排序
$ sort file.txt
$ sort -r file.txt # 降序排序
$ sort -n file.txt # 按数字排序(而非字符串)
$ sort -k 2 file.txt # 按第二列排序
$ sort -u file.txt # 去重排序
- 实用组合:
# 统计并排序访问IP awk '{print $1}' access.log | sort | uniq -c | sort -nr
29. uniq
- 报告或忽略重复行
$ uniq file.txt # 连续重复行只显示一次
$ uniq -c file.txt # 显示每行出现的次数
$ uniq -d file.txt # 仅显示重复行
- 注意:
uniq
只处理相邻的重复行,通常与sort
配合使用
第四部分:网络相关命令
🔹 网络诊断
30. ping
- 测试网络连接
$ ping google.com
$ ping -c 4 google.com # 发送4个包后退出
$ ping -i 2 google.com # 每2秒发送一个包
- 用途:测试与目标主机的网络连通性
- 注意:有些服务器禁用了ICMP响应,ping不通不一定代表无法访问
31. traceroute
/ tracepath
- 跟踪网络路由
$ traceroute google.com
$ tracepath google.com # 更简单的替代品(无需root权限)
- 用途:显示数据包到达目标主机所经过的路由节点
- 注意:在某些系统上需要安装(
sudo apt install traceroute
)
32. mtr
- 结合ping和traceroute的工具
$ mtr google.com
- 优势:实时显示网络路径和延迟
- 安装:
sudo apt install mtr
🔹 网络配置
33. ifconfig
/ ip
- 网络接口配置
$ ifconfig # 传统命令(某些新系统已弃用)
$ ip addr # 现代替代命令
$ ip route # 显示路由表
$ ip link # 显示网络接口
- 实用命令:
# 启用/禁用网络接口 sudo ip link set eth0 up sudo ip link set eth0 down # 添加IP地址 sudo ip addr add 192.168.1.100/24 dev eth0
34. netstat
- 网络统计信息
$ netstat -tuln # 显示所有监听端口
$ netstat -r # 显示路由表
$ netstat -i # 显示网络接口统计
$ netstat -p # 显示进程信息(需要root)
- 现代替代:
ss
命令(更快,更详细)$ ss -tuln
35. dig
/ nslookup
- DNS查询工具
$ dig google.com
$ dig MX google.com # 查询MX记录
$ dig +short google.com # 简洁输出
$ nslookup google.com
- 用途:诊断DNS问题,查询域名记录
🔹 网络传输
36. curl
- URL数据传输工具
$ curl http://example.com
$ curl -O http://example.com/file.zip # 保存文件
$ curl -I http://example.com # 仅获取HTTP头
$ curl -X POST -d "param1=value1" http://api.example.com
- 用途:测试API、下载文件、发送HTTP请求
37. wget
- 非交互式网络下载器
$ wget http://example.com/file.zip
$ wget -c http://example.com/largefile.zip # 断点续传
$ wget -r http://example.com # 递归下载整个网站
- 优势:适合脚本中使用,支持断点续传
38. scp
- 安全复制(基于SSH)
$ scp file.txt user@remote:/path/to/destination
$ scp user@remote:/path/to/file.txt .
$ scp -r directory/ user@remote:/path/to/dest/ # 递归复制目录
- 用途:在本地和远程主机之间安全传输文件
39. rsync
- 远程同步文件
$ rsync -avz source/ destination/
$ rsync -avz -e ssh user@remote:/path/to/source/ /local/destination/
$ rsync -avz --delete source/ destination/ # 保持同步,删除目标中多余的文件
- 优势:增量传输,只传输变化的部分,节省带宽
- 常用选项:
-a
:归档模式(保留权限、时间等)-v
:详细输出-z
:压缩传输--delete
:删除目标中源不存在的文件
第五部分:进程管理
🔹 进程控制
40. kill
- 终止进程
$ kill 1234 # 发送SIGTERM信号(请求终止)
$ kill -9 1234 # 发送SIGKILL信号(强制终止)
$ kill -l # 列出所有信号
- 信号类型:
SIGTERM
(15):请求进程正常终止SIGKILL
(9):强制终止进程SIGHUP
(1):挂起信号,通常用于重新加载配置
41. killall
- 按名称终止进程
$ killall firefox # 终止所有名为firefox的进程
$ killall -9 nginx # 强制终止所有nginx进程
42. pkill
- 按模式匹配终止进程
$ pkill -u username # 终止指定用户的进程
$ pkill -f "pattern" # 终止命令行包含pattern的进程
🔹 后台任务管理
43. &
和 jobs
- 后台运行任务
$ long_running_command & # 在后台运行
[1] 1234 # 作业ID和PID
$ jobs # 查看后台任务
[1]+ Running long_running_command &
$ fg %1 # 将作业1带到前台
$ bg %1 # 将作业1放到后台继续运行
44. nohup
- 无视挂断信号运行命令
$ nohup long_running_command > output.log 2>&1 &
- 用途:让命令在退出终端后继续运行
- 特点:忽略SIGHUP信号,输出重定向到nohup.out(默认)
45. screen
/ tmux
- 终端多路复用器
$ screen # 创建新会话
$ screen -S name # 创建命名会话
$ screen -r # 恢复会话
# tmux类似
$ tmux
$ tmux new -s session_name
$ tmux attach -t session_name
- 优势:会话持久化,即使网络断开也能恢复
- 特点:支持多窗口、分屏、会话共享等
第六部分:权限管理
🔹 文件权限
46. chmod
- 更改文件权限
$ chmod 755 filename # 数字模式
$ chmod u+x filename # 符号模式,给用户添加执行权限
$ chmod g-w filename # 符号模式,移除组的写权限
$ chmod o=r filename # 符号模式,设置其他用户的权限为只读
-
数字模式:
4
= 读 ®2
= 写 (w)1
= 执行 (x)- 例如:
755
=rwxr-xr-x
-
符号模式:
u
= 用户(user)g
= 组(group)o
= 其他(other)a
= 所有(all)+
= 添加权限-
= 移除权限=
= 设置权限
47. chown
- 更改文件所有者
$ chown user filename
$ chown user:group filename
$ chown -R user:group directory/ # 递归更改
48. chgrp
- 更改文件所属组
$ chgrp groupname filename
$ chgrp -R groupname directory/
🔹 特殊权限
49. sudo
- 以超级用户权限执行命令
$ sudo command
$ sudo -i # 获取交互式root shell
$ sudo -u username command # 以其他用户身份运行
- 配置:
/etc/sudoers
文件(应使用visudo
编辑)
50. su
- 切换用户
$ su # 切换到root(需要root密码)
$ su - username # 切换到其他用户
$ su - # 切换到root并加载其环境变量
51. umask
- 设置默认权限掩码
$ umask # 显示当前掩码
$ umask 022 # 设置新文件的默认权限
- 计算方式:
666 - umask
(文件),777 - umask
(目录) - 示例:
umask 022
→ 文件默认权限为644
,目录为755
第七部分:压缩与解压
🔹 常见压缩格式
52. tar
- 打包和压缩工具
# 创建tar.gz压缩包
$ tar -czvf archive.tar.gz directory/
# 创建tar.bz2压缩包
$ tar -cjvf archive.tar.bz2 directory/
# 解压tar.gz
$ tar -xzvf archive.tar.gz
# 解压tar.bz2
$ tar -xjvf archive.tar.bz2
# 查看压缩包内容
$ tar -tzvf archive.tar.gz
- 选项解释:
c
= 创建x
= 解压t
= 列出内容z
= gzip压缩j
= bzip2压缩v
= 详细模式f
= 指定文件名
53. gzip
/ gunzip
- gzip压缩工具
$ gzip file.txt # 压缩为file.txt.gz
$ gunzip file.txt.gz # 解压
$ gzip -d file.txt.gz # 同上
$ gzip -c file.txt > file.txt.gz # 保留原文件
54. bzip2
/ bunzip2
- bzip2压缩工具
$ bzip2 file.txt # 压缩为file.txt.bz2
$ bunzip2 file.txt.bz2 # 解压
$ bzip2 -dk file.txt.bz2 # 解压并保留原压缩文件
55. zip
/ unzip
- ZIP格式工具
$ zip -r archive.zip directory/
$ unzip archive.zip
$ unzip archive.zip -d destination/
第八部分:高级技巧与组合使用
🔹 管道与重定向
56. |
- 管道:将一个命令的输出作为另一个命令的输入
$ ps aux | grep "nginx"
$ cat logfile.log | grep "error" | wc -l
$ ls -l | less
57. >
和 >>
- 输出重定向
$ command > file.txt # 覆盖写入
$ command >> file.txt # 追加写入
$ command 2> error.log # 重定向错误输出
$ command > output.log 2>&1 # 合并标准输出和错误输出
58. <
- 输入重定向
$ command < input.txt
$ mysql < database_dump.sql
🔹 命令替换
59. `command`
或 $(command)
- 命令替换
$ echo "Today is $(date)"
$ files=$(ls *.txt)
$ cp $(find /path -name "*.log") /backup/
🔹 常用组合示例
60. 查找并删除旧日志文件
$ find /var/log -name "*.log" -mtime +30 -exec rm -f {} \;
- 解释:查找/var/log下30天前修改的.log文件并删除
61. 统计代码行数
$ find . -name "*.c" -o -name "*.h" | xargs cat | grep -v "^$" | wc -l
- 解释:统计当前目录下所有C和头文件的非空行数
62. 监控系统资源并记录
$ while true; do date >> stats.log; free -h >> stats.log; df -h >> stats.log; sleep 60; done
- 解释:每分钟记录一次系统内存和磁盘使用情况
63. 批量重命名文件
$ for file in *.jpg; do mv "$file" "prefix_$file"; done
- 解释:为所有.jpg文件添加前缀
64. 查找大文件
$ find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
- 解释:查找系统中大于100MB的文件
结语:持续学习与效率提升
掌握这些Linux命令只是开始。要真正成为命令行高手,你需要:
- 理解原理:不要只记命令,要理解它们背后的原理
- 实践应用:在实际工作中多使用命令行
- 定制环境:设置别名、函数和脚本提高效率
# 示例:~/.bashrc中的别名 alias ll='ls -lh' alias grep='grep --color=auto'
- 学习脚本:掌握Shell脚本编程,自动化重复任务
- 探索工具:尝试更高级的工具如
fzf
、ripgrep
、fd
等
📌 个人效率提升技巧
1. 命令历史技巧
# 搜索历史命令
Ctrl+R
# 执行上一条命令
!!
# 执行上一条以'sudo'开头的命令
!sudo
# 执行上一条包含'apt'的命令
!apt
2. 快速目录导航
# 跳转到常用目录
cd - # 返回上一个目录
pushd /path/to/dir # 将目录压入栈
popd # 从栈中弹出并切换到该目录
# 设置目录书签
export PROJECTS=~/projects
cd $PROJECTS
3. 命令自动补全
- 大多数Linux发行版已启用Bash自动补全
- 安装
bash-completion
包获取更多补全功能 - 按
Tab
键两次查看可用选项
📚 推荐学习资源
书籍
- 《鸟哥的Linux私房菜》 - Linux入门经典
- 《Linux命令行与shell脚本编程大全》 - 实用指南
- 《Advanced Bash-Scripting Guide》 - 高级Bash脚本指南(在线免费)
在线资源
- Explain Shell - 解释复杂命令
- Linux Journey - 交互式Linux学习
- TLDR Pages - 简化版man页面
实践平台
- OverTheWire Bandit - 通过游戏学习Linux
- Codecademy Learn the Command Line - 交互式教程
📌 附录:必须掌握的20个核心命令
命令 | 用途 |
---|---|
ls | 列出目录内容 |
cd | 切换目录 |
pwd | 显示当前目录 |
mkdir | 创建目录 |
rm | 删除文件 |
cp | 复制文件 |
mv | 移动/重命名文件 |
cat | 查看文件内容 |
less | 分页查看文件 |
grep | 文本搜索 |
find | 查找文件 |
top /htop | 系统监控 |
ps | 显示进程 |
kill | 终止进程 |
chmod | 更改文件权限 |
sudo | 以管理员权限运行 |
ssh | 远程登录 |
scp | 安全复制文件 |
tar /gzip | 压缩解压 |
man | 查看命令手册 |
📌 喜欢这篇文章吗?
👍 点赞 | 💬 评论 | 🔗 分享给需要的朋友!
希望这份Linux命令指南能帮助到你!如果你有其他常用的命令或技巧,欢迎在评论区分享交流。
版权声明:
本文为 兰舟比特 原创内容,如需转载,请注明出处及作者,禁止未经授权的引用或商用。