在不打开编辑器的情况下将行追加到文本文件的命令


147

假设我有一行要添加到文件中而不打开编辑器的行。

我如何追加这行

alias list='ls -cl --group-directories-first'

到这个文件

config.fish

Answers:


237

您可以使用运算符将一行文本附加到文件中>>

echo "hello world" >> my_file.txt

还是你的情况

echo "alias list='ls -cl --group-directories-first'" >> config.fish

请注意不同类型的报价


25
我自己使用echo,但是要小心,如果只指定一个,>则文件将被截断,而不是追加。为了获得更安全的命令,您可以使用sed:sed -i '$a hello world' filename
反转

11
说明:-i将更新文件(否则它将仅将结果打印到stdout),$正则表达式将与文件末尾匹配,a并将以下文本附加到文件名后面。
反转

echo "hello world" >> my_file.txt不会使用创建新的最后一行HW,而是将其添加到最后一行的字符串中。
Timo

什么是HW@timo?
7wp

也许是“ Hello World” @ 7wp :)就是在echo其中添加了换行符(使其成为一行,而不是一堆字符)。您可以在结束时关闭换行符-n
Stefano Palazzo

3

有很多无需打开文本编辑器即可追加到文件的方法,特别是通过Ubuntu中的多个可用文本处理实用程序。

  • tee -a config.fish <<< "alias list='ls -cl --group-directories-first'"
  • awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }'
  • sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish

1

Stefano的答案外,您还可以使用cat

  • 使用heredoc:

    $ cat >> config.fish <<'EOF'
    > alias list='ls -cl --group-directories-first'
    > EOF

    <<'EOF'表示“将以下内容作为输入,直到到达一行为止EOF”。引号意味着直接输入。

  • 或在stdin上输入以下行:

    $ cat >> config.fish

    然后粘贴或键入该行,按Enter转到新行,然后按Ctrl + D标记结束。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.