SCENE / 001
全部文章NOTE / 学习笔记

Linux命令行进阶:时间、查找与压缩

记录`date`、重定向、`find`、`grep`、`zip`、`unzip`和`tar`等命令的学习过程

#Linux#学习笔记#命令行#文件管理#服务器
本文目录
  1. 命令选项
  2. 用date查看和处理时间
  3. 重定向让输入输出换个方向
  4. 用find按条件查找文件
  5. 用grep搜索文本
  6. zip和unzip处理zip文件
  7. tar负责打包和归档
  8. 继续熟悉几个常用命令
  9. 常用命令扩展
  10. 安装和登录命令
  11. 文件处理命令
  12. 系统管理相关命令
  13. 网络操作命令
  14. 系统安全相关命令
  15. 其他命令
  16. 试着练习
  17. 小结
  18. 来源
阅读记录0%
0%

这次学习Linux命令行,重点放在时间管理、输入输出、文件查找和压缩归档这些高频场景上,单条命令看起来都很短,组合起来就能完成日志排查、文件整理和备份等工作

命令选项

命令后面以-开头的内容通常是选项,用来改变命令的行为,例如ls -l中的-l表示使用详细列表格式

短选项可以合写,ls -la等同于ls -l -a,其中-l表示显示详细信息,-a表示连隐藏文件一起显示,选项后面如果需要参数,参数通常紧跟在选项后面或单独写出,例如unzip project.zip -d ./restored中的-d用于指定解压目录

>>><|属于Shell的数据流符号,和命令选项的作用不同,遇到不熟悉的选项,可以先运行man 命令名查看手册,之前介绍过man命令

date查看和处理时间

date可以显示当前时间,也可以按照指定格式输出

date
date '+%Y-%m-%d %H:%M:%S'
date '+%Y-%m-%d'

常见格式标记如下:

标记 含义
%H 小时,范围是00到23
%M 分钟
%S
%d 一个月中的第几天
%m 月份
%Y 四位年份
%F 等同于%Y-%m-%d

时间戳也可以在日期和秒数之间转换:

date '+%s'
date -d '@1599642565' '+%Y-%m-%d %H:%M:%S'

这里的两个选项分别负责转换和设置时间:

选项 作用
-d 按给定日期或时间字符串进行转换
-s 设置系统时间,通常需要root权限

date -s能够设置系统时间,但通常需要root权限,服务器上的时间调整还会影响日志、定时任务和证书校验,实际操作前要先确认环境和权限

cal用于查看日历,临时确认日期或安排任务时很方便:

cal
cal 8 2026

重定向让输入输出换个方向

命令默认从标准输入读取数据,并把结果写到标准输出,Shell的重定向符号可以改变数据流向

echo '第一次写入' > note.txt
echo '继续追加' >> note.txt
cat < note.txt

>会覆盖目标文件的原有内容,>>会在文件末尾追加内容,<会把文件交给命令作为输入,需要保留原内容时,应优先使用>>,执行覆盖操作前也要确认目标路径

例如,把目录列表保存下来,再交给less分页查看:

ls -la > directory.txt
less < directory.txt

ls -l会以详细列表显示文件权限、所有者、大小和修改时间,-a会把隐藏文件一起列出,所以ls -la适合在排查目录内容时使用

find按条件查找文件

find从指定路径开始遍历目录,并根据条件筛选文件,最常用的条件是文件名和类型

find . -type f -name '*.log'
find /var/log -type f -name '*.log'
find . -type d -name 'cache'

还可以结合修改时间和文件大小缩小范围:

find . -type f -mtime -7
find . -type f -size +100M

find中常见的筛选选项如下:

选项 作用
-type f 只匹配普通文件
-type d 只匹配目录
-name 按名称匹配,支持通配符
-mtime -7 匹配最近7天内被修改过的内容
-size +100M 匹配大于100MB的文件
-exec 对找到的每个结果执行后面的命令

如果要直接处理查找到的文件,可以使用-exec

find . -type f -name '*.log' -exec grep -n 'error' {} +

-exec后面的{}会被替换成找到的文件路径,末尾的+表示尽量把多个路径合并后交给一次命令处理,减少重复启动grep的次数

这条命令把查找和搜索连成了一步,适合快速定位一批日志中的关键词

grep搜索文本

grep负责在文件内容中查找字符串,常用选项可以让输出更适合排查问题

grep -n 'error' app.log
grep -i 'warning' app.log
grep -v 'debug' app.log
grep -Rni --include='*.log' 'timeout' ./logs
选项 作用
-n 同时显示匹配行的行号
-i 忽略大小写
-v 反向筛选,不显示包含关键词的行
-R 递归搜索目录
--include='*.log' 递归搜索时只处理匹配该模式的文件

