Linux 命令大全:从入门到精通(持续更新)

前言

Linux 作为最流行的开源操作系统,在服务器、嵌入式设备和个人电脑中广泛应用。掌握 Linux 命令是每个开发者和系统管理员的必备技能。本文将全面介绍 Linux 常用命令,帮助读者系统学习并掌握 Linux 操作系统的使用。

一、Linux 文件系统基础

1.1 Linux 目录结构

/          根目录
├── bin    基本命令二进制文件
├── etc    系统配置文件
├── home   用户主目录
├── root   root用户主目录
├── usr    用户程序
├── var    经常变化的文件(如日志)
└── tmp    临时文件

1.2 文件路径

  • 绝对路径:从根目录开始的完整路径,如 /home/user/file.txt

  • 相对路径:相对于当前目录的路径,如 ./file.txt 或 ../dir/file.txt

二、基本文件操作命令

2.1 目录操作

ls - 列出目录内容

bash

# 基本用法
ls
ls /home

# 常用选项
ls -l      # 详细列表格式
ls -a      # 显示所有文件(包括隐藏文件)
ls -h      # 人类可读的文件大小
ls -t      # 按修改时间排序
ls -r      # 反向排序
ls -R      # 递归显示子目录

# 组合使用
ls -lah    # 详细列表,显示所有文件,人类可读大小
ls -lrt    # 按时间反向排序,最新的在最后
cd - 切换目录
cd /home/user      # 切换到绝对路径
cd Documents       # 切换到相对路径
cd ..              # 切换到上级目录
cd ~               # 切换到用户主目录
cd -               # 切换到上一个目录
cd                 # 切换到用户主目录
pwd - 显示当前目录
pwd
# 输出:/home/user/current_directory
mkdir - 创建目录
mkdir new_dir                      # 创建单个目录
mkdir dir1 dir2 dir3               # 创建多个目录
mkdir -p parent/child/grandchild   # 创建多级目录
mkdir -m 755 new_dir               # 创建目录并设置权限
rmdir - 删除空目录
rmdir empty_dir                    # 删除空目录
rmdir -p parent/child/grandchild   # 删除多级空目录

2.2 文件操作

touch - 创建文件或更新时间戳
touch file.txt              # 创建新文件或更新现有文件时间戳
touch file1.txt file2.txt   # 创建多个文件
touch -t 202312251200 file.txt  # 设置特定时间戳
cp - 复制文件或目录
# 复制文件
cp file1.txt file2.txt          # 复制文件
cp file.txt /target/directory/   # 复制到目录

# 复制目录
cp -r dir1 dir2                 # 递归复制目录
cp -r dir1/. dir2               # 复制目录内容

# 常用选项
cp -i file1 file2              # 交互式复制(覆盖前确认)
cp -v file1 file2              # 显示详细信息
cp -u file1 file2              # 仅当源文件更新时复制
cp -p file1 file2              # 保留文件属性
mv - 移动或重命名文件
mv oldname.txt newname.txt      # 重命名文件
mv file.txt /target/directory/  # 移动文件
mv -i file1 file2              # 交互式移动
mv -v file1 file2              # 显示详细信息
rm - 删除文件或目录
rm file.txt                    # 删除文件
rm -i file.txt                 # 交互式删除
rm -f file.txt                 # 强制删除,不提示
rm -r directory                # 递归删除目录
rm -rf directory               # 强制递归删除目录(慎用!)

2.3 文件查看和编辑

cat - 连接并显示文件内容
cat file.txt                   # 显示整个文件
cat -n file.txt                # 显示行号
cat file1.txt file2.txt        # 连接多个文件
cat > newfile.txt              # 创建新文件(输入内容后Ctrl+D保存)
cat file1.txt file2.txt > combined.txt  # 合并文件
less / more - 分页显示文件
less file.txt                  # 分页浏览(推荐)
more file.txt                  # 基本分页浏览

