我需要创建一个文本文件(除非它已经存在),并使用bash向该文件写入新行。我相信这很简单,但有人能给我解释一下吗?
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
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。
c2e8gylq3#
假设您指的是Unix外壳命令,那么只需运行
echo >> file.txt
echo打印一个换行符,>>告诉外壳程序将该换行符附加到文件中,如果该文件不存在,则创建它。不过,为了正确回答这个问题,我需要知道如果文件已经存在,您会希望发生什么情况。例如,如果您想用换行符替换其当前内容,您可以使用
echo
>>
echo > file.txt
**EDIT:**针对Justin的评论,如果您只想在文件不存在的情况下添加换行符,您可以这样做
test -e file.txt || echo > file.txt
至少这在Bash中是有效的,我不确定它是否也在其他外壳中有效。
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文件是否存在于测试主目录中。如果它不存在,它将使用内容创建它。您可以根据需要修改文件位置和内容。
kx1ctssn5#
你的问题有点含糊其辞。这是一个外壳命令,它执行我认为您想要做的事情:
echo >> name_of_file
nafvub8i6#
cat my_file.txt | cat > new_file.txt
创建一个“.sh”文件并将此命令放在那里,然后运行))这将把my_file的输出放到new_file,顺便说一句,它将被创建。您可以放置任何文本而不是cat my_file.txt,它将自动发送到new_file。
my_file
new_file
cat my_file.txt
webghufk7#
echo -e "Hello there, new line!" >> new_file.txt或cat <<EOF | sudo tee /etc/test.txt Hello World EOF
echo -e "Hello there, new line!" >> new_file.txt
cat <<EOF | sudo tee /etc/test.txt Hello World EOF
7条答案
按热度按时间x7yiwoj41#
在Unix中创建文本文件可以通过文本编辑器(vim、emacs、gedit等)来完成。但你想要的可能是这样的东西
这将把文本“Insert Text Here”放到文件myfile.txt中。要验证这是否起作用,请使用命令‘cat’。
如果想要追加到文件中,请使用此命令
dy1byipe2#
如果您希望将其作为脚本,下面的Bash脚本应该执行您想要的操作(外加告诉您该文件何时已经存在):
如果您不想看到“已存在”消息,您可以使用:
编辑关于使用:
用您喜欢的名称保存任何版本,让我们将其命名为“create_file”(引用我的,您不希望它们出现在文件名中)。然后,要使文件可执行,请在命令提示符下执行以下操作:
Put the file in a directory in your path,然后将其用于:
$1是一个特殊的外壳变量,它在命令行中接受程序名之后的第一个参数;即,在上面的用法示例中,$1将获取name_of_new_file。
c2e8gylq3#
假设您指的是Unix外壳命令,那么只需运行
echo
打印一个换行符,>>
告诉外壳程序将该换行符附加到文件中,如果该文件不存在,则创建它。不过,为了正确回答这个问题,我需要知道如果文件已经存在,您会希望发生什么情况。例如,如果您想用换行符替换其当前内容,您可以使用
**EDIT:**针对Justin的评论,如果您只想在文件不存在的情况下添加换行符,您可以这样做
至少这在Bash中是有效的,我不确定它是否也在其他外壳中有效。
k7fdbhmy4#
此代码检查用户的给定JSON文件是否存在于测试主目录中。如果它不存在,它将使用内容创建它。您可以根据需要修改文件位置和内容。
kx1ctssn5#
你的问题有点含糊其辞。这是一个外壳命令,它执行我认为您想要做的事情:
nafvub8i6#
创建一个“.sh”文件并将此命令放在那里,然后运行))
这将把
my_file
的输出放到new_file
,顺便说一句,它将被创建。您可以放置任何文本而不是
cat my_file.txt
,它将自动发送到new_file
。webghufk7#
echo -e "Hello there, new line!" >> new_file.txt
或
cat <<EOF | sudo tee /etc/test.txt Hello World EOF