假设该文件ft
有 25 行文本。解释一下命令:
tail -15 ft | tr "a" "A" > ft
ft
并告诉我命令执行后文件有多少行。
我知道这tail -15 ft
将从文件中获取最后 15 行ft
,并将tr 'a' 'A'
任何内容更改a
为A
.
但我不明白为什么> tr
要删除文件中的所有内容。
答案1
发生的情况是,shell 首先设置重定向(在本例中为> ft
),然后截断ft
并打开它以进行写入;然后它设置管道的其余部分。tail -15 ft
获取一个空文件并给出一个空结果,它tr
处理不替换任何内容。ft
结果是一个空文件。
答案2
答案3
您没有使用正确的 bash 表示法。
在 bash 中,您必须使用 '>file' 来覆盖文件并使用 '>>file' 来追加到该文件。相反,请使用“>>ft”。