# less 常用操作
# 空格键:向下翻页
# b:向上翻页
# /pattern:搜索
# q:退出
head / tail - 显示文件开头/结尾
head file.txt                  # 显示前10行
head -n 20 file.txt            # 显示前20行
head -c 100 file.txt           # 显示前100字节

tail file.txt                  # 显示最后10行
tail -n 20 file.txt            # 显示最后20行
tail -f logfile.log            # 实时跟踪文件变化
tail -F logfile.log            # 实时跟踪,文件被删除后重新打开
nano / vim - 文本编辑器
nano file.txt                  # 使用nano编辑
vim file.txt                   # 使用vim编辑

# vim 基本操作
# i:进入插入模式
# ESC:退出插入模式
# :w:保存
# :q:退出
# :wq:保存并退出
# :q!:强制退出不保存

三、文件权限和所有权

3.1 权限基础

Linux 文件权限分为三类:

  • 用户 (User):文件所有者

  • 组 (Group):文件所属组

  • 其他 (Other):其他用户

权限类型:

  • r (4):读权限

  • w (2):写权限

  • x (1):执行权限

3.2 权限管理命令

chmod - 更改文件权限
# 数字模式
chmod 755 file.txt             # rwxr-xr-x
chmod 644 file.txt             # rw-r--r--
chmod 777 file.txt             # rwxrwxrwx

# 符号模式
chmod u+x file.txt             # 给用户添加执行权限
chmod g-w file.txt             # 移除组的写权限
chmod o=r file.txt             # 设置其他用户只有读权限
chmod a+x file.txt             # 给所有用户添加执行权限

# 递归修改
chmod -R 755 directory/
chown - 更改文件所有者
chown user file.txt            # 更改文件所有者
chown user:group file.txt      # 同时更改所有者和组
chown -R user:group directory/ # 递归更改
chgrp - 更改文件所属组
chgrp group file.txt           # 更改文件所属组
chgrp -R group directory/      # 递归更改

四、文件搜索和查找

4.1 基本搜索命令

find - 查找文件
# 基本查找
find /home -name "*.txt"               # 按文件名查找
find . -name "file*"                   # 当前目录查找
find /var -type f -name "*.log"        # 查找普通文件

# 按时间查找
find . -mtime -7                       # 7天内修改的文件
find . -mtime +30                      # 30天前修改的文件
find . -amin -60                       # 60分钟内访问的文件

# 按大小查找
find . -size +10M                      # 大于10MB的文件
find . -size -1G                       # 小于1GB的文件

# 组合条件
find /home -name "*.txt" -size +1M -mtime -30

# 执行操作
find . -name "*.tmp" -delete           # 查找并删除
find . -name "*.txt" -exec cp {} /backup/ \;  # 查找并复制
grep - 文本搜索
# 基本搜索
grep "pattern" file.txt                # 在文件中搜索模式
grep -i "pattern" file.txt             # 忽略大小写
grep -r "pattern" directory/           # 递归搜索目录
grep -n "pattern" file.txt             # 显示行号

# 高级用法
grep -v "pattern" file.txt             # 反向搜索(不匹配的行)
grep -c "pattern" file.txt             # 统计匹配行数
grep -E "pattern1|pattern2" file.txt   # 扩展正则表达式
grep -l "pattern" *.txt                # 只显示包含模式的文件名

# 结合管道
ps aux | grep "nginx"                  # 查找进程
cat file.txt | grep -A 3 -B 3 "pattern" # 显示匹配行的前后3行
locate - 快速文件查找
locate filename                        # 快速查找文件
locate -i "*.jpg"                      # 忽略大小写
locate -c "*.txt"                      # 统计数量

# 更新数据库(需要先执行)
sudo updatedb

五、系统信息和管理

5.1 系统信息命令

uname - 系统信息
uname -a                              # 所有系统信息
uname -s                              # 内核名称
uname -r                              # 内核版本
uname -m                              # 机器硬件名称
hostname - 主机名
hostname                              # 显示主机名
hostname -i                           # 显示IP地址
hostname -f                           # 显示FQDN

