无需打开编辑器即可将行附加到文本文件的命令

NES*_*NES 177 command-line bash text-editor scripts redirect

假设我想在不打开编辑器的情况下将一行添加到文件中。

我怎么能附加这一行

alias list='ls -cl --group-directories-first'
Run Code Online (Sandbox Code Playgroud)

到这个文件

config.fish
Run Code Online (Sandbox Code Playgroud)

Ste*_*zzo 278

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

echo "hello world" >> my_file.txt
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下

echo "alias list='ls -cl --group-directories-first'" >> config.fish
Run Code Online (Sandbox Code Playgroud)

请注意不同类型的报价

  • 我自己使用 echo,但要小心,如果你只指定一个 `>`,那么文件将被截断,而不是追加。要获得更安全的命令,您可以使用 sed:`sed -i '$a hello world' filename` (32认同)
  • 解释:`-i` 将更新文件(否则它只会将结果打印到标准输出),`$` 是匹配文件末尾的正则表达式,并且 `a` 将以下文本附加到文件名。 (15认同)
  • `echo "hello world" >> my_file.txt` 不会用 `HW` 创建新的最后一行,而是将其添加到最后一行的字符串中。 (2认同)

wja*_*rea 8

添加到Stefano 的答案中,您还可以使用cat

  • 使用定界符:

    $ cat >> config.fish <<'EOF'
    > alias list='ls -cl --group-directories-first'
    > EOF
    
    Run Code Online (Sandbox Code Playgroud)

    <<'EOF'意思是“将以下内容作为输入,直到到达恰好是EOF”的行。引号的意思是按字面意思接受输入。

  • 或者在标准输入上输入以下行:

    $ cat >> config.fish
    
    Run Code Online (Sandbox Code Playgroud)

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


Ser*_*nyy 6

有很多方法可以在不打开文本编辑器的情况下附加到文件,特别是通过 Ubuntu 中的多个可用文本处理实用程序。一般来说,任何允许我们在添加标志的情况下执行open()系统调用的东西O_APPEND都可以用来附加到文件中。

printf "\nalias list='ls -cl --group-directories-first'\n" | dd conv=notrunc oflag=append bs=1 of=config.fish
Run Code Online (Sandbox Code Playgroud)

也可以看看:


归档时间:

查看次数:

457508 次

最近记录:

5 年,8 月 前