常用命令
→ 返回 Linux
文件与目录
# 查看
ls -lh # 详细列表,人类可读大小
ls -la # 包含隐藏文件
tree -L 2 # 树形结构,深度 2
# 导航
pwd # 当前路径
cd - # 切换到上一个目录
# 创建 / 删除
mkdir -p a/b/c # 递归创建目录
rm -rf dir # 强制递归删除
cp -r src/ dst/ # 递归复制
mv old new # 移动 / 重命名
# 查找
find /var/log -name "*.log" -mtime -7 # 7 天内修改的 .log
find . -type f -size +100M # 大于 100M 的文件
find . -name "*.java" -exec grep -l "TODO" {} \;文件查看
cat file.txt # 全部输出
less file.txt # 分页查看(q 退出)
head -20 file.txt # 前 20 行
tail -50 file.txt # 后 50 行
tail -f /var/log/app.log # 实时追踪日志
# 统计
wc -l file.txt # 行数
wc -c file.txt # 字节数文本处理
# grep 搜索
grep -r "keyword" /etc/ # 递归搜索
grep -n "ERROR" app.log # 显示行号
grep -v "DEBUG" app.log # 反向过滤
grep -E "ERROR|WARN" app.log # 正则匹配
# awk
awk '{print $1, $3}' file.txt # 打印第 1、3 列
awk -F: '{print $1}' /etc/passwd # 指定分隔符
awk 'NR>=10 && NR<=20' file.txt # 第 10-20 行
awk '{sum+=$1} END{print sum}' nums.txt # 求和
# sed
sed 's/foo/bar/g' file.txt # 替换(输出到终端)
sed -i 's/foo/bar/g' file.txt # 原地替换
sed -n '5,10p' file.txt # 打印第 5-10 行
sed '/^#/d' config.conf # 删除注释行
# sort / uniq
sort -k2 -n file.txt # 按第 2 列数字排序
sort -rn nums.txt # 逆序数字排序
sort file.txt | uniq -c # 统计重复行次数压缩与归档
# tar
tar -czf archive.tar.gz dir/ # 压缩
tar -xzf archive.tar.gz # 解压到当前目录
tar -xzf archive.tar.gz -C /opt/ # 解压到指定目录
tar -tzf archive.tar.gz # 查看内容
# zip / unzip
zip -r archive.zip dir/
unzip archive.zip -d /opt/磁盘与存储
df -h # 磁盘使用(人类可读)
du -sh /var/log # 目录占用大小
du -sh * | sort -rh | head # 当前目录下各子项大小排序
lsblk # 块设备列表
mount | grep "^/dev" # 已挂载设备系统信息
uname -a # 内核版本
hostname # 主机名
uptime # 运行时间与负载
date '+%Y-%m-%d %H:%M:%S' # 格式化时间
timedatectl # 时区信息
env # 环境变量
echo $PATH管道与重定向
command > out.txt # 覆盖写入
command >> out.txt # 追加写入
command 2> err.txt # 错误输出重定向
command &> all.txt # 标准输出 + 错误都重定向
command1 | command2 # 管道
command1 && command2 # 前者成功才执行后者
command1 || command2 # 前者失败才执行后者