uptime - 系统运行时间
uptime
# 输出:10:30:00 up 15 days,  2:30,  3 users,  load average: 0.05, 0.10, 0.15
free - 内存使用情况
free                                  # 显示内存使用
free -h                               # 人类可读格式
free -m                               # 以MB为单位
free -g                               # 以GB为单位
df - 磁盘空间
df                                    # 显示磁盘空间
df -h                                 # 人类可读格式
df -i                                 # 显示inode使用情况
df -T                                 # 显示文件系统类型
du - 目录空间使用
du                                    # 当前目录空间使用
du -h                                 # 人类可读格式
du -sh directory/                     # 显示目录总大小
du -ah directory/                     # 显示所有文件和目录大小
du -h --max-depth=1                   # 只显示一级子目录

5.2 进程管理

ps - 进程状态
ps aux                                # 显示所有进程详细信息
ps -ef                                # 显示完整格式的所有进程
ps -u username                        # 显示指定用户的进程
ps -p PID                             # 显示指定PID的进程

# 常用组合
ps aux | grep nginx                   # 查找特定进程
ps aux --sort=-%mem | head -10        # 按内存使用排序前10
top / htop - 实时进程监控
top                                   # 实时系统监控
htop                                  # 增强版top(需要安装)

# top 常用命令
# q:退出
# k:杀死进程
# M:按内存使用排序
# P:按CPU使用排序
# 1:显示每个CPU核心的使用情况
kill - 终止进程
kill PID                              # 终止进程(发送TERM信号)
kill -9 PID                           # 强制终止进程
kill -15 PID                          # 优雅终止进程
killall process_name                  # 终止所有同名进程
pkill pattern                         # 按模式终止进程
jobs / fg / bg - 作业控制
command &                             # 在后台运行命令
jobs                                  # 查看后台作业
fg %1                                 # 将作业1调到前台
bg %1                                 # 在后台继续运行作业1
Ctrl+Z                                # 暂停当前作业

六、网络相关命令

6.1 网络配置和诊断

ifconfig / ip - 网络接口配置
ifconfig                              # 显示网络接口信息
ifconfig eth0                         # 显示特定接口
ifconfig eth0 up                      # 启用接口
ifconfig eth0 down                    # 禁用接口

# ip命令(推荐)
ip addr show                          # 显示IP地址
ip route show                         # 显示路由表
ip link set eth0 up                   # 启用接口
ping - 网络连通性测试
ping google.com                       # 测试连通性
ping -c 4 google.com                  # 发送4个包后停止
ping -i 5 google.com                  # 每5秒发送一个包
netstat - 网络统计
netstat -tuln                         # 显示监听端口
netstat -tup                          # 显示已建立连接
netstat -r                            # 显示路由表
netstat -i                            # 显示网络接口
ss - socket统计
ss -tuln                              # 显示监听端口
ss -tup                               # 显示已建立连接
ss -s                                 # 显示socket统计
curl / wget - 网络数据传输
curl https://example.com              # 获取网页内容
curl -O https://example.com/file.zip  # 下载文件
curl -I https://example.com           # 只显示头部信息

wget https://example.com/file.zip     # 下载文件
wget -c https://example.com/file.zip  # 断点续传
wget -r https://example.com           # 递归下载

七、压缩和归档

7.1 常用压缩命令

tar - 归档工具
# 创建归档
tar -cvf archive.tar files/           # 创建tar归档
tar -czvf archive.tar.gz files/       # 创建gzip压缩归档
tar -cjvf archive.tar.bz2 files/      # 创建bzip2压缩归档

# 提取归档
tar -xvf archive.tar                  # 提取tar归档
tar -xzvf archive.tar.gz              # 提取gzip压缩归档
tar -xjvf archive.tar.bz2             # 提取bzip2压缩归档

