> 技术文档 > 【Linux常用命令】Linux常用命令终极指南(从入门到精通)

【Linux常用命令】Linux常用命令终极指南(从入门到精通)


💌 所属专栏:【Linux】
😀 作  者:兰舟比特 🐾
🚀 个人简介:热爱开源系统与嵌入式技术,专注 Linux、网络通信、编程技巧、面试总结与软件工具分享,持续输出实用干货!
💡 欢迎大家:这里是兰舟比特的技术小站,喜欢的话请点赞、收藏、评论三连击!有问题欢迎留言交流😘😘😘


💻 Linux常用命令终极指南:从入门到精通

摘要:本文是一份全面、实用的Linux命令速查手册,涵盖文件操作、系统管理、网络配置、文本处理等核心领域。无论你是Linux新手还是需要复习的资深用户,这份指南都能帮助你提高命令行效率。文中包含100+高频命令详细解释实用示例,助你成为命令行高手!


📌 目录

  1. 前言:为什么需要掌握Linux命令?
  2. 第一部分:基础文件与目录操作
  3. 第二部分:系统信息与管理
  4. 第三部分:文本处理命令
  5. 第四部分:网络相关命令
  6. 第五部分:进程管理
  7. 第六部分:权限管理
  8. 第七部分:压缩与解压
  9. 第八部分:高级技巧与组合使用
  10. 结语:持续学习与效率提升

前言:为什么需要掌握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 -aLinux 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 -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 20.04.3 LTSRelease: 20.04Codename: focal
  • 用途:确定当前Linux发行版的详细信息
12. hostname - 显示或设置系统主机名
$ hostnamemy-computer$ hostname new-name # 临时更改主机名(需要root权限)

🔹 硬件信息

13. lscpu - 显示CPU信息
$ lscpuArchitecture: x86_64CPU(s): 8Thread(s) per core: 2Core(s) per socket: 4...
  • 用途:查看CPU架构、核心数、线程数等信息
14. free - 显示内存使用情况
$ free -h  total used free shared buff/cache availableMem:  15Gi 5.2Gi 3.1Gi 454Mi 7.1Gi 10GiSwap: 2.0Gi 0B 2.0Gi
  • 常用选项
    • -h:人性化显示(自动使用GB、MB等单位)
    • -m:以MB为单位
    • -g:以GB为单位
15. df - 显示磁盘空间使用情况
$ df -hFilesystem 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/log1.2G /var/log$ du -h --max-depth=1 /home4.0K /home/user12.3G /home/user22.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 # 显示行号
  • 用途:查看小文件内容、合并文件
  • 注意:大文件使用lessmore更合适
22. less - 分页查看文件内容
$ less large_file.log
  • 交互命令
    • 空格:向下翻页
    • b:向上翻页
    • /pattern:搜索文本
    • n:下一个匹配
    • N:上一个匹配
    • q:退出
23. headtail - 查看文件开头和结尾
$ 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 # 去重排序
  • 实用组合
    # 统计并排序访问IPawk \'{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 upsudo 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命令只是开始。要真正成为命令行高手,你需要:

  1. 理解原理:不要只记命令,要理解它们背后的原理
  2. 实践应用:在实际工作中多使用命令行
  3. 定制环境:设置别名、函数和脚本提高效率
    # 示例:~/.bashrc中的别名alias ll=\'ls -lh\'alias grep=\'grep --color=auto\'
  4. 学习脚本:掌握Shell脚本编程,自动化重复任务
  5. 探索工具:尝试更高级的工具如fzfripgrepfd

📌 个人效率提升技巧

1. 命令历史技巧
# 搜索历史命令Ctrl+R# 执行上一条命令!!# 执行上一条以\'sudo\'开头的命令!sudo# 执行上一条包含\'apt\'的命令!apt
2. 快速目录导航
# 跳转到常用目录cd - # 返回上一个目录pushd /path/to/dir # 将目录压入栈popd # 从栈中弹出并切换到该目录# 设置目录书签export PROJECTS=~/projectscd $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命令指南能帮助到你!如果你有其他常用的命令或技巧,欢迎在评论区分享交流。


版权声明:

本文为 兰舟比特 原创内容,如需转载,请注明出处及作者,禁止未经授权的引用或商用。