小编Ver*_*der的帖子

读写文件:tee 命令

众所周知,像这样的命令:

cat filename | some_sed_command >filename
Run Code Online (Sandbox Code Playgroud)

擦除文件文件名,因为在命令之前执行的输出重定向会导致文件名被截断。

可以通过以下方式解决问题:

cat file | some_sed_command | tee file >/dev/null
Run Code Online (Sandbox Code Playgroud)

但我不确定这在任何情况下都有效:如果文件(和 sed 命令的结果)非常大,会发生什么?操作系统如何避免覆盖一些尚未读取的内容?我看到还有一个海绵命令在任何情况下都应该起作用:它比 tee 更“安全”吗?

command-line bash tee

11
推荐指数
2
解决办法
4630
查看次数

ctime 是如何变化的?

我试图准确了解文件的 ctime 时间戳何时更改。在许多地方(例如,在此处接受的答案中)建议文件属性的任何更改也将更改 ctime。然而,这似乎不是真的,至少在我的 Ubuntu 12.04 上(是的,我知道,有点旧......):

cat file.txt > /dev/null
Run Code Online (Sandbox Code Playgroud)

更改 atime,因此它更改文件属性(在文件 inode 中),但不更改 ctime。

其他来源(例如,herehere)表明只有对文件属性的一些操作才会真正改变 ctime,但没有提供精确的列表。

我在哪里可以找到有关哪些操作更改 ctime 的精确参考?

filesystem

8
推荐指数
1
解决办法
1568
查看次数

扩展和基本正则表达式中的前导星号是什么意思?

*RE 开头的语义是什么?有记录(man 7 regex)它只匹配基本 RE *(即,它变成普通字符),但是扩展 RE 会发生什么?通过示例,它看起来与 '.*' 具有相同的语义,但我找不到任何来源。

prompt> echo "hello" | grep -E  '*'
hello
prompt> echo "hello" | grep  '*'
prompt> 
Run Code Online (Sandbox Code Playgroud)

regex grep

4
推荐指数
2
解决办法
829
查看次数

标签 统计

bash ×1

command-line ×1

filesystem ×1

grep ×1

regex ×1

tee ×1