Linux 实操命令大全
文件与目录操作
目录操作
ls - 列出目录内容
bash
# 基本用法
ls # 列出当前目录文件
ls -l # 详细列表(长格式)
ls -a # 显示所有文件(包括隐藏文件)
ls -lh # 人类可读的文件大小
ls -la # 显示所有文件详细信息
ls -lt # 按时间排序
ls -lS # 按大小排序
ls -R # 递归显示子目录
ls -d */ # 只显示目录
ls /path/to/dir # 列出指定目录
cd - 切换目录
bash
cd # 返回家目录
cd ~ # 返回家目录
cd - # 返回上次所在目录
cd .. # 返回上一级目录
cd /path/to/dir # 切换到指定目录
cd ../.. # 返回上两级目录
pwd - 显示当前目录
bash
pwd # 显示当前工作目录的完整路径
mkdir - 创建目录
bash
mkdir dirname # 创建单个目录
mkdir -p dir1/dir2 # 递归创建目录(父目录不存在时自动创建)
mkdir -m 755 dirname # 创建目录并设置权限
mkdir dir1 dir2 dir3 # 同时创建多个目录
rmdir - 删除空目录
bash
rmdir dirname # 删除空目录
rmdir -p dir1/dir2 # 递归删除空目录
tree - 树形显示目录结构
bash
tree # 显示当前目录树
tree -L 2 # 只显示2层深度
tree -d # 只显示目录
tree -a # 显示所有文件(包括隐藏文件)
文件操作
touch - 创建文件或更新时间戳
bash
touch filename # 创建空文件或更新时间戳
touch file1 file2 # 同时创建多个文件
touch -t 202401011200 filename # 设置特定时间戳
cp - 复制文件或目录
bash
cp file1 file2 # 复制文件
cp file1 dir/ # 复制文件到目录
cp -r dir1 dir2 # 递归复制目录
cp -a source dest # 保持所有属性复制(归档模式)
cp -u source dest # 只复制更新的文件
cp -v file1 file2 # 显示复制过程(详细模式)
cp -p file1 file2 # 保持文件属性
cp -i file1 file2 # 交互模式(覆盖前询问)
mv - 移动或重命名文件
bash
mv file1 file2 # 重命名文件
mv file1 dir/ # 移动文件到目录
mv dir1 dir2 # 移动或重命名目录
mv -i file1 file2 # 交互模式(覆盖前询问)
mv -v file1 file2 # 显示移动过程
rm - 删除文件或目录
bash
rm filename # 删除文件
rm -f filename # 强制删除(不提示)
rm -r dirname # 递归删除目录
rm -rf dirname # 强制递归删除目录(危险!)
rm -i filename # 交互模式(删除前询问)
rm -v filename # 显示删除过程
rm *.txt # 删除所有.txt文件
ln - 创建链接
bash
ln file1 file2 # 创建硬链接
ln -s file1 file2 # 创建软链接(符号链接)
ln -sf file1 file2 # 强制创建软链接
文件查看与编辑
文件查看
cat - 显示文件内容
bash
cat filename # 显示整个文件
cat file1 file2 # 显示多个文件
cat -n filename # 显示行号
cat -b filename # 显示行号(空行不编号)
cat -s filename # 压缩连续空行
less / more - 分页查看文件
bash
less filename # 分页查看(可上下滚动)
more filename # 分页查看(只能向下)
# less 常用操作:
# 空格键:向下翻页
# b键:向上翻页
# /关键词:搜索
# q键:退出
head - 显示文件开头
bash
head filename # 显示前10行
head -n 20 filename # 显示前20行
head -c 100 filename # 显示前100字节
tail - 显示文件末尾
bash
tail filename # 显示后10行
tail -n 20 filename # 显示后20行
tail -f filename # 实时跟踪文件变化(常用于日志)
tail -F filename # 跟踪文件(文件被删除重建后继续跟踪)
wc - 统计文件信息
bash
wc filename # 统计行数、单词数、字符数
wc -l filename # 只统计行数
wc -w filename # 只统计单词数
wc -c filename # 只统计字符数
wc -m filename # 只统计字符数(多字节字符)
文件编辑
vi / vim - 文本编辑器
bash
vi filename # 打开文件
vim filename # 打开文件(vim是vi的增强版)
# vim 基本操作:
# 命令模式(默认):
# i:进入插入模式
# a:在光标后插入
# o:在下一行插入
# dd:删除当前行
# yy:复制当前行
# p:粘贴
# u:撤销
# :w:保存
# :q:退出
# :wq:保存并退出
# :q!:强制退出不保存
# /关键词:搜索
# :set number:显示行号
nano - 简单文本编辑器
bash
nano filename # 打开文件
# Ctrl+O:保存
# Ctrl+X:退出
# Ctrl+W:搜索
文件权限管理
chmod - 修改文件权限
bash
# 数字方式
chmod 755 filename # rwxr-xr-x
chmod 644 filename # rw-r--r--
chmod 777 filename # rwxrwxrwx(所有权限)
chmod -R 755 dir/ # 递归修改目录权限
# 符号方式
chmod u+x filename # 给所有者添加执行权限
chmod g+w filename # 给组添加写权限
chmod o-r filename # 移除其他人的读权限
chmod a+x filename # 给所有人添加执行权限
chmod u=rwx,g=rx,o=r filename # 分别设置权限
chown - 修改文件所有者
bash
chown user filename # 修改所有者
chown user:group filename # 修改所有者和组
chown -R user dir/ # 递归修改目录所有者
chgrp - 修改文件组
bash
chgrp group filename # 修改文件组
chgrp -R group dir/ # 递归修改目录组
umask - 设置默认权限
bash
umask # 查看当前umask值
umask 022 # 设置umask(新文件权限=666-umask,目录权限=777-umask)
文件搜索与查找
find - 查找文件
bash
find . -name "*.txt" # 按名称查找
find /home -name "file*" # 在指定目录查找
find . -type f # 查找文件
find . -type d # 查找目录
find . -size +100M # 查找大于100MB的文件
find . -mtime -7 # 查找7天内修改的文件
find . -user username # 查找指定用户的文件
find . -perm 644 # 查找指定权限的文件
find . -name "*.log" -delete # 查找并删除
find . -name "*.txt" -exec ls -l {} \; # 查找并执行命令
find . -name "*.txt" | xargs rm # 查找并删除(使用xargs)
locate - 快速查找文件
bash
locate filename # 查找文件(需要updatedb更新数据库)
updatedb # 更新locate数据库
locate -i filename # 忽略大小写
locate -c filename # 只显示数量
which - 查找命令位置
bash
which ls # 查找ls命令的位置
which python # 查找python命令的位置
whereis - 查找命令及相关文件
bash
whereis ls # 查找ls命令及其手册页
whereis -b ls # 只查找二进制文件
whereis -m ls # 只查找手册页
grep - 文本搜索
bash
grep "pattern" file # 在文件中搜索
grep -r "pattern" dir/ # 递归搜索目录
grep -i "pattern" file # 忽略大小写
grep -v "pattern" file # 反向匹配(显示不匹配的行)
grep -n "pattern" file # 显示行号
grep -c "pattern" file # 只显示匹配数量
grep -l "pattern" dir/ # 只显示文件名
grep -E "pattern" file # 使用扩展正则表达式
文件压缩与解压
tar - 归档工具
bash
# 压缩
tar -czf archive.tar.gz dir/ # 创建gzip压缩包
tar -cjf archive.tar.bz2 dir/ # 创建bzip2压缩包
tar -cJf archive.tar.xz dir/ # 创建xz压缩包
# 解压
tar -xzf archive.tar.gz # 解压gzip压缩包
tar -xjf archive.tar.bz2 # 解压bzip2压缩包
tar -xJf archive.tar.xz # 解压xz压缩包
# 查看
tar -tzf archive.tar.gz # 查看压缩包内容
tar -xzf archive.tar.gz -C /path # 解压到指定目录
# 参数说明:
# -c: 创建归档
# -x: 解压归档
# -z: gzip压缩
# -j: bzip2压缩
# -J: xz压缩
# -f: 指定文件名
# -v: 显示过程
# -t: 列出内容
zip / unzip - ZIP压缩
bash
zip -r archive.zip dir/ # 压缩目录
zip archive.zip file1 file2 # 压缩文件
unzip archive.zip # 解压
unzip -l archive.zip # 查看压缩包内容
unzip -d /path archive.zip # 解压到指定目录
gzip / gunzip - GZIP压缩
bash
gzip filename # 压缩文件(生成.gz文件)
gzip -d filename.gz # 解压
gunzip filename.gz # 解压
gzip -9 filename # 最大压缩率
gzip -1 filename # 最快压缩
bzip2 / bunzip2 - BZIP2压缩
bash
bzip2 filename # 压缩文件(生成.bz2文件)
bzip2 -d filename.bz2 # 解压
bunzip2 filename.bz2 # 解压
系统信息查看
uname - 系统信息
bash
uname -a # 显示所有系统信息
uname -s # 显示系统名称
uname -r # 显示内核版本
uname -m # 显示硬件架构
hostname - 主机名
bash
hostname # 显示主机名
hostname -I # 显示IP地址
hostname -f # 显示完整域名
uptime - 系统运行时间
bash
uptime # 显示系统运行时间和负载
date - 日期时间
bash
date # 显示当前日期时间
date +%Y-%m-%d # 显示日期(YYYY-MM-DD格式)
date +%H:%M:%S # 显示时间(HH:MM:SS格式)
date -s "2024-01-01 12:00:00" # 设置系统时间(需要root)
whoami - 当前用户
bash
whoami # 显示当前用户名
id - 用户ID信息
bash
id # 显示当前用户ID和组ID
id username # 显示指定用户ID信息
df - 磁盘空间
bash
df # 显示文件系统磁盘空间
df -h # 人类可读格式
df -i # 显示inode使用情况
df -T # 显示文件系统类型
du - 目录空间
bash
du # 显示当前目录大小
du -h # 人类可读格式
du -sh dir/ # 显示目录总大小
du -h --max-depth=1 # 显示一级子目录大小
du -a # 显示所有文件大小
free - 内存信息
bash
free # 显示内存使用情况
free -h # 人类可读格式
free -m # 以MB为单位
free -g # 以GB为单位
free -s 5 # 每5秒刷新一次
lscpu - CPU信息
bash
lscpu # 显示CPU详细信息
lsblk - 块设备信息
bash
lsblk # 显示块设备树
lsblk -f # 显示文件系统信息
进程管理
ps - 查看进程
bash
ps # 显示当前终端进程
ps aux # 显示所有进程(BSD风格)
ps -ef # 显示所有进程(Unix风格)
ps aux | grep nginx # 查找特定进程
ps -p PID # 查看指定PID的进程
ps -u username # 查看指定用户的进程
top - 实时进程监控
bash
top # 实时显示进程信息
# 交互命令:
# P:按CPU使用率排序
# M:按内存使用率排序
# T:按运行时间排序
# k:杀死进程
# q:退出
htop - 增强版top
bash
htop # 更友好的进程监控工具(需要安装)
kill - 终止进程
bash
kill PID # 终止进程(发送SIGTERM信号)
kill -9 PID # 强制终止进程(发送SIGKILL信号)
kill -15 PID # 优雅终止进程
killall process_name # 终止所有同名进程
killall -9 process_name # 强制终止所有同名进程
pkill - 按名称终止进程
bash
pkill process_name # 按名称终止进程
pkill -9 process_name # 强制终止
pkill -u username # 终止指定用户的进程
jobs - 作业控制
bash
jobs # 显示当前作业
jobs -l # 显示作业详细信息
fg %1 # 将作业1调到前台
bg %1 # 将作业1调到后台
nohup - 后台运行
bash
nohup command & # 后台运行命令(忽略挂起信号)
nohup command > output.log 2>&1 & # 后台运行并重定向输出
screen - 终端复用
bash
screen # 创建新screen会话
screen -S name # 创建命名会话
screen -r # 恢复会话
screen -ls # 列出所有会话
# Ctrl+A+D:分离会话
# screen -d -r name:强制分离并恢复
tmux - 终端复用器
bash
tmux # 创建新会话
tmux new -s name # 创建命名会话
tmux attach -t name # 附加到会话
tmux ls # 列出所有会话
# Ctrl+B+D:分离会话
网络操作
ping - 网络连通性测试
bash
ping hostname # 测试网络连通性
ping -c 4 hostname # 发送4个包后停止
ping -i 2 hostname # 每2秒发送一个包
ifconfig - 网络接口配置
bash
ifconfig # 显示所有网络接口
ifconfig eth0 # 显示指定接口
ifconfig eth0 up # 启用接口
ifconfig eth0 down # 禁用接口
ifconfig eth0 192.168.1.100 # 设置IP地址
ip - 现代网络工具
bash
ip addr # 显示IP地址(替代ifconfig)
ip link # 显示网络接口
ip route # 显示路由表
ip route add default via 192.168.1.1 # 添加默认路由
netstat - 网络连接
bash
netstat -an # 显示所有连接
netstat -tuln # 显示监听端口
netstat -rn # 显示路由表
netstat -p # 显示进程信息
ss - 现代netstat替代
bash
ss -an # 显示所有连接
ss -tuln # 显示监听端口
ss -p # 显示进程信息
ss -l # 显示监听端口
curl - 网络请求
bash
curl http://example.com # 获取网页内容
curl -O http://example.com/file # 下载文件
curl -L http://example.com # 跟随重定向
curl -H "Header: value" url # 添加HTTP头
curl -X POST -d "data" url # POST请求
curl -u user:pass url # 基本认证
wget - 文件下载
bash
wget http://example.com/file # 下载文件
wget -O filename url # 指定保存文件名
wget -c url # 断点续传
wget -r url # 递归下载
wget -P /path url # 保存到指定目录
tcpdump - 网络抓包
bash
tcpdump # 抓取所有网络包
tcpdump -i eth0 # 指定网络接口
tcpdump port 80 # 抓取指定端口
tcpdump host 192.168.1.1 # 抓取指定主机
tcpdump -w file.pcap # 保存到文件
tcpdump -r file.pcap # 读取抓包文件
iptables - 防火墙
bash
iptables -L # 列出规则
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许80端口
iptables -A INPUT -j DROP # 默认拒绝
iptables -F # 清空规则
iptables -S # 显示规则(iptables-save格式)
磁盘与文件系统
mount - 挂载文件系统
bash
mount # 显示所有挂载点
mount /dev/sda1 /mnt # 挂载设备
mount -t ext4 /dev/sda1 /mnt # 指定文件系统类型
umount /mnt # 卸载
umount -l /mnt # 懒卸载
fdisk - 磁盘分区
bash
fdisk -l # 列出所有磁盘分区
fdisk /dev/sda # 编辑磁盘分区表(需要root)
mkfs - 创建文件系统
bash
mkfs.ext4 /dev/sda1 # 创建ext4文件系统
mkfs.xfs /dev/sda1 # 创建xfs文件系统
mkfs.vfat /dev/sda1 # 创建FAT文件系统
fsck - 文件系统检查
bash
fsck /dev/sda1 # 检查文件系统
fsck -y /dev/sda1 # 自动修复
fsck.ext4 /dev/sda1 # 检查ext4文件系统
blkid - 显示块设备UUID
bash
blkid # 显示所有块设备UUID
blkid /dev/sda1 # 显示指定设备UUID
用户与权限管理
useradd - 添加用户
bash
useradd username # 创建用户
useradd -m username # 创建用户并创建家目录
useradd -s /bin/bash username # 指定shell
useradd -G group1,group2 username # 添加到附加组
userdel - 删除用户
bash
userdel username # 删除用户
userdel -r username # 删除用户并删除家目录
usermod - 修改用户
bash
usermod -aG group username # 添加用户到组
usermod -s /bin/bash username # 修改shell
usermod -L username # 锁定用户
usermod -U username # 解锁用户
passwd - 修改密码
bash
passwd # 修改当前用户密码
passwd username # 修改指定用户密码(需要root)
passwd -l username # 锁定用户密码
passwd -u username # 解锁用户密码
groupadd - 添加组
bash
groupadd groupname # 创建组
groupadd -g 1000 groupname # 指定GID
groupdel - 删除组
bash
groupdel groupname # 删除组
su - 切换用户
bash
su # 切换到root
su username # 切换到指定用户
su - username # 切换到用户并加载环境变量
sudo - 以其他用户执行命令
bash
sudo command # 以root执行命令
sudo -u username command # 以指定用户执行
sudo -i # 切换到root的交互shell
sudo -l # 列出当前用户可执行的sudo命令
who - 显示登录用户
bash
who # 显示当前登录用户
whoami # 显示当前用户名
w # 显示登录用户及活动
软件包管理
apt (Debian/Ubuntu)
bash
apt update # 更新软件包列表
apt upgrade # 升级所有软件包
apt install package # 安装软件包
apt remove package # 卸载软件包
apt purge package # 卸载软件包并删除配置
apt search keyword # 搜索软件包
apt show package # 显示软件包信息
apt list --installed # 列出已安装的软件包
apt autoremove # 删除不需要的依赖
yum (CentOS/RHEL 7)
bash
yum install package # 安装软件包
yum remove package # 卸载软件包
yum update # 更新软件包
yum search keyword # 搜索软件包
yum list installed # 列出已安装的软件包
yum info package # 显示软件包信息
dnf (CentOS/RHEL 8+)
bash
dnf install package # 安装软件包
dnf remove package # 卸载软件包
dnf update # 更新软件包
dnf search keyword # 搜索软件包
dnf list installed # 列出已安装的软件包
rpm - RPM包管理
bash
rpm -i package.rpm # 安装RPM包
rpm -e package # 卸载RPM包
rpm -q package # 查询软件包
rpm -qa # 列出所有已安装的RPM包
rpm -ql package # 列出软件包文件
rpm -qf /path/file # 查询文件属于哪个包
dpkg (Debian/Ubuntu)
bash
dpkg -i package.deb # 安装DEB包
dpkg -r package # 卸载软件包
dpkg -l # 列出所有已安装的包
dpkg -L package # 列出软件包文件
dpkg -S /path/file # 查询文件属于哪个包
系统服务管理
systemctl (systemd)
bash
systemctl start service # 启动服务
systemctl stop service # 停止服务
systemctl restart service # 重启服务
systemctl reload service # 重新加载配置
systemctl status service # 查看服务状态
systemctl enable service # 设置开机自启
systemctl disable service # 取消开机自启
systemctl list-units # 列出所有单元
systemctl list-unit-files # 列出所有单元文件
service (SysV)
bash
service service_name start # 启动服务
service service_name stop # 停止服务
service service_name restart # 重启服务
service service_name status # 查看服务状态
chkconfig (SysV)
bash
chkconfig service on # 设置开机自启
chkconfig service off # 取消开机自启
chkconfig --list # 列出所有服务
文本处理
sed - 流编辑器
bash
sed 's/old/new/g' file # 替换文本
sed -i 's/old/new/g' file # 直接修改文件
sed '1d' file # 删除第一行
sed '1,5d' file # 删除1-5行
sed '/pattern/d' file # 删除匹配行
sed -n '5p' file # 打印第5行
sed -n '5,10p' file # 打印5-10行
awk - 文本处理工具
bash
awk '{print $1}' file # 打印第一列
awk -F: '{print $1}' file # 使用冒号作为分隔符
awk '/pattern/ {print}' file # 打印匹配行
awk '{sum+=$1} END {print sum}' file # 求和
awk 'NR==1' file # 打印第一行
awk 'NR>=5 && NR<=10' file # 打印5-10行
cut - 截取文本
bash
cut -d: -f1 file # 使用冒号分隔,取第一列
cut -c1-10 file # 取1-10个字符
cut -f1,3 file # 取第1和第3列
sort - 排序
bash
sort file # 排序文件
sort -r file # 逆序排序
sort -n file # 数字排序
sort -u file # 去重排序
sort -k2 file # 按第2列排序
uniq - 去重
bash
uniq file # 去除连续重复行
uniq -c file # 统计重复次数
uniq -d file # 只显示重复行
uniq -u file # 只显示不重复行
diff - 文件比较
bash
diff file1 file2 # 比较两个文件
diff -u file1 file2 # 统一格式输出
diff -r dir1 dir2 # 递归比较目录
patch - 应用补丁
bash
patch file < patchfile # 应用补丁
patch -p1 < patchfile # 应用补丁(忽略一级目录)
定时任务
crontab - 定时任务
bash
crontab -e # 编辑定时任务
crontab -l # 列出定时任务
crontab -r # 删除所有定时任务
crontab -u user -e # 编辑指定用户的定时任务
# crontab格式:
# 分钟 小时 日 月 星期 命令
# * * * * * command
# 0 2 * * * command # 每天凌晨2点执行
# */5 * * * * command # 每5分钟执行
# 0 */2 * * * command # 每2小时执行
at - 一次性定时任务
bash
at 14:30 # 在14:30执行(Ctrl+D结束输入)
at now + 1 hour # 1小时后执行
at -l # 列出待执行的任务
at -d job_id # 删除任务
系统监控
vmstat - 虚拟内存统计
bash
vmstat # 显示虚拟内存统计
vmstat 2 # 每2秒刷新一次
vmstat 2 10 # 每2秒刷新,共10次
iostat - I/O统计
bash
iostat # 显示I/O统计
iostat -x # 显示扩展统计
iostat 2 # 每2秒刷新
sar - 系统活动报告
bash
sar # 显示CPU使用情况
sar -u 2 5 # 每2秒显示一次,共5次
sar -r # 显示内存使用情况
sar -n DEV # 显示网络统计
dmesg - 内核消息
bash
dmesg # 显示内核消息
dmesg | tail # 显示最后几条
dmesg | grep error # 查找错误信息
dmesg -w # 实时监控
journalctl - 系统日志
bash
journalctl # 显示所有日志
journalctl -u service # 显示指定服务的日志
journalctl -f # 实时跟踪日志
journalctl --since today # 显示今天的日志
journalctl -n 100 # 显示最后100条
常用快捷键
终端快捷键
bash
Ctrl+C # 中断当前命令
Ctrl+D # 退出终端/结束输入
Ctrl+Z # 暂停进程(可用fg恢复)
Ctrl+L # 清屏
Ctrl+A # 移动到行首
Ctrl+E # 移动到行尾
Ctrl+U # 删除到行首
Ctrl+K # 删除到行尾
Ctrl+W # 删除前一个单词
Ctrl+R # 搜索历史命令
Tab # 自动补全
历史命令
bash
history # 显示命令历史
!! # 执行上一条命令
!n # 执行历史中第n条命令
!string # 执行最近以string开头的命令
!$ # 上一条命令的最后一个参数
实用技巧
管道与重定向
bash
command1 | command2 # 管道:将command1的输出作为command2的输入
command > file # 重定向输出到文件(覆盖)
command >> file # 重定向输出到文件(追加)
command < file # 从文件读取输入
command 2> file # 重定向错误输出
command > file 2>&1 # 将标准输出和错误输出都重定向到文件
command &> file # 将标准输出和错误输出都重定向到文件
后台执行
bash
command & # 后台执行
command && command2 # 前一个命令成功才执行后一个
command || command2 # 前一个命令失败才执行后一个
command1 ; command2 # 顺序执行(无论成功失败)
变量与环境变量
bash
VAR=value # 设置变量
echo $VAR # 显示变量
export VAR=value # 设置环境变量
env # 显示所有环境变量
set # 显示所有变量
unset VAR # 删除变量
别名
bash
alias ll='ls -l' # 创建别名
alias # 显示所有别名
unalias ll # 删除别名
通配符
bash
* # 匹配任意字符
? # 匹配单个字符
[abc] # 匹配a、b或c
[a-z] # 匹配a到z
[!abc] # 不匹配a、b、c
{1,2,3} # 匹配1、2或3
总结
本文档涵盖了Linux系统中最常用的命令和操作,包括:
- 文件和目录的基本操作
- 文件查看和编辑
- 权限管理
- 系统监控
- 网络操作
- 进程管理
- 软件包管理
- 文本处理
- 定时任务
掌握这些命令可以大大提高Linux系统操作的效率。建议在实际使用中多练习,熟能生巧。
注意:
- 使用
rm -rf等危险命令前请仔细确认 - 修改系统配置前建议备份
- 使用
sudo或root权限时要谨慎 - 定期更新系统和软件包以保持安全