# 列出内容
tar -tvf archive.tar                  # 列出归档内容
gzip / gunzip - 压缩/解压缩
gzip file.txt                         # 压缩文件(生成file.txt.gz)
gzip -9 file.txt                      # 最大压缩率
gunzip file.txt.gz                    # 解压缩
gzip -d file.txt.gz                   # 解压缩(等同于gunzip)
zip / unzip - ZIP压缩
zip archive.zip file1 file2           # 创建ZIP归档
zip -r archive.zip directory/         # 递归压缩目录
unzip archive.zip                     # 解压缩
unzip -l archive.zip                  # 列出ZIP文件内容

八、用户和权限管理

8.1 用户管理

whoami - 显示当前用户
whoami
id - 显示用户信息
id
id username
su - 切换用户
su username                          # 切换用户
su - username                        # 切换用户并加载环境变量
su -                                 # 切换到root用户
sudo - 以超级用户权限执行命令
sudo command                         # 以root权限执行命令
sudo -i                              # 切换到root shell
sudo -u username command             # 以指定用户权限执行
useradd / userdel - 用户管理
sudo useradd newuser                 # 添加新用户
sudo useradd -m -s /bin/bash newuser # 创建用户并创建主目录
sudo userdel username                # 删除用户
sudo userdel -r username             # 删除用户及其主目录
passwd - 修改密码
passwd                               # 修改当前用户密码
sudo passwd username                 # 修改指定用户密码

九、高级命令和技巧

9.1 文本处理

awk - 文本处理工具
# 基本用法
awk '{print $1}' file.txt            # 打印第一列
awk -F: '{print $1}' /etc/passwd     # 使用冒号分隔符

# 条件处理
awk '$3 > 1000 {print $1}' file.txt  # 第三列大于1000时打印第一列
awk '/pattern/ {print $0}' file.txt  # 匹配模式的行

# 统计
awk '{sum += $1} END {print sum}' file.txt  # 求和
awk '{count++} END {print count}' file.txt  # 行数统计
sed - 流编辑器
# 替换文本
sed 's/old/new/g' file.txt           # 全局替换
sed 's/old/new/' file.txt            # 每行第一次出现替换
sed -i 's/old/new/g' file.txt        # 直接修改文件

# 删除行
sed '5d' file.txt                    # 删除第5行
sed '1,5d' file.txt                  # 删除1-5行
sed '/pattern/d' file.txt            # 删除匹配模式的行

# 其他操作
sed -n '5,10p' file.txt              # 打印5-10行
sed '2a\new line' file.txt           # 在第2行后添加新行
sort - 排序
sort file.txt                        # 排序文件
sort -r file.txt                     # 反向排序
sort -n file.txt                     # 数值排序
sort -u file.txt                     # 去重排序
sort -k2 file.txt                    # 按第二列排序
uniq - 去重
uniq file.txt                        # 去除连续重复行
uniq -c file.txt                     # 统计重复次数
uniq -d file.txt                     # 只显示重复行
uniq -u file.txt                     # 只显示不重复行

# 通常与sort结合使用
sort file.txt | uniq

9.2 输入输出重定向

command > file.txt                   # 标准输出重定向到文件(覆盖)
command >> file.txt                  # 标准输出重定向到文件(追加)
command < file.txt                   # 从文件读取标准输入
command 2> error.log                 # 标准错误重定向到文件
command > output.log 2>&1            # 标准输出和错误都重定向到文件
command &> file.txt                  # 标准输出和错误都重定向到文件

command1 | command2                  # 管道:command1的输出作为command2的输入

9.3 命令组合和脚本

命令替换
echo "Today is $(date)"              # 命令替换
echo "Today is `date`"               # 传统命令替换
后台执行和定时任务
nohup command &                      # 后台运行,退出终端不终止
(cd /path && ./script.sh) &          # 在子shell中执行

# 使用crontab定时任务
crontab -e                           # 编辑定时任务
# 示例:每天凌晨2点执行
# 0 2 * * * /path/to/script.sh

十、实用技巧和最佳实践

