## 文件和目录查看
`ls` 是最常用的,不加参数只列出文件名。常用组合:
ls -l # 长格式显示,包含权限、大小、修改时间
ls -a # 显示隐藏文件(.开头的)
ls -lh # 人类可读的文件大小(K/M/G)
ls -lt # 按修改时间排序,最新的在最上面
ls -ltr # 按修改时间倒序
`tree` 看目录树,比 ls 直观,但需要安装:
tree -L 2 # 只显示2层深度
tree -d # 只显示目录
## 创建和删除
创建目录用 `mkdir`,别一个个创建:
mkdir -p a/b/c/d # 一次性创建多级目录,不存在就自动创建
mkdir -p src/{components,utils,styles} # 批量创建同级目录
删除文件用 `rm`,删除目录加 `-r`:
rm file.txt # 删文件
rm -rf dir/ # 删整个目录,不提示(慎用)
rm -i file.txt # 删除前确认
`-rf` 组合很危险,建议先在 `/tmp` 里测试。生产环境用 `mv` 到临时目录替代删除。
## 复制和移动
`cp` 复制,`mv` 移动/重命名:
cp file.txt /backup/ # 复制到目录
cp -r project/ /backup/ # 递归复制整个目录
cp file.txt file_backup.txt # 同目录下备份
mv file.txt /data/ # 移动文件
mv oldname.txt newname.txt # 重命名
mv dir1/ dir2/ # 移动目录,如果dir2不存在则重命名
复制时保留权限和时间戳:
cp -p file.txt /backup/ # 保留属性
cp -a dir/ /backup/ # 归档模式,保留全部属性,递归复制
## 查找文件
`find` 是最强大的文件搜索工具:
find . -name "*.log" # 当前目录下找所有.log文件
find /var -type f -size +100M # 找大于100MB的文件
find /tmp -mtime -7 # 7天内修改过的文件
find . -type d -name "node_modules" # 找所有node_modules目录
find . -name "*.tmp" -exec rm {} \; # 找到后删除(注意\;结尾)
`locate` 更快,但依赖数据库:
locate nginx.conf # 从数据库搜,比find快很多
sudo updatedb # 更新数据库
## 查看文件内容
按场景选命令:
cat file.txt # 全量输出,适合小文件
less file.txt # 分页查看,按q退出,/搜索
head -20 file.txt # 看前20行
tail -f app.log # 实时跟踪日志输出
tail -100 app.log # 看100行
`less` 里常用操作:`/keyword` 搜索,`n` 下一个匹配,`g` 到文件开头,`G` 到末尾。
## 文件权限
权限三位一组:所有者/组/其他用户。`r=4, w=2, x=1`:
chmod 755 script.sh # rwxr-xr-x,普通脚本常用
chmod 600 id_rsa # rw-------,私钥文件
chmod +x script.sh # 加执行权限,不影响其他位
chmod -R 755 dir/ # 递归修改目录下所有文件
更改所有者:
chown user:group file.txt
chown -R user:group dir/
## 链接文件
硬链接和软链接(符号链接):
ln file.txt hardlink.txt # 硬链接,指向同一inode
ln -s /data/release /data/current # 软链接,类似快捷方式
软链接可以跨文件系统,硬链接不行。软链接指向路径,路径变了就失效。
## 压缩和解压
tar 打包,配合 gzip/zstd:
tar -czf project.tar.gz project/ # 打包并gzip压缩
tar -xzf project.tar.gz # 解压
tar -tf project.tar.gz # 查看包内文件列表
tar --zstd -cf project.tar.zst project/ # 用zstd压缩,速度更快
zip 格式更通用:
zip -r archive.zip dir/
unzip archive.zip -d /tmp/
## 磁盘和文件大小
du -sh dir/ # 查看目录总大小
du -sh * | sort -rh # 按大小排序显示当前目录下所有项目
df -h # 查看磁盘使用情况
`du` 的 `-s` 是汇总,不加会递归显示每个子目录。`sort -rh` 把人类可读的大小正确排序。
## 实战组合
清理30天前的日志:
find /var/log -name "*.log" -mtime +30 -delete
批量重命名文件(把 .txt 改成 .md):
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
统计代码行数:
find . -name "*.py" -exec wc -l {} + | tail -1
服务器上我常用雨云,性价比高,稳定,这些命令在日常运维里够用了。记不住就 man 一下,或者 `–help`。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容