我需要创建一个文本文件(除非它已经存在)并使用bash在文件中写一个新行。
我确信这很简单,但有人可以向我解释一下吗?
答案 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文件是否在测试主目录中。如果不存在,它将使用内容创建它。您可以根据需要修改文件的位置和内容。