10.1 命令行快捷键

Ctrl+A              # 移动到行首
Ctrl+E              # 移动到行尾
Ctrl+U              # 删除到行首
Ctrl+K              # 删除到行尾
Ctrl+W              # 删除前一个单词
Ctrl+R              # 搜索命令历史
Ctrl+L              # 清屏
Ctrl+C              # 终止当前命令
Ctrl+D              # 退出shell或文件结束
Ctrl+Z              # 暂停当前作业

10.2 命令历史

history             # 显示命令历史
!number             # 执行历史中第number条命令
!!                  # 执行上一条命令
!string             # 执行最近以string开头的命令
Ctrl+R              # 反向搜索命令历史

10.3 别名和函数

# 在 ~/.bashrc 中设置别名
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias rm='rm -i'

# 自定义函数
mkcd() {
    mkdir -p "$1" && cd "$1"
}

十一、故障排查和性能监控

11.1 系统监控

dmesg - 内核消息
dmesg | tail -20                     # 查看最近内核消息
dmesg | grep error                   # 查找错误信息
iostat - I/O统计
iostat 1                             # 每秒显示I/O统计
iostat -x 1                          # 扩展I/O统计
vmstat - 虚拟内存统计
vmstat 1                             # 每秒显示系统统计
vmstat -s                            # 显示内存统计摘要

11.2 日志查看

# 系统日志
tail -f /var/log/syslog              # 实时查看系统日志
journalctl -f                        # 实时查看systemd日志

# 应用日志
tail -f /var/log/nginx/access.log    # 实时查看nginx访问日志
grep "ERROR" /var/log/app.log        # 查找错误日志

总结

本文涵盖了 Linux 系统中最常用和最重要的命令,从基础的文件操作到高级的系统管理。掌握这些命令将大大提高你在 Linux 环境下的工作效率。建议在实际工作中多加练习,结合 man 手册(man command)深入学习每个命令的详细用法。

记住,Linux 命令的学习是一个持续的过程,随着经验的积累,你会发现自己能够更加熟练地组合使用这些命令来解决复杂的问题。

温馨提示:在生产环境中执行命令时要格外小心,特别是使用 rm -rfchmodchown 等可能对系统造成重大影响的命令时,务必确认命令的正确性。

内容概要:本文档是《Linux 基础命令大全(万字终极指南)》,涵盖超过200个核心命令,适用于所有主流Linux发行版(如Ubuntu、CentOS、Debian等)。文档详细介绍了从终端基础与文件系统操作、权限与用户管理、文本处理工具(grep、sed、awk)、系统监控与进程管理、网络配置与诊断、软件包管理、系统维护与安全、Shell高级技巧、开发调试工具到终端效率工具等多个方面。每个命令不仅有详细的参数解析,还附有实战示例和使用场景说明,帮助读者全面掌握Linux命令行操作。此外,文档提供了多个命令组合实战案例,如分析访问日志TOP 10 IP、批量重命名图片、监控内存占用最高的进程等。 适合人群:适合有一定计算机基础,希望深入学习Linux系统管理和运维技能的技术人员,特别是Linux初学者和中级用户。 使用场景及目标:①掌握Linux终端的基本操作和文件系统管理;②理解并应用权限控制和用户管理机制;③熟练使用文本处理工具进行高效的数据处理;④监控系统资源和管理进程,确保系统稳定运行;⑤配置和诊断网络连接,解决常见的网络问题;⑥进行软件包的安装、更新和卸载;⑦实施系统维护和安全加固措施;⑧编写高效的Shell脚本,提高工作效率;⑨利用开发调试工具优化程序性能。 阅读建议:由于文档内容丰富详实,建议读者按照章节顺序逐步学习,重点理解和练习每个命令的实际应用场景。对于复杂的命令组合,可以通过实战案例加深理解,并结合手册(man命令)进一步探索更多高级用法。同时,注意文档中的“危险命令警示”,避免因误操作导致系统损坏或数据丢失。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值