如何编写bash脚本或自动打开vi并编辑文档?

如何编写bash脚本或自动打开vi并编辑文档?

我想编写一个 bash 脚本来基本上自动执行此过程:

vi filename.sh

(使用vi打开“filename.sh”)

添加以下两行:

export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}

并保存这些更改

:wq!

基本上我想将这些添加到 jenkins 文件中以实现自动化

答案1

vi根据定义,它是一个可视化编辑器。

在这种情况下,最好使用其他方法。

如果您只想附加这些行,请执行以下操作:

cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF

如果文件尚不存在,这也将起作用。

如果您希望在开头添加这些行,您可以使用ed面向行的编辑器:

ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF

这指示ed在第 1 行插入行;.线上的单个点表示输入的结束,因此插入在此停止。最后,文件被写入 ( w) 并且编辑会话退出 ( q)。

如果您坚持使用,ed即使该文件尚不存在(在这种情况下我将使用cat上面的示例),您可以使用:

ed filename.sh <<'EOF'
i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w filename.sh
q
EOF

主要区别在于,您不需要使用i插入命令传递行号,因为还没有行;然后将文件名传递给w写入命令,即新文件。

sed也可以使用,但对于此类任务,我发现ed更容易使用(并阅读正在发生的事情)。

答案2

可以使用自动脚本编写ed

喜欢 ed < edit.sed filename.pdf

了解更多,您可以访问教程。

答案3

我也会按照@wurtel建议的方式来做,但如果出于某种原因你真的想这样做,将以下内容添加到您的$HOME/.vimrc 文件

function AddVars()
    let line1 = "export GRADLE_HOME=/opt/gradle/gradle-5.2.1"
    let line2 = "export PATH=${GRADLE_HOME}/bin:${PATH}"
    call append(line('$'), line1)
    call append(line('$'), line2)
    write
    exit
endf

然后打电话使用 -c 选项,如下所示: vi filename.sh -c "call AddVars()"

相关内容