【问题标题】:How to write to a text file upon creation?创建时如何写入文本文件?
【发布时间】:2015-01-23 17:24:44
【问题描述】:

我正在自学命令行代码,似乎找不到答案。

我正在使用标准的 MacOS 终端应用程序来创建目录/文件以供练习。

我的问题是,我可以使用代码来包含在创建文件时将写入文件的内容吗?

我试过了:

touch one/texttest.txt echo "Hello"

但这只会在“one”文件夹中创建 3 个文件,一个名为 hello,一个名为 echo,第三个名为 texttest.txt

我也尝试过这些并得到了相同的结果:

touch echo "Hello" ~/one/texttest.txt

echo Hello ~/one/texttest.txt

touch one/texttest.txt Hello

我似乎找不到任何适用于具有 0 个插件的标准终端应用程序的解决方案,这甚至可能吗?

【问题讨论】:

  • touch 命令的目的是更新文件的修改时间戳;如果文件不存在,它恰好也会创建文件。但是,这不是在 shell 中创建新文件的唯一方法(甚至不是通常的方法)。下面 Danny 的解决方案显示了一种常用方法,即使用 > redirection operator 将命令的输出(在本例中为 echo)重定向到文件。
  • 我明白了,在我重定向到它之前,该文件是否必须存在,或者我可以对一个不存在的文件使用重定向操作“>”并且它为我制作?编辑:刚刚回答了我自己的问题,谢谢!
  • 如果文件不存在,它会创建一个文件。以下是 IO 重定向和其他可用运算符的概述:linuxcommand.org/lc3_lts0070.php
  • 不确定我是否称其为“很棒的概述”,但它肯定是对一些基础知识的温和介绍。

标签: bash shell command-line terminal


【解决方案1】:

这应该可行:

echo "Hello" > one/texttest.txt

【讨论】:

  • 谢谢!我会在 5 分钟内接受你的回答,当计时器结束时。
【解决方案2】:
touch one/texttest.txt echo "Hello"

即带有三个参数的touch 命令:one/texttest.txtechoHello(shell 删除了引号)。

touch echo "Hello" ~/one/texttest.txt
touch one/texttest.txt Hello

这些与第一个相同(不同的论点但相同的概念)。

echo Hello ~/one/texttest.txt

这是带有两个参数的 echo 命令:Hello~/one/texttest.txt(只有 ~ 会在 echo 看到它时扩展到您的主目录)。

touch 只创建文件(并更新时间戳)它不写入内容。

你可以有一个 touch 命令也接受内容,但我不知道有一个。

幸运的是你不需要一个,因为 shell 可以为你做这件事。

您使用echo Hello 运行echo 并让它输出Hello,然后告诉shell 将文本“重定向”到文件而不是屏幕。

echo Hello > texttest.txt

值得指出的是,无论您是否向其写入任何内容,重定向都会创建文件(事实上,该命令是否有效,甚至是否存在,或者即使给出了一个命令)。

$ ls /tmp/texttest.txt
ls: /tmp/texttest.txt: No such file or directory
$ flekjfe Hello > /tmp/texttest.txt
$ ls /tmp/texttest.txt
/tmp/texttest.txt

所以你可以单独使用> file 来创建一个新的空文件。

【讨论】:

  • 感谢您解释我的命令实际上在做什么,来自前端设计的背景,这对我来说真的是全新的和不同的。
【解决方案3】:

你可以使用输出重定向command_output > file

更多详情:http://tldp.org/LDP/abs/html/io-redirection.html

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2014-10-23
    • 1970-01-01
    • 2020-06-13
    相关资源
    最近更新 更多