5070 字
25 分钟
Linux命令
文件和目录操作
ls - 列出目录内容
ls # 列出当前目录ls -l # 详细信息ls -a # 显示隐藏文件ls -lh # 人性化显示文件大小ls -R # 递归显示子目录ls -lt # 按修改时间排序ls -lS # 按文件大小排序cd - 切换目录
cd /path # 切换到指定路径cd ~ # 切换到家目录cd .. # 返回上级目录cd - # 返回上次目录pwd - 显示当前目录
pwd # 显示当前工作目录完整路径pwd -P # 显示物理路径(不含符号链接)mkdir - 创建目录
mkdir dir # 创建目录mkdir -p a/b/c # 递归创建多级目录mkdir -m 755 dir # 创建目录并设置权限rmdir - 删除空目录
rmdir dir # 删除空目录rmdir -p a/b/c # 递归删除空目录cp - 复制文件/目录
cp file1 file2 # 复制文件cp -r dir1 dir2 # 递归复制目录cp -i file1 file2 # 交互式复制(覆盖前提示)cp -u file1 file2 # 仅复制较新文件cp -p file1 file2 # 保留属性cp -a dir1 dir2 # 归档模式(保留所有属性)mv - 移动/重命名
mv file1 file2 # 重命名文件mv file dir/ # 移动文件到目录mv -i file1 file2 # 交互式移动mv -u file1 file2 # 仅移动较新文件rm - 删除文件/目录
rm file # 删除文件rm -f file # 强制删除rm -i file # 交互式删除rm -r dir # 递归删除目录rm -rf dir # 强制递归删除(危险)touch - 创建文件/更新时间戳
touch file # 创建空文件或更新时间戳touch -t 202501011200 file # 设置指定时间戳文件查看和编辑
cat - 查看文件内容
cat file # 显示文件内容cat -n file # 显示行号cat file1 file2 # 合并显示多个文件cat > file # 创建文件(Ctrl+D结束)more - 分页查看
more file # 分页显示(空格下一页,q退出)less - 分页查看(增强版)
less file # 分页显示(支持上下翻页)less -N file # 显示行号# 快捷键: 空格(下一页) b(上一页) /(搜索) q(退出)head - 查看文件开头
head file # 显示前10行head -n 20 file # 显示前20行head -c 100 file # 显示前100字节tail - 查看文件末尾
tail file # 显示后10行tail -n 20 file # 显示后20行tail -f file # 实时监控文件变化tail -F file # 实时监控(文件重建也能跟踪)nano - 简单文本编辑器
nano file # 编辑文件# Ctrl+O 保存, Ctrl+X 退出vim - 强大文本编辑器
vim file # 编辑文件# i 进入插入模式, Esc 退出插入模式# :w 保存, :q 退出, :wq 保存并退出, :q! 不保存退出文件权限管理
chmod - 修改权限
chmod 755 file # 设置权限为rwxr-xr-xchmod u+x file # 给所有者添加执行权限chmod g-w file # 移除组写权限chmod o=r file # 设置其他人只读chmod -R 755 dir # 递归修改目录权限chown - 修改所有者
chown user file # 修改所有者chown user:group file # 修改所有者和组chown -R user dir # 递归修改chgrp - 修改所属组
chgrp group file # 修改所属组chgrp -R group dir # 递归修改umask - 设置默认权限
umask # 查看当前umask值umask 022 # 设置umask为022文件搜索
find - 查找文件
find /path -name "*.txt" # 按名称查找find . -type f # 查找所有文件find . -type d # 查找所有目录find . -size +100M # 查找大于100M的文件find . -mtime -7 # 查找7天内修改的文件find . -user username # 查找指定用户的文件find . -perm 755 # 查找指定权限的文件find . -name "*.log" -delete # 查找并删除find . -name "*.txt" -exec rm {} \; # 查找并执行命令locate - 快速查找文件
locate file # 快速查找文件locate -i file # 忽略大小写updatedb # 更新locate数据库which - 查找命令路径
which command # 查找命令的完整路径whereis - 查找命令相关文件
whereis command # 查找命令、源码、手册页文本处理
grep - 文本搜索
grep "pattern" file # 搜索匹配的行grep -i "pattern" file # 忽略大小写grep -r "pattern" dir # 递归搜索目录grep -v "pattern" file # 显示不匹配的行grep -n "pattern" file # 显示行号grep -c "pattern" file # 统计匹配行数grep -l "pattern" *.txt # 只显示匹配的文件名grep -A 3 "pattern" file # 显示匹配行及后3行grep -B 3 "pattern" file # 显示匹配行及前3行grep -C 3 "pattern" file # 显示匹配行及前后3行sed - 流编辑器
sed 's/old/new/' file # 替换每行第一个匹配sed 's/old/new/g' file # 替换所有匹配sed -i 's/old/new/g' file # 直接修改文件sed '1,10d' file # 删除1-10行sed -n '5,10p' file # 只显示5-10行awk - 文本分析工具
awk '{print $1}' file # 打印第一列awk '{print $1,$3}' file # 打印第1和第3列awk -F: '{print $1}' /etc/passwd # 指定分隔符awk '$3>100' file # 打印第3列大于100的行awk '{sum+=$1} END {print sum}' file # 求和cut - 剪切文本
cut -d: -f1 /etc/passwd # 按:分割,取第1字段cut -c1-10 file # 取每行第1-10个字符cut -f1,3 file # 取第1和第3字段sort - 排序
sort file # 按字母排序sort -n file # 按数字排序sort -r file # 逆序排序sort -u file # 排序并去重sort -k2 file # 按第2列排序sort -t: -k3 -n file # 指定分隔符按第3列数字排序uniq - 去重
uniq file # 去除相邻重复行uniq -c file # 统计重复次数uniq -d file # 只显示重复行uniq -u file # 只显示不重复行wc - 统计
wc file # 统计行数、单词数、字节数wc -l file # 统计行数wc -w file # 统计单词数wc -c file # 统计字节数diff - 比较文件
diff file1 file2 # 比较两个文件diff -u file1 file2 # 统一格式显示差异diff -r dir1 dir2 # 递归比较目录压缩和解压
tar - 归档工具
tar -cvf archive.tar files # 创建归档tar -xvf archive.tar # 解压归档tar -tvf archive.tar # 查看归档内容tar -czvf archive.tar.gz files # 创建gzip压缩归档tar -xzvf archive.tar.gz # 解压gzip归档tar -cjvf archive.tar.bz2 files # 创建bzip2压缩归档tar -xjvf archive.tar.bz2 # 解压bzip2归档tar -xvf archive.tar -C /path # 解压到指定目录gzip - 压缩文件
gzip file # 压缩文件(删除原文件)gzip -k file # 压缩文件(保留原文件)gzip -d file.gz # 解压文件gunzip file.gz # 解压文件gzip -r dir # 递归压缩目录bzip2 - 压缩文件
bzip2 file # 压缩文件bzip2 -d file.bz2 # 解压文件bunzip2 file.bz2 # 解压文件zip - 压缩工具
zip archive.zip files # 创建zip压缩包zip -r archive.zip dir # 递归压缩目录unzip archive.zip # 解压zip文件unzip -l archive.zip # 查看zip内容unzip archive.zip -d /path # 解压到指定目录进程管理
ps - 查看进程
ps # 显示当前终端进程ps aux # 显示所有进程详细信息ps -ef # 显示所有进程完整信息ps -u username # 显示指定用户进程ps -p PID # 显示指定PID的进程top - 实时进程监控
top # 实时显示进程信息top -u username # 显示指定用户进程# 快捷键: q(退出) k(杀死进程) P(按CPU排序) M(按内存排序)htop - 增强版进程监控
htop # 交互式进程查看器(需安装)kill - 终止进程
kill PID # 终止进程kill -9 PID # 强制终止进程kill -15 PID # 正常终止进程(默认)killall process_name # 按名称终止进程pkill - 按名称终止进程
pkill process_name # 终止匹配的进程pkill -u username # 终止指定用户的进程bg - 后台运行
bg # 将暂停的任务放到后台运行bg %1 # 将指定任务放到后台fg - 前台运行
fg # 将后台任务调到前台fg %1 # 将指定任务调到前台jobs - 查看后台任务
jobs # 显示后台任务列表jobs -l # 显示任务PIDnohup - 后台运行(退出终端仍运行)
nohup command & # 后台运行命令nohup command > output.log 2>&1 & # 重定向输出nice - 设置进程优先级
nice -n 10 command # 以优先级10运行命令renice - 修改进程优先级
renice -n 5 -p PID # 修改进程优先级为5系统信息
uname - 系统信息
uname -a # 显示所有系统信息uname -r # 显示内核版本uname -m # 显示硬件架构hostname - 主机名
hostname # 显示主机名hostname newname # 设置主机名uptime - 系统运行时间
uptime # 显示系统运行时间和负载date - 日期时间
date # 显示当前日期时间date +%Y-%m-%d # 格式化显示日期date +%H:%M:%S # 显示时间date -s "2025-01-01 12:00:00" # 设置日期时间cal - 日历
cal # 显示当月日历cal 2025 # 显示2025年日历cal 12 2025 # 显示2025年12月日历whoami - 当前用户
whoami # 显示当前登录用户名who - 在线用户
who # 显示在线用户who -b # 显示系统启动时间w - 详细用户信息
w # 显示在线用户详细信息id - 用户ID信息
id # 显示当前用户ID信息id username # 显示指定用户ID信息磁盘管理
df - 磁盘空间
df # 显示磁盘空间使用情况df -h # 人性化显示df -T # 显示文件系统类型df -i # 显示inode使用情况du - 目录空间
du file # 显示文件/目录大小du -h # 人性化显示du -s # 只显示总大小du -sh * # 显示当前目录下各文件/目录大小du -h --max-depth=1 # 显示一级子目录大小mount - 挂载文件系统
mount # 显示已挂载文件系统mount /dev/sdb1 /mnt # 挂载分区mount -t type device dir # 指定类型挂载mount -o loop iso.iso /mnt # 挂载ISO文件umount - 卸载文件系统
umount /mnt # 卸载目录umount /dev/sdb1 # 卸载设备fdisk - 磁盘分区
fdisk -l # 列出所有分区fdisk /dev/sdb # 对指定磁盘分区lsblk - 列出块设备
lsblk # 显示块设备信息lsblk -f # 显示文件系统信息网络命令
ifconfig - 网络接口配置(旧)
ifconfig # 显示网络接口信息ifconfig eth0 # 显示指定接口ifconfig eth0 up # 启用接口ifconfig eth0 down # 禁用接口ip - 网络配置(新)
ip addr # 显示IP地址ip link # 显示网络接口ip route # 显示路由表ip addr add IP/MASK dev eth0 # 添加IP地址ping - 测试连通性
ping host # 测试主机连通性ping -c 4 host # 发送4个包ping -i 2 host # 间隔2秒发送netstat - 网络统计
netstat -a # 显示所有连接netstat -t # 显示TCP连接netstat -u # 显示UDP连接netstat -l # 显示监听端口netstat -p # 显示进程信息netstat -n # 以数字形式显示netstat -tulnp # 常用组合ss - Socket统计(netstat替代)
ss -a # 显示所有socketss -t # 显示TCP socketss -l # 显示监听socketss -p # 显示进程信息ss -tulnp # 常用组合curl - URL传输工具
curl URL # 获取URL内容curl -O URL # 下载文件curl -o file URL # 下载并重命名curl -I URL # 只显示响应头curl -L URL # 跟随重定向curl -X POST URL # 发送POST请求curl -H "Header" URL # 添加请求头curl -d "data" URL # 发送数据wget - 下载工具
wget URL # 下载文件wget -O file URL # 下载并重命名wget -c URL # 断点续传wget -b URL # 后台下载wget -r URL # 递归下载wget --limit-rate=200k URL # 限速下载scp - 远程复制
scp file user@host:/path # 上传文件scp user@host:/path/file . # 下载文件scp -r dir user@host:/path # 上传目录scp -P port file user@host:/path # 指定端口rsync - 远程同步
rsync -av source dest # 同步目录rsync -avz source user@host:dest # 远程同步rsync -av --delete source dest # 删除目标多余文件rsync -av --exclude='*.log' source dest # 排除文件ssh - 远程登录
ssh user@host # 远程登录ssh -p port user@host # 指定端口ssh user@host command # 远程执行命令ssh-keygen # 生成SSH密钥ssh-copy-id user@host # 复制公钥到远程主机telnet - 远程登录/测试端口
telnet host port # 测试端口连通性nslookup - DNS查询
nslookup domain # 查询域名DNS记录dig - DNS查询(增强版)
dig domain # 查询域名dig @8.8.8.8 domain # 指定DNS服务器dig domain MX # 查询MX记录host - DNS查询
host domain # 查询域名IPtraceroute - 路由跟踪
traceroute host # 跟踪到主机的路由nc - 网络工具
nc -l port # 监听端口nc host port # 连接端口nc -zv host port # 扫描端口用户管理
useradd - 添加用户
useradd username # 创建用户useradd -m username # 创建用户并创建家目录useradd -d /home/dir username # 指定家目录useradd -s /bin/bash username # 指定shelluseradd -g group username # 指定主组userdel - 删除用户
userdel username # 删除用户userdel -r username # 删除用户及家目录usermod - 修改用户
usermod -l newname oldname # 修改用户名usermod -d /new/home username # 修改家目录usermod -s /bin/zsh username # 修改shellusermod -aG group username # 添加到附加组passwd - 修改密码
passwd # 修改当前用户密码passwd username # 修改指定用户密码passwd -l username # 锁定用户passwd -u username # 解锁用户groupadd - 添加组
groupadd groupname # 创建组groupadd -g GID groupname # 指定GID创建组groupdel - 删除组
groupdel groupname # 删除组groups - 显示用户组
groups # 显示当前用户所属组groups username # 显示指定用户所属组su - 切换用户
su # 切换到rootsu username # 切换到指定用户su - username # 切换用户并加载环境sudo - 以超级用户执行命令
sudo command # 以root权限执行命令sudo -u user command # 以指定用户权限执行sudo -i # 切换到root shellsudo -l # 列出当前用户可用的sudo命令包管理
apt(Debian/Ubuntu)
apt update # 更新软件包列表apt upgrade # 升级所有软件包apt install package # 安装软件包apt remove package # 卸载软件包apt purge package # 完全卸载(含配置)apt search package # 搜索软件包apt show package # 显示软件包信息apt autoremove # 删除不需要的依赖apt clean # 清理下载的包文件yum(CentOS/RHEL)
yum update # 更新软件包yum install package # 安装软件包yum remove package # 卸载软件包yum search package # 搜索软件包yum info package # 显示软件包信息yum list # 列出所有软件包yum clean all # 清理缓存dnf(Fedora/CentOS 8+)
dnf update # 更新软件包dnf install package # 安装软件包dnf remove package # 卸载软件包dnf search package # 搜索软件包pacman(Arch Linux)
pacman -S package # 安装软件包pacman -R package # 卸载软件包pacman -Syu # 更新系统pacman -Ss package # 搜索软件包pacman -Qi package # 查看软件包信息系统服务管理
systemctl - 服务管理
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 - 服务管理(旧)
service service_name start # 启动服务service service_name stop # 停止服务service service_name restart # 重启服务service service_name status # 查看状态环境变量
export - 设置环境变量
export VAR=value # 设置环境变量export PATH=$PATH:/new/path # 添加到PATHecho - 显示变量
echo $VAR # 显示变量值echo $PATH # 显示PATHenv - 显示所有环境变量
env # 显示所有环境变量env VAR=value command # 临时设置变量运行命令set - 显示所有变量
set # 显示所有变量(含shell变量)unset - 删除变量
unset VAR # 删除变量其他常用命令
clear - 清屏
clear # 清除终端屏幕history - 命令历史
history # 显示命令历史history 10 # 显示最近10条命令!100 # 执行第100条命令!! # 执行上一条命令!string # 执行最近以string开头的命令alias - 别名
alias # 显示所有别名alias ll='ls -l' # 创建别名unalias ll # 删除别名ln - 创建链接
ln file link # 创建硬链接ln -s file link # 创建软链接(符号链接)tree - 树状显示目录
tree # 树状显示当前目录tree -L 2 # 只显示2层tree -a # 显示隐藏文件xargs - 参数传递
find . -name "*.txt" | xargs rm # 查找并删除ls | xargs -n 1 echo # 每次传递1个参数tee - 双向输出
command | tee file # 同时输出到屏幕和文件command | tee -a file # 追加到文件watch - 定期执行命令
watch command # 每2秒执行一次命令watch -n 5 command # 每5秒执行一次watch -d command # 高亮显示变化cron - 定时任务
crontab -e # 编辑定时任务crontab -l # 列出定时任务crontab -r # 删除所有定时任务# 格式: 分 时 日 月 周 命令# 示例: 0 2 * * * /path/to/script.sh # 每天凌晨2点执行at - 一次性定时任务
at 10:00 # 在10点执行at now + 1 hour # 1小时后执行atq # 查看待执行任务atrm job_id # 删除任务shutdown - 关机/重启
shutdown -h now # 立即关机shutdown -h 10 # 10分钟后关机shutdown -r now # 立即重启shutdown -c # 取消关机reboot - 重启
reboot # 重启系统halt - 关机
halt # 关机poweroff - 关机
poweroff # 关机free - 内存使用
free # 显示内存使用情况free -h # 人性化显示free -m # 以MB为单位显示vmstat - 虚拟内存统计
vmstat # 显示虚拟内存统计vmstat 2 # 每2秒更新一次iostat - IO统计
iostat # 显示IO统计iostat -x # 详细信息lsof - 列出打开的文件
lsof # 列出所有打开的文件lsof /path/file # 查看打开指定文件的进程lsof -p PID # 查看进程打开的文件lsof -i :port # 查看端口占用lsof -u username # 查看用户打开的文件dmesg - 内核消息
dmesg # 显示内核环缓冲区消息dmesg | grep -i error # 查看错误信息dmesg -c # 清空内核缓冲区journalctl - 日志查看
journalctl # 查看所有日志journalctl -u service # 查看指定服务日志journalctl -f # 实时查看日志journalctl --since today # 查看今天的日志journalctl -p err # 只显示错误级别日志tar命令组合技巧
# 打包并压缩到标准输出,再通过ssh传输tar czf - /path | ssh user@host 'tar xzf - -C /dest'
# 解压时只提取特定文件tar xzf archive.tar.gz file1 file2
# 追加文件到已存在的tar包(不能用于压缩包)tar -rf archive.tar newfile重定向和管道
command > file # 标准输出重定向到文件(覆盖)command >> file # 标准输出追加到文件command 2> file # 标准错误重定向到文件command &> file # 标准输出和错误都重定向command 2>&1 # 错误重定向到标准输出command < file # 从文件读取输入command1 | command2 # 管道:命令1的输出作为命令2的输入command1 && command2 # 命令1成功后执行命令2command1 || command2 # 命令1失败后执行命令2command & # 后台运行命令