【发布时间】:2014-01-07 14:10:43
【问题描述】:
假设我有一个 Bash 脚本,我想用它创建一个文件。
对于另一个用例 - 假设我只需要一个包含快速创建的一些内容的文件,并且我不想离开命令行。也许它只是几行,或者我正在粘贴一些示例代码进行演示。
我的问题是:
如何在 Bash 的命令行中创建包含内容的新文件?
【问题讨论】:
假设我有一个 Bash 脚本,我想用它创建一个文件。
对于另一个用例 - 假设我只需要一个包含快速创建的一些内容的文件,并且我不想离开命令行。也许它只是几行,或者我正在粘贴一些示例代码进行演示。
我的问题是:
如何在 Bash 的命令行中创建包含内容的新文件?
【问题讨论】:
它类似于your 'cat' answer,但另一种方式是使用'echo'。首先键入带有一个引号 (") 的“echo”,然后按 Enter。然后,您可以键入行并按 Enter。在最后一行,键入右引号 ("),然后键入大于号 (>) 和所需的文件名。
echo "
> from __future__ import braces
> import antigravity" > foo.py
【讨论】:
使用echo 怎么样?如果我要创建/附加到一个文件中的一行,我会这样做:
$ echo "The world is a weird, mysterious place." >> ~/diary
如果多于一行,我使用cat 或我最喜欢的编辑器:
$ cat >> ~/diary
The world is a weird, mysterious place.
I ran the command man ascii and was delighted.^D
$
很多时候我从网上复制脚本代码,将它粘贴到一个空的vim 缓冲区/tmp/test.sh 或类似的地方,也许用gg=G 缩进它然后处理它。
【讨论】:
如何在 Bash 中创建小文件?
heredoc 允许您在命令行上键入正在创建的文件的内容,甚至可以使用 bash 脚本创建文件。由<< 创建的heredoc 通过管道传输到cat,然后重定向到文件demofoo:
$ cat > demofoo <<- "EOF"
> Something
> Something else
> EOF
<< 后面的- 和EOF 上的" 是optional。 - 允许制表符缩进并将文本设置为 0 列,使其更易于视觉解析。 " 防止参数扩展、命令替换和算术扩展,并从本质上确保文本的字面解释。
现在:
$ cat demofoo
Something
Something else
当我想演示如何使用静态文本创建文件时,我发现这很有用 - 因此我发现这比写作要好:
在 demofoo 中:
Something Something else
heredoc 不仅是明确的,而且是可执行代码——而且它
您可以在交互式 bash 会话中避免使用 EOF 类型的字符,但这不利于脚本,因为您需要 Ctrl-d。
例如:
~$ cat > foo.py
然后按回车键。该命令告诉 cat 将输出重定向到文件 foo.py,如果它已经存在,它将覆盖它。如果我想追加我的行,我可以改用>>。
然后我输入(在每行末尾输入)例如:
Something
Something else
或者只是从示例代码中粘贴,当我在文件中输入完我的行后,我点击Ctrl-d。
这就是我在 bash 命令行上快速创建新文件的方法。
【讨论】:
如果我不立即打开它,我会这样做:
touch ./filename.txt
【讨论】: