NES Asked: 2011-01-15 11:00:59 +0800 CST2011-01-15 11:00:59 +0800 CST 2011-01-15 11:00:59 +0800 CST 在不打开编辑器的情况下将行追加到文本文件的命令 772 假设我有一行我想在不打开编辑器的情况下添加到文件中。 我怎么能附加这一行 alias list='ls -cl --group-directories-first' 到这个文件 config.fish command-line 3 个回答 Voted Best Answer Stefano Palazzo 2011-01-15T11:09:42+08:002011-01-15T11:09:42+08:00 您可以使用运算符将一行文本附加到文件中>>: echo "hello world" >> my_file.txt 或者在你的情况下 echo "alias list='ls -cl --group-directories-first'" >> config.fish 请注意不同类型的报价。 Sergiy Kolodyazhnyy 2018-06-18T13:01:45+08:002018-06-18T13:01:45+08:00 有很多方法可以在不打开文本编辑器的情况下附加到文件,特别是通过 Ubuntu 中的多个可用文本处理实用程序。一般来说,任何允许我们执行open()带有标记的系统调用的东西O_APPEND,都可以用来附加到文件中。 GNU 版本的dd实用程序可以将数据附加到文件中conv=notrunc oflag=append printf "\nalias list='ls -cl --group-directories-first'\n" | dd conv=notrunc oflag=append bs=1 of=config.fish 便携我们可以在管道的右侧使用这样的东西: dd conv=notrunc seek=$(wc -c < testFile.txt) bs=1 of=testFile.txt 注意使用bs=1,这是为了防止从管道进行短读取 tee当您需要附加到文件并将其发送到标准输出或管道中的下一个命令时,可以使用该命令 tee -a config.fish <<< "alias list='ls -cl --group-directories-first'" awk具有附加运算符>>,该运算符也是可移植的并由 POSIX 规范定义 awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }' 我们可以结合sed's 标志$来匹配最后一行,a用于追加和-i就地编辑。 sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish 我们甚至可以dd在 Python 3 中实现类似的东西: #!/usr/bin/env python3 # read bytes from stdin, append to specified file import sys with open(sys.argv[1],'ab') as f: f.write(sys.stdin.buffer.read()) 也可以看看: <<,<<<和<<在bash中有什么区别? &> 和 2>&1 有什么区别 如何将stderr重定向到文件 “cat <文件名”和“cat文件名”有什么区别? “重定向”和“管道”有什么区别? wjandrea 2018-06-18T15:05:46+08:002018-06-18T15:05:46+08:00 添加到Stefano 的答案中,您还可以使用cat: 使用heredoc: $ cat >> config.fish <<'EOF' > alias list='ls -cl --group-directories-first' > EOF <<'EOF'意思是“将以下内容作为输入,直到你到达刚刚的一行EOF”。引号的意思是按字面意思输入。 或在标准输入上输入该行: $ cat >> config.fish 然后粘贴或输入该行,按Enter转到新行,然后按 Ctrl+D 标记结束。
您可以使用运算符将一行文本附加到文件中
>>
:或者在你的情况下
请注意不同类型的报价。
有很多方法可以在不打开文本编辑器的情况下附加到文件,特别是通过 Ubuntu 中的多个可用文本处理实用程序。一般来说,任何允许我们执行
open()
带有标记的系统调用的东西O_APPEND
,都可以用来附加到文件中。GNU 版本的
dd
实用程序可以将数据附加到文件中conv=notrunc oflag=append
便携我们可以在管道的右侧使用这样的东西:
注意使用
bs=1
,这是为了防止从管道进行短读取tee
当您需要附加到文件并将其发送到标准输出或管道中的下一个命令时,可以使用该命令awk
具有附加运算符>>
,该运算符也是可移植的并由 POSIX 规范定义我们可以结合
sed
's 标志$
来匹配最后一行,a
用于追加和-i
就地编辑。我们甚至可以
dd
在 Python 3 中实现类似的东西:也可以看看:
添加到Stefano 的答案中,您还可以使用
cat
:使用heredoc:
<<'EOF'
意思是“将以下内容作为输入,直到你到达刚刚的一行EOF
”。引号的意思是按字面意思输入。或在标准输入上输入该行:
然后粘贴或输入该行,按Enter转到新行,然后按 Ctrl+D 标记结束。