linux常用命令:cat 和 touch 有什么区别

记得有一次我在Linux下处理一些文件操作,需要查看和更改文件时间。
当时我正在做一个小项目,并且使用的是一个很大的文本文件,所以我必须仔细阅读内容。
于是我用 cat 命令打开了文件,看到一行行文字在屏幕上快速滚动,感觉就像在看电影一样。

等等,我突然想到我还需要新建一个文件来记录项目的进度。
于是我打开终端,打算使用touch命令来创建文件。
但当我输入touch文件名时,我发现了一个奇怪的现象:文件的创建时间居然显示在未来的某个特定时间。

这很奇怪,我想。
难道时光机器已经在我的电脑里植入了触角?我怀疑系统时间设置不正确,或者文件时间被错误更改。
为了解决这个问题,我尝试了 cat filename 来查看文件中是否有任何特殊设置,但乍一看文件中没有任何内容,它是一个空文件。

所以我回到touch命令并决定用它来调整文件的时间。
我尝试使用 touch 命令将文件时间更改为当前时间,然后重新编译项目,结果确实成功了。
原来编译错误是因为忘记调整文件时间。

这件事让我明白了Linux下的cat和touch命令虽然名字相似,但功能却完全不同。
Cat是查看文件的强大工具,touch是管理文件时间的得力助手。
然而,这两个命令的组合可以使文件操作更加高效。
嗯,毕竟,如果你用好工具,生活和工作都会轻松很多。

Linux touch命令如何使用

需要明确的是,触摸意味着更改时间戳。
最常用于更改文件访问时间 (Atime) 和修改时间 (Mtime)。
如果文件消失,直接触摸文件名,例如demo.txt。
如果该文件不存在,将为您创建一个空文件。
如果文件存在,时间戳将被更新。

更改时间戳时,有很多参数。

例如,如果您只想更改访问时间,只需使用 -a 参数即可。
例如 touch -a demo.txt。
你看,这只是改变了访问时间,而不是修改时间。
默认情况下,系统更改atime和mtime。
您可以添加要更改的参数。

想要更改修改时间?使用 -m 参数。
例如 touch -m demo.txt。
这仅改变修改时间,但访问时间保持不变。

有时你想将时间更改为自定义,例如更改为2 02 3 年1 月1 日的1 2 点,只需使用-d参数即可。
例如,touch -d "2 02 3 -01 -01 1 2 :00" demo.txt。
或者使用-t参数,格式应为[[CC]YY]MMDDhhmm[.ss],如touch -t 2 02 3 01 01 1 2 00 demo.txt。
两者的效果是一样的。

参数的组合也蛮有趣的。
例如,-at 仅更改时间,-mt 仅更改 mtime。
但使用时请注意这些参数必须与-t或-d一起使用。

还有一个特别有用的场景,就是指其他文件的时序。
例如,如果您有两个文件,reference.txt 和 target.txt,并且您希望将 target.txt 的时间更改为与 reference.txt 相同,请使用 -r 参数。
例如-r reference.txt 触摸目标.txt。

处理软链接时要小心。
默认情况下,触摸会更改源文件的时间。
如果你想自己更改软链接时间,则需要添加-h参数。
例如 touch -h symlink.txt。

还有一个非常有用的-c参数,它可以防止创建文件。
例如,触摸-cnon_existent.txt。
执行该命令时,如果non_existent.txt不存在,则不会执行任何操作。
如果存在,则时间戳将被更新。

如果您想查看帮助,请使用 touch --help。
如果您想查看版本,请使用 touch --version。

但要小心,更改时间戳有时会导致问题。
例如,备份工具或日志分析可能会受到影响。
所以要小心。
另外,系统可能不支持某些参数,例如-h参数。
这取决于系统是否可以使用它。
在确定准确的时间时,格式一定要写正确。
不要输入错误,否则系统无法解析。

说实话,这些参数我用得太多了,当时不太理解。
尝试了几次之后,我就习惯了。