管道可以把多个命令串起来,例如先列出进程,再筛选目标服务:

ps aux | grep nginx

这里的ps aux使用了不带短横线的BSD风格选项:a表示显示其他用户的进程,u显示用户和资源占用信息,x包含没有关联终端的进程

实际排查时,可以先产生完整结果,再逐步缩小范围,每一步都能单独运行和验证,出了问题也更容易定位

zipunzip处理zip文件

zip适合快速创建zip压缩包,unzip负责解压

zip notes.zip notes.md
zip -r project.zip project/
unzip project.zip
unzip project.zip -d ./restored
选项 作用
-r 递归处理目录及其子目录
-d 指定解压目标目录

压缩目录时需要使用-r,解压时使用-d可以把文件放到指定位置,解压前最好确认目标目录,避免同名文件被覆盖

tar负责打包和归档

Linux环境中更常见的是tar系列命令,它可以把目录打包,也可以结合gzip或bzip2进行压缩

选项 作用
-c 创建归档
-x 解开归档
-t 查看归档内容
-z 使用gzip压缩或解压
-j 使用bzip2压缩或解压
-v 显示处理过程
-f 指定归档文件名
-C 切换到指定目录后操作

常用操作可以这样写:

tar -czvf project.tar.gz project/
tar -tzvf project.tar.gz
tar -xzvf project.tar.gz -C ./restored

上面的选项可以合并书写,读法如下:

写法 拆解 作用
-czvf -c-z-v-f 创建一个gzip压缩的归档,并显示过程与文件名
-tzvf -t-z-v-f 查看gzip归档中的文件列表
-xzvf -x-z-v-f 解开gzip归档并显示过程
-C ./restored -C加目标目录 在指定目录中执行后续解压操作

只想取出归档中的某个文件时,可以把路径写在命令末尾:

tar -xzvf project.tar.gz project/config.yaml

打包前需要确认路径层级,尤其是从根目录或系统目录创建归档时,避免把不需要的内容一起打进去

继续熟悉几个常用命令

bc可以在终端中进行计算:

echo 'scale=2; 10 / 3' | bc

uname -r用于查看当前内核版本,uname -a会输出更完整的系统信息:

uname -r
uname -a
选项 作用
-r 只显示内核版本
-a 显示内核、主机名、系统版本和硬件架构等完整信息

几个值得记住的快捷键:

  • Tab补全命令和路径
  • Ctrl-C终止当前运行的程序
  • Ctrl-D表示输入结束,也常用于退出Shell
  • Ctrl-R搜索历史命令

shutdown用于关机或重启,常见形式如下,远程服务器执行前要再次确认主机和时间,避免中断正在运行的服务

shutdown -h now
shutdown -r now
shutdown -t 60

shutdown -h now会在停止系统服务后立即关机,shutdown -r now会重启系统,shutdown -t 60表示延迟60秒执行操作

常用命令扩展

这组命令覆盖登录、文件处理、系统管理、网络操作和权限控制等场景,使用前可以先通过man确认当前系统支持的选项

安装和登录命令

loginshutdownhaltrebootinstallmountumountchshexitlast

文件处理命令

filemkdirgrepddfindmvlsdiffcatln

系统管理相关命令

dftopfreequotaatlpaddusergroupaddkillcrontab

网络操作命令

ifconfigippingnetstattelnetftprouterloginrcpfingermailnslookup

系统安全相关命令

passwdsuumaskchgrpchmodchownchattrsudopswho

其他命令

tarunzipgunzipunarjmtoolsmanunendcodeuudecode

试着练习

下面是一个完整的例子,尝试完成:

这里的mkdir -p中,-p会在上级目录不存在时一并创建目录,目标目录已经存在时也不会因为重复创建而报错

mkdir -p demo/logs
printf 'info start\nerror timeout\n' > demo/logs/app.log
printf 'warning retry\n' >> demo/logs/app.log
find demo -type f -name '*.log' -exec grep -n 'error' {} +
tar -czvf demo-logs.tar.gz demo/logs
tar -tzvf demo-logs.tar.gz

小结

datecal处理时间,重定向控制数据流向,findgrep负责定位文件与内容,zipunziptar完成压缩与归档,bcuname和快捷键则是用于日常使用场景

命令行真正有用的地方,在于这些小工具可以被脚本和管道连接起来,把路径、权限、输入输出和覆盖风险都确认清楚,再执行命令,效率和可控性会一起提高

来源

本文为个人学习笔记,根据lvy-的《Linux命令行:从时间管理到文件查找压缩的指令详解》提炼并重新组织,保留原文链接供进一步阅读

READING / FOCUSOFF

留言

评论区暂未开放;可先通过 RSS 或「关于」页联系。

站内搜索

输入关键词开始搜索