创建文本文件并使用bash填充它


80

我需要创建一个文本文件(除非它已经存在),然后使用bash将新行写入该文件。

我敢肯定这很简单,但是有人可以向我解释吗?

Answers:


41

如果您希望将其作为脚本,则以下Bash脚本应该执行您想要的操作(并在文件已存在时告诉您):

#!/bin/bash
if [ -e $1 ]; then
  echo "File $1 already exists!"
else
  echo >> $1
fi

如果您不希望“已经存在”消息,则可以使用:

#!/bin/bash
if [ ! -e $1 ]; then
  echo >> $1
fi

编辑有关使用:

用您喜欢的名称保存任何版本,比如说“ create_file”(引用我的名字,您不希望它们出现在文件名中)。然后,要使文件可执行,请在命令提示符下执行以下操作:

chmod u+x create_file

将文件放在路径中的目录中,然后将其用于:

create_file NAME_OF_NEW_FILE

$ 1是一个特殊的shell变量,它在命令行中使用程序名称之后的第一个参数。即$ 1将在上述用法示例中提取NAME_OF_NEW_FILE。


我可以将其替换为“ text.txt”吗?
瑞士

1
@Switz:请参阅解释$ 1的编辑。如果将脚本中的$ 1替换为“ text.txt”,它将始终使用“ text.txt”作为文件名。
GreenMatt 2011年

98

可以通过文本编辑器(vim,emacs,gedit等)在Unix中创建文本文件。但是你想要的可能是这样的

echo "insert text here" > myfile.txt

这会将文本“在此处插入文本”放入文件myfile.txt中。要验证此方法是否有效,请使用命令“ cat”。

cat myfile.txt

如果要附加到文件,请使用此

echo "append this text" >> myfile.txt

19

假设您的意思是UNIX shell命令,只需运行

echo >> file.txt

echo打印换行符,并>>告诉外壳程序将该换行符附加到文件中,并创建一个尚不存在的换行符。

但是,为了正确回答该问题,如果文件已经存在,我需要知道您将要发生什么。例如,如果您想用换行符替换其当前内容,则可以使用

echo > file.txt

编辑:并响应贾斯汀的评论,如果您只想在文件不存在的情况下添加换行符,则可以

test -e file.txt || echo > file.txt

至少这在Bash中有效,我不确定它是否在其他shell中也适用。


+1。我认为还有另外一种可能的解释:如果该文件尚不存在,则创建并编写换行符,否则完全不要修改该文件。
Justin Ardini

@Justin:好点,我想我也可以添加一个,我们将介绍所有选项。
David Z

6
#!/bin/bash
file_location=/home/test/$1.json
if [ -e $policy ]; then
  echo "File $1.json already exists!"
else
  cat > $file_location <<EOF
{
      "contact": {
          "name": "xyz",
          "phonenumber":   "xxx-xxx-xxxx"
      }
    }
EOF
fi

此代码检查用户的给定JSON文件是否存在于测试主目录中。如果不存在,它将使用内容创建它。您可以根据需要修改文件的位置和内容。


2

您的问题有点含糊。这是一个shell命令,可以执行我认为您想做的事情:

echo >> name_of_file
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.