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

时间:2011-01-11 21:38:17

标签: unix

我需要创建一个文本文件(除非它已经存在)并使用bash在文件中写一个新行。

我确信这很简单,但有人可以向我解释一下吗?

5 个答案:

答案 0 :(得分:67)

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

echo "insert text here" > myfile.txt

这会将文本'insert here here'放入文件myfile.txt中。要验证这是否有效,请使用命令'cat'。

cat myfile.txt

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

echo "append this text" >> myfile.txt

答案 1 :(得分:25)

如果您希望将此作为脚本,以下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

Put the file in a directory in your path,然后将其用于:

create_file NAME_OF_NEW_FILE

$ 1是一个特殊的shell变量,它在程序名后面的命令行中获取第一个参数;即$ 1将在上面的用法示例中选择NAME_OF_NEW_FILE。

答案 2 :(得分:14)

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

即可
echo >> file.txt

echo打印换行符,>>告诉shell将该换行符附加到该文件中,如果它尚不存在则创建。

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

echo > file.txt

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

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

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

答案 3 :(得分:2)

你的问题有点模糊。这是一个shell命令,可以执行我认为您想要执行的操作:

echo >> name_of_file

答案 4 :(得分:2)

#!/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文件是否在测试主目录中。如果不存在,它将使用内容创建它。您可以根据需要修改文件的位置和内容。