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

r8uurelv  于 2022-10-17  发布在  Unix
关注(0)|答案(7)|浏览(177)

我需要创建一个文本文件(除非它已经存在),并使用bash向该文件写入新行。
我相信这很简单,但有人能给我解释一下吗?

x7yiwoj4

x7yiwoj41#

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

echo "insert text here" > myfile.txt

这将把文本“Insert Text Here”放到文件myfile.txt中。要验证这是否起作用,请使用命令‘cat’。

cat myfile.txt

如果想要追加到文件中,请使用此命令

echo "append this text" >> myfile.txt
dy1byipe

dy1byipe2#

如果您希望将其作为脚本,下面的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是一个特殊的外壳变量,它在命令行中接受程序名之后的第一个参数;即,在上面的用法示例中,$1将获取name_of_new_file。

c2e8gylq

c2e8gylq3#

假设您指的是Unix外壳命令,那么只需运行

echo >> file.txt

echo打印一个换行符,>>告诉外壳程序将该换行符附加到文件中,如果该文件不存在,则创建它。
不过,为了正确回答这个问题,我需要知道如果文件已经存在,您会希望发生什么情况。例如,如果您想用换行符替换其当前内容,您可以使用

echo > file.txt

**EDIT:**针对Justin的评论,如果您只想在文件不存在的情况下添加换行符,您可以这样做

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

至少这在Bash中是有效的,我不确定它是否也在其他外壳中有效。

k7fdbhmy

k7fdbhmy4#


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

kx1ctssn

kx1ctssn5#

你的问题有点含糊其辞。这是一个外壳命令,它执行我认为您想要做的事情:

echo >> name_of_file
nafvub8i

nafvub8i6#

cat my_file.txt | cat > new_file.txt

创建一个“.sh”文件并将此命令放在那里,然后运行))
这将把my_file的输出放到new_file,顺便说一句,它将被创建。
您可以放置任何文本而不是cat my_file.txt,它将自动发送到new_file

webghufk

webghufk7#

echo -e "Hello there, new line!" >> new_file.txt

cat <<EOF | sudo tee /etc/test.txt Hello World EOF

相关问题