【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 -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  # 显示行号
  • 用途:查看小文件内容、合并文件
  • 注意:大文件使用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  # 去重排序
  • 实用组合
    # 统计并排序访问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命令只是开始。要真正成为命令行高手,你需要:

  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=~/projects
cd $PROJECTS
3. 命令自动补全
  • 大多数Linux发行版已启用Bash自动补全
  • 安装bash-completion包获取更多补全功能
  • Tab键两次查看可用选项

📚 推荐学习资源

书籍

  • 《鸟哥的Linux私房菜》 - Linux入门经典
  • 《Linux命令行与shell脚本编程大全》 - 实用指南
  • 《Advanced Bash-Scripting Guide》 - 高级Bash脚本指南(在线免费)

在线资源

实践平台


📌 附录:必须掌握的20个核心命令

命令用途
ls列出目录内容
cd切换目录
pwd显示当前目录
mkdir创建目录
rm删除文件
cp复制文件
mv移动/重命名文件
cat查看文件内容
less分页查看文件
grep文本搜索
find查找文件
top/htop系统监控
ps显示进程
kill终止进程
chmod更改文件权限
sudo以管理员权限运行
ssh远程登录
scp安全复制文件
tar/gzip压缩解压
man查看命令手册

📌 喜欢这篇文章吗?
👍 点赞 | 💬 评论 | 🔗 分享给需要的朋友!

希望这份Linux命令指南能帮助到你!如果你有其他常用的命令或技巧,欢迎在评论区分享交流。


版权声明:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兰舟比特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值