Linux 是一种广泛应用于服务器、云计算、嵌入式系统和开发环境中的操作系统,熟练掌握常用 Linux 命令是系统运维、测试开发和软件工程师的基本技能。
本文对 Linux 系统中常见且高频使用的操作指令 进行了系统整理,并按照功能模块进行分类,涵盖文件目录操作、权限管理、进程管理、网络操作等内容。
所有命令均配有典型示例 ,适合 Linux 初学者快速入门,也可作为日常工作中的命令速查手册。
以下是Linux系统中常见命令的详细示例列表,按功能分类:
一、文件和目录操作
基本目录操作
bash
# 查看当前目录
pwd
# 切换到用户主目录
cd ~
# 切换到上一级目录
cd ..
# 切换到指定目录
cd /usr/local/bin
# 创建目录
mkdir new_folder
# 创建多级目录
mkdir -p /path/to/new/folder
# 列出当前目录内容
ls
# 列出详细信息
ls -l
# 列出所有文件(包括隐藏文件)
ls -la
# 以人类可读格式显示文件大小
ls -lh
# 按修改时间排序
ls -lt
# 递归列出子目录
ls -R
文件操作
bash
# 创建空文件
touch filename.txt
# 复制文件
cp file1.txt file2.txt
# 复制目录
cp -r dir1 dir2
# 移动/重命名文件
mv oldname.txt newname.txt
# 移动文件到指定目录
mv file.txt /path/to/destination/
# 删除文件
rm file.txt
# 删除目录及其内容
rm -rf directory/
# 创建软链接
ln -s /path/to/original /path/to/link
# 创建硬链接
ln /path/to/original /path/to/link
文件查看和编辑
bash
# 查看文件全部内容
cat filename.txt
# 查看文件前10行
head filename.txt
# 查看文件前5行
head -5 filename.txt
# 查看文件后10行
tail filename.txt
# 查看文件后5行
tail -5 filename.txt
# 实时查看日志文件
tail -f /var/log/syslog
# 分页查看文件
less filename.txt
# 在less中搜索:输入/然后输入搜索词
# 显示行号查看文件
cat -n filename.txt
# 查看文件类型
file filename.txt
二、权限和用户管理
文件权限
bash
# 修改文件权限(数字方式)
chmod 755 filename
# 755表示:所有者rwx,所属组r-x,其他用户r-x
# 修改文件权限(符号方式)
chmod u+x filename # 给所有者添加执行权限
chmod g+w filename # 给所属组添加写权限
chmod o-r filename # 移除其他用户的读权限
chmod a+x filename # 给所有用户添加执行权限
# 修改文件所有者
chown user:group filename
chown user filename
chown :group filename
# 递归修改目录权限
chmod -R 755 directory/
chown -R user:group directory/
# 查看文件权限详情
ls -l filename
# 显示文件的数字权限
stat -c "%a %n" filename
用户和组管理
bash
# 创建新用户
sudo useradd -m username
# 创建用户并指定shell
sudo useradd -m -s /bin/bash username
# 设置用户密码
sudo passwd username
# 删除用户
sudo userdel username
# 删除用户及其主目录
sudo userdel -r username
# 修改用户信息
sudo usermod -s /bin/bash username
sudo usermod -g groupname username
# 将用户添加到附加组
sudo usermod -aG sudo username
# 创建新组
sudo groupadd groupname
# 查看当前用户
whoami
# 查看用户所属组
groups
# 查看指定用户所属组
groups username
# 切换用户
su username
# 以目标用户登录环境
su - username
# 以root身份执行单个命令
sudocommand
# 切换到root用户
sudo su -
三、文件内容处理
文本搜索
bash
# 在文件中搜索字符串
grep "search_text" filename.txt
# 搜索时忽略大小写
grep -i "search_text" filename.txt
# 递归搜索目录
grep -r "search_text" /path/to/search/
# 显示匹配行及行号
grep -n "search_text" filename.txt
# 反向匹配(显示不包含的行)
grep -v "search_text" filename.txt
# 使用正则表达式
grep -E "^[A-Z]" filename.txt
# 搜索多个文件
grep "text" file1.txt file2.txt
# 统计匹配行数
grep -c "text" filename.txt
# 显示匹配行周围的上下文
grep -C 3 "text" filename.txt # 显示匹配行前后3行
文本处理
bash
# 查找包含"error"的行,然后计数
grep "error" logfile.txt | wc -l
# 对文件内容排序
sort filename.txt
# 排序并去重
sort filename.txt | uniq
# 排序、去重并计数
sort filename.txt | uniq -c
# 显示重复行
uniq -d filename.txt
# 比较两个文件的差异
diff file1.txt file2.txt
# 比较目录差异
diff -r dir1 dir2
# 提取文件的第一列
cut -f1 -d" " filename.txt
# 提取文件的前10个字符
cut -c1-10 filename.txt
# 合并文件
paste file1.txt file2.txt
# 文件行数统计
wc -l filename.txt
# 单词数统计
wc -w filename.txt
# 字符数统计
wc -c filename.txt
Sed和Awk
bash
# sed示例:替换文本
sed 's/old/new/g' filename.txt
# 替换并保存
sed -i 's/old/new/g' filename.txt
# 删除包含"delete"的行
sed '/delete/d' filename.txt
# 删除第3行
sed '3d' filename.txt
# awk示例:打印第一列
awk '{print $1}' filename.txt
# 打印第一和第三列
awk '{print $1, $3}' filename.txt
# 使用自定义分隔符
awk -F',''{print $1}' filename.txt
# 条件过滤
awk '$3 > 100' filename.txt
# 计算列的总和
awk '{sum += $1} END {print sum}' filename.txt
# 分组统计
awk '{count[$1]++} END {for (i in count) print i, count[i]}' filen
四、系统管理和监控
系统信息
bash
# 查看系统信息
uname -a
# 查看内核版本
uname -r
# 查看系统架构
uname -m
# 查看主机名
hostname
# 修改主机名
sudo hostnamectl set-hostname newname
# 查看系统运行时间
uptime
# 查看系统启动时间
who -b
# 查看登录用户
who
# 查看详细登录信息
w
# 查看登录历史
last
# 查看当前时间
date
# 设置时间
sudodate -s "2023-12-25 10:30:00"
# 查看日历
cal
# 查看指定月份
cal 12 2023
进程管理
bash
# 查看所有进程
ps aux
# 查看指定用户的进程
ps -u username
# 查看指定进程
ps -p PID
# 查看进程树
pstree
# 动态查看进程
top
# 按内存使用排序
top -o %MEM
# 按CPU使用排序
top -o %CPU
# 终止进程
kill PID
# 强制终止进程
kill -9 PID
# 按名称终止进程
pkill processname
# 查找进程
pgrep processname
# 查看进程打开的文件
lsof -p PID
# 后台运行命令
command &
# 查看后台作业
jobs
# 将后台作业调到前台
fg %1
# 将前台作业调到后台
Ctrl+Z
bg
资源监控
bash
# 查看内存使用
free -h
# 查看磁盘使用
df -h
# 查看指定目录大小
du -sh /path/to/directory
# 查看目录详细大小
du -h /path/to/directory
# 查看目录深度为2的大小
du -h -d 2 /path/to/directory
# 查看磁盘分区
fdisk -l
# 查看块设备
lsblk
# 查看CPU信息
lscpu
# 查看PCI设备
lspci
# 查看USB设备
lsusb
# 查看内核模块
lsmod
# 查看加载的模块
modprobe -l
五、网络管理
网络配置和诊断
bash
# 查看IP地址
ip addr show
# 查看特定接口
ip addr show eth0
# 查看路由表
ip route show
# 添加IP地址
sudo ip addr add 192.168.1.100/24 dev eth0
# 启动/停止接口
sudo ip linkset eth0 up
sudo ip linkset eth0 down
# 传统方式查看IP
ifconfig
# 查看网络接口
ifconfig -a
# 测试网络连通性
ping google.com
# 指定ping次数
ping -c 5 google.com
# 查看网络路由
traceroute google.com
# 查看网络连接
netstat -tuln
# 查看所有网络连接
netstat -tulnap
# 查看端口占用
ss -tuln
# 查看TCP连接
ss -t
# 查看UDP连接
ss -u
# 域名解析
nslookup google.com
# 更强大的DNS查询
dig google.com
网络传输
bash
# 下载文件
wget https://example.com/file.zip
# 断点续传
wget -c https://example.com/file.zip
# 后台下载
wget -b https://example.com/file.zip
# 通过curl下载
curl -O https://example.com/file.zip
# 通过curl获取网页
curl https://example.com
# 通过curl获取并保存
curl -o output.html https://example.com
# 上传文件
curl -F "file=@localfile" https://example.com/upload
# SSH连接
ssh user@hostname
# SSH指定端口
ssh -p 2222 user@hostname
# SSH使用密钥
ssh -i ~/.ssh/id_rsa user@hostname
# 安全复制文件
scp file.txt user@hostname:/remote/path/
# 从远程复制
scp user@hostname:/remote/file.txt ./
# 递归复制目录
scp -r /local/dir/ user@hostname:/remote/path/
# 同步文件
rsync -avz /source/dir/ /dest/dir/
# 远程同步
rsync -avz -e ssh /local/dir/ user@hostname:/remote/dir/
六、软件包管理
APT (Debian/Ubuntu)
bash
# 更新包列表
sudo apt update
# 升级已安装的包
sudo apt upgrade
# 升级系统
sudo apt dist-upgrade
# 安装软件包
sudo apt install package_name
# 安装多个包
sudo apt install package1 package2
# 移除软件包
sudo apt remove package_name
# 移除软件包和配置文件
sudo apt purge package_name
# 查找软件包
apt search keyword
# 显示包信息
apt show package_name
# 列出已安装的包
apt list --installed
# 清理缓存
sudo apt clean
sudo apt autoclean
# 移除不需要的包
sudo apt autoremove
YUM/DNF (RHEL/CentOS/Fedora)
bash
# 安装软件包
sudo yum install package_name
sudo dnf install package_name
# 更新所有包
sudo yum update
sudo dnf update
# 查找软件包
yum search keyword
dnf search keyword
# 删除软件包
sudo yum remove package_name
sudo dnf remove package_name
# 显示包信息
yum info package_name
dnf info package_name
# 列出已安装的包
yum list installed
dnf list installed
# 清理缓存
sudo yum clean all
sudo dnf clean all
Pacman (Arch Linux)
bash
# 更新系统
sudo pacman -Syu
# 安装软件包
sudo pacman -S package_name
# 删除软件包
sudo pacman -R package_name
# 删除软件包和依赖
sudo pacman -Rs package_name
# 查找软件包
pacman -Ss keyword
# 显示包信息
pacman -Si package_name
# 清理缓存
sudo pacman -Sc
# 清理所有缓存
sudo pacman -Scc
七、压缩和解压
常见压缩格式
bash
# tar创建归档
tar -cvf archive.tar file1 file2
# tar解压
tar -xvf archive.tar
# tar压缩为gzip
tar -czvf archive.tar.gz directory/
# tar解压gzip
tar -xzvf archive.tar.gz
# tar压缩为bzip2
tar -cjvf archive.tar.bz2 directory/
# tar解压bzip2
tar -xjvf archive.tar.bz2
# tar压缩为xz
tar -cJvf archive.tar.xz directory/
# tar解压xz
tar -xJvf archive.tar.xz
# 仅查看tar内容
tar -tvf archive.tar
# gzip压缩
gzip filename
# gzip解压
gunzip filename.gz
# 或
gzip -d filename.gz
# bzip2压缩
bzip2 filename
# bzip2解压
bunzip2 filename.bz2
# 或
bzip2 -d filename.bz2
# zip压缩
zip archive.zip file1 file2
# zip递归压缩
zip -r archive.zip directory/
# zip解压
unzip archive.zip
# zip查看内容
unzip -l archive.zip
# 7z压缩
7z a archive.7z file1 file2
# 7z解压
7z x archive.7z
八、磁盘管理
磁盘操作
bash
# 查看磁盘空间
df -h
# 查看指定目录大小
du -sh /path/to/directory
# 查看目录大小详情
du -h /path/to/directory
# 挂载文件系统
sudo mount /dev/sda1 /mnt
# 卸载文件系统
sudo umount /mnt
# 查看挂载点
mount
# 查看所有块设备
lsblk
# 查看磁盘分区
sudo fdisk -l
# 查看UUID
sudo blkid
# 修复文件系统
sudo fsck /dev/sda1
# 格式化磁盘
sudo mkfs.ext4 /dev/sda1
# 检查磁盘坏道
sudo badblocks -v /dev/sda
# 测试磁盘速度
sudo hdparm -Tt /dev/sda
# 查看磁盘信息
sudo smartctl -a /dev/sda
九、系统服务管理
Systemd
bash
# 启动服务
sudo systemctl start servicename
# 停止服务
sudo systemctl stop servicename
# 重启服务
sudo systemctl restart servicename
# 重载服务配置
sudo systemctl reload servicename
# 查看服务状态
sudo systemctl status servicename
# 启用开机启动
sudo systemctl enable servicename
# 禁用开机启动
sudo systemctl disable servicename
# 查看服务是否启用
sudo systemctl is-enabled servicename
# 查看所有服务
sudo systemctl list-units --type=service
# 查看系统日志
sudo journalctl -u servicename
# 查看实时日志
sudo journalctl -f
# 查看特定时间日志
sudo journalctl --since "2023-01-01" --until"2023-12-31"
# 重启系统
sudo systemctl reboot
# 关机
sudo systemctl poweroff
SysVinit
bash
# 启动服务
sudo service servicename start
# 停止服务
sudo service servicename stop
# 重启服务
sudo service servicename restart
# 查看服务状态
sudo service servicename status
# 启用开机启动
sudo chkconfig servicename on
# 禁用开机启动
sudo chkconfig servicename off
# 查看运行级别
runlevel
# 进入单用户模式
sudo init 1
# 重启
sudo reboot
# 关机
sudo poweroff
十、文本编辑器
Vim基本操作
bash
# 打开文件
vim filename.txt
# vim基本命令:
# i - 进入插入模式
# Esc - 退出插入模式
# :w - 保存文件
# :wq - 保存并退出
# :q! - 不保存退出
# :q - 退出
# /text - 搜索文本
# n - 下一个匹配
# N - 上一个匹配
# :s/old/new/g - 替换文本
# dd - 删除当前行
# yy - 复制当前行
# p - 粘贴
# u - 撤销
# Ctrl+r - 重做
# :set number - 显示行号
# :set nonumber - 隐藏行号
Nano基本操作
bash
# 打开文件
nano filename.txt
# nano快捷键:
# Ctrl+O - 保存文件
# Ctrl+X - 退出
# Ctrl+K - 剪切行
# Ctrl+U - 粘贴
# Ctrl+W - 搜索
# Ctrl+\ - 替换
# Ctrl+C - 显示光标位置
# Ctrl+G - 显示帮助
十一、计划任务
Cron定时任务
bash
# 编辑当前用户的cron任务
crontab -e
# 列出当前用户的cron任务
crontab -l
# 删除当前用户的cron任务
crontab -r
# 编辑指定用户的cron任务
sudo crontab -u username -e
# cron时间格式示例:
# * * * * * command
# | | | | |
# | | | | +---- 星期 (0-6) (0=星期日)
# | | | +------ 月份 (1-12)
# | | +-------- 日期 (1-31)
# | +---------- 小时 (0-23)
# +------------ 分钟 (0-59)
# 每分钟执行
* * * * * command
# 每小时的第5分钟执行
5 * * * * command
# 每天2:30执行
30 2 * * * command
# 每周一2:30执行
30 2 * * 1 command
# 每月1号2:30执行
30 2 1 * * command
# 每年1月1日2:30执行
30 2 1 1 * command
一次性任务
bash
# 5分钟后执行命令
echo"command" | at now + 5 minutes
# 今天22:00执行
echo"command" | at 22:00
# 明天10:00执行
echo"command" | at 10:00 tomorrow
# 查看at任务
atq
# 删除at任务
atrm job_number
十二、系统管理高级命令
系统调试
bash
# 查看系统日志
sudotail -f /var/log/syslog
# 查看认证日志
sudotail -f /var/log/auth.log
# 查看内核日志
dmesg
# 查看最近内核日志
dmesg | tail
# 查看启动日志
journalctl -b
# 查看内核参数
sysctl -a
# 修改内核参数
sudo sysctl -w kernel.parameter=value
# 查看系统限制
ulimit -a
# 查看环境变量
env
# 查看特定环境变量
echo$PATH
# 设置环境变量
export VARIABLE=value
# 添加到PATH
export PATH=$PATH:/new/path
性能监控
bash
# 实时系统监控
top
# 更友好的监控
htop
# 监控进程打开的文件
lsof -p PID
# 监控网络连接
sudo netstat -tulpn
# 或
sudo ss -tulpn
# 监控磁盘I/O
iotop
# 监控网络流量
iftop
# 监控CPU使用
mpstat
# 监控内存使用
vmstat
# 查看系统活动报告
sar
# 查看历史CPU使用
sar -u
# 查看历史内存使用
sar -r
# 查看历史I/O
sar -b
# 查看实时系统统计
dstat
十三、Shell脚本示例
基本脚本
bash
#!/bin/bash
# 这是一个Shell脚本示例
# 注释以#开头
# 定义变量
name="World"
count=10
files=$(ls)
# 输出
echo"Hello, $name!"
echo"Count: $count"
# 条件判断
if [ $count -eq 10 ]; then
echo"Count is 10"
elif [ $count -gt 10 ]; then
echo"Count is greater than 10"
else
echo"Count is less than 10"
fi
# 循环
for i in {1..5}; do
echo"Number: $i"
done
# 遍历文件
for file in$files; do
echo"File: $file"
done
# while循环
while [ $count -gt 0 ]; do
echo"Countdown: $count"
count=$((count-1))
done
# 函数定义
greet() {
echo"Hello, $1!"
}
# 函数调用
greet "Alice"
greet "Bob"
# 参数传递
echo"First argument: $1"
echo"Second argument: $2"
echo"All arguments: $@"
echo"Number of arguments: $#"
# 返回值
check_file() {
if [ -f "$1" ]; then
return 0
else
return 1
fi
}
# 使用函数
if check_file "test.txt"; then
echo"File exists"
else
echo"File does not exist"
fi
十四、实用小技巧
命令行技巧
bash
# 历史命令搜索
Ctrl+R
# 清屏
Ctrl+L
# 移动到行首
Ctrl+A
# 移动到行尾
Ctrl+E
# 删除到行首
Ctrl+U
# 删除到行尾
Ctrl+K
# 删除前一个单词
Ctrl+W
# 粘贴删除的内容
Ctrl+Y
# 暂停进程
Ctrl+Z
# 终止进程
Ctrl+C
# 退出终端
Ctrl+D
# 快速执行上一条命令
!!
# 快速执行上一条以特定字符串开头的命令
!sudo
# 执行历史中的第N条命令
!N
# 重复上一条命令的最后一个参数
!$
# 重复上一条命令的所有参数
!*
# 命令替换
ls $(which bash)
# 或
ls `which bash`
# 管道示例
ps aux | grep ssh
cat file.txt | grep "error" | wc -l
ls -la | less
# 重定向示例
command > output.txt # 覆盖重定向
command >> output.txt # 追加重定向
command 2> error.txt # 错误重定向
command &> output.txt # 所有输出重定向
command < input.txt # 输入重定向
# 后台运行
long_running_command &
# 后台运行并忽略挂起信号
nohup long_running_command &
# 查看后台作业
jobs
# 将后台作业调到前台
fg %1
实用命令组合
bash
# 统计当前目录文件数
ls | wc -l
# 查找大文件
find . -type f -size +100M
# 查找修改时间在7天内的文件
find . -type f -mtime -7
# 查找并删除7天前的日志文件
find /var/log -name "*.log" -mtime +7 -delete
# 查找包含特定文本的文件
grep -r "search_text" /path/to/search/
# 查找并替换文本
find . -type f -name "*.txt" -exec sed -i 's/old/new/g' {} \;
# 统计代码行数
find . -name "*.py" -execcat {} \; | wc -l
# 监控文件变化
tail -f /var/log/syslog | grep "error"
# 查看内存使用前10的进程
ps aux --sort=-%mem | head -11
# 查看CPU使用前10的进程
ps aux --sort=-%cpu | head -11
# 监控网络连接数
watch -n 1 "netstat -an | grep :80 | wc -l"
# 生成随机密码
openssl rand -base64 12
# 或
tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 12
# 查看文件修改时间
stat filename.txt
# 比较两个目录差异
diff -r dir1 dir2
十五、常见任务快速参考
系统维护
bash
# 更新系统
# Debian/Ubuntu
sudo apt update && sudo apt upgrade
# RHEL/CentOS/Fedora
sudo yum update
sudo dnf update
# Arch
sudo pacman -Syu
# 清理系统
# 清理包缓存
sudo apt clean
sudo yum clean all
# 清理旧内核
sudo apt autoremove
# 清理日志
sudo journalctl --vacuum-time=7d
# 清理临时文件
sudorm -rf /tmp/*
sudorm -rf /var/tmp/*
# 查看磁盘使用
df -h
# 查看目录大小
du -sh /*
# 查找大文件
find / -type f -size +100M 2>/dev/null
# 查找大目录
du -h /home/* | sort -rh | head -20
# 监控系统资源
# 查看内存使用
free -h
# 查看CPU使用
top
# 查看网络连接
ss -tuln
# 查看进程
ps aux
问题排查
bash
# 查看系统负载
uptime
# 查看内存使用
free -m
# 查看进程占用内存
ps aux --sort=-%mem | head
# 查看进程占用CPU
ps aux --sort=-%cpu | head
# 查看磁盘I/O
iotop
# 查看网络流量
iftop
# 查看系统日志
sudotail -f /var/log/syslog
# 查看应用日志
sudo journalctl -u servicename -f
# 查看错误日志
sudo grep -i error /var/log/syslog
# 查看网络连接
netstat -tulpn
# 查看端口占用
sudo lsof -i :80
# 查看系统启动时间
who -b
# 查看登录用户
who
# 查看最近登录
last
十六、Shell内建命令
Bash内建命令
bash
# 查看内建命令
compgen -b
# 常见内建命令:
# cd - 切换目录
# pwd - 打印工作目录
# echo - 输出文本
# read - 读取输入
# export - 设置环境变量
# unset - 删除变量
# alias - 创建别名
# unalias - 删除别名
# source 或 . - 执行脚本
# exit - 退出shell
# history - 查看历史
# type - 显示命令类型
# test 或 [ ] - 条件测试
# time - 测量时间
# trap - 信号处理
# ulimit - 设置限制
# umask - 设置默认权限
使用说明
- 命令参数:大部分命令都有很多选项,使用--help或man查看完整帮助
- 权限:许多系统管理命令需要sudo或root权限
- 路径:注意当前工作目录,相对路径和绝对路径的区别
- 危险操作:rm -rf、fdisk、dd等命令要特别小心
- 备份:执行可能破坏数据的操作前,先备份重要数据
- 测试:在生产环境执行命令前,先在测试环境验证