从命令行向文件添加文本的最快方法是什么?

Bri*_*ant 35 linux command-line

有时,我想在终端时写入文件。我希望这些笔记都在同一个文件中,一个接一个地列出。我还想要一个日期/时间标签。

是否可以在不必每次打开文件的情况下执行此操作?我可以将它输入终端并每次使用命令或脚本将其附加到文件中吗?

我正在使用 GNU BASH。

Kyl*_*nes 29

为自己编写一个名为“n”的 shell 脚本。把这个放进去:

#!/bin/sh
notefile=/home/me/notefile
date >> $notefile
emacs $notefile -f end-of-buffer
Run Code Online (Sandbox Code Playgroud)

我推荐这个而不是cat >> notefile因为:

  1. 有一天你会很匆忙,以至于你会摸索 >> 并键入 > 而不是吹走你的文件。
  2. Emacs在我的 Mac Mini 上以百分之五秒的速度启动。在我身边的基于赛扬已有十年历史的系统上启动需要十分之一秒。如果你等不及开始打字,那你就已经是一台机器了,不需要记笔记了。:)

如果您坚持不使用文本编辑器,请使用 shell 函数:

n () { date >> /home/me/notefile; cat >> /home/me/notefile; }
Run Code Online (Sandbox Code Playgroud)

这应该适用于所有声称与 Bourne shell 兼容的 shell。

  • +1 很好的防御性编码 * 和 * 针对不可避免的错字的基本原理。 (6认同)
  • Kyle,你显然没有 90MB 的 `.emacs.d`。哎呀,我需要清理它。 (2认同)

小智 26

此外,要从命令行将多行写入文件,请执行以下操作:

cat >> sometextfile.txt << EOF
text
more text
and another line
EOF
Run Code Online (Sandbox Code Playgroud)

  • 或者 `cat &gt; sometextfile.txt &lt;&lt; EOF` 覆盖现有文件。 (2认同)

小智 18

只需使用echo

echo $(date) Hi. >> notes.txt
Run Code Online (Sandbox Code Playgroud)

您可以使用 >> 附加到文件,或使用 > 覆盖它。