从此编写bash脚本不再难

hch的随笔成功的秘诀在于恒心—迪斯雷利 hch的随笔成功的秘诀在于恒心—迪斯雷利     2022-08-30     580

关键词:

从此编写 Bash 脚本不再难

技术分享

在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个编写 Bash 脚本的 IDE。 -- Aaron Kili

本文导航
  • -什么是 bash-support.vim 插件? …… 05%

  • -如何在 Linux 中安装 Bash-support 插件 …… 10%

  • -如何在 Vim 编辑器中使用 Bash-support 插件 …… 17%

  • -如何为新脚本自动生成文件头 …… 24%

  • -添加 Bash-support 插件帮助信息 …… 40%

  • -如何在 Shell 脚本中插入注释 …… 44%

  • -如何在 Shell 脚本中插入语句 …… 46%

  • -插入一个函数和函数头 …… 57%

  • -更多关于添加 Bash 语句的例子 …… 63%

  • -如何在 Vi 编辑器中使用运行操作 …… 67%

  • -使脚本可执行 …… 72%

  • -如何在 Bash 脚本中使用预定义代码片段 …… 74%

  • -创建自定义预定义代码段 …… 81%

  • -在当前光标处查看内建和命令帮助 …… 85%

编译自: http://www.tecmint.com/use-vim-as-bash-ide-using-bash-support-in-linux/

作者: Aaron Kili

译者: ictlyh

IDE(集成开发环境[1])就是这样一个软件,它为了最大化程序员生产效率,提供了很多编程所需的设施和组件。 IDE 将所有开发工作集中到一个程序中,使得程序员可以编写、修改、编译、部署以及调试程序。

在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置[2] 为一个编写 Bash 脚本的 IDE。

什么是 bash-support.vim 插件?

bash-support 是一个高度定制化的 vim 插件,它允许你插入:文件头、补全语句、注释、函数、以及代码块。它也使你可以进行语法检查、使脚本可执行、一键启动调试器;而完成所有的这些而不需要关闭编辑器。

它使用快捷键(映射),通过有组织地、一致的文件内容编写/插入,使得 bash 脚本编程变得有趣和愉快。

插件当前版本是 4.3,4.0 版本 重写了之前的 3.12.1 版本,4.0 及之后的版本基于一个全新的、更强大的、和之前版本模板语法不同的模板系统。

如何在 Linux 中安装 Bash-support 插件

用下面的命令下载最新版本的 bash-support 插件:

$ cd Downloads

$ curl http://www.vim.org/scripts/download_script.php?src_id=24452 >bash-support.zip

按照如下步骤安装;在你的主目录创建 .vim 目录(如果它不存在的话),进入该目录并提取 bash-support.zip 内容:

$ mkdir ~/.vim

$ cd .vim

$ unzip ~/Downloads/bash-support.zip

下一步,在 .vimrc 文件中激活它:

$ vi ~/.vimrc

并插入下面一行:

filetype plug-in on

set number # 可选,增加这行以在 vim 中显示行号

如何在 Vim 编辑器中使用 Bash-support 插件

为了简化使用,通常使用的结构和特定操作可以分别通过键映射来插入/执行。 ~/.vim/doc/bashsupport.txt 和 ~/.vim/bash-support/doc/bash-hotkeys.pdf 或者 ~/.vim/bash-support/doc/bash-hotkeys.tex 文件中介绍了映射。

重要:

  1. 所有映射(+字符 组合)都是针对特定文件类型的:为了避免和其它插件的映射冲突,它们只适用于 sh 文件。

  2. 使用键映射的时候打字速度也有关系,引导符 和后面字符的组合要在特定短时间内才能识别出来(很可能少于 3 秒 - 基于假设)。

下面我们会介绍和学习使用这个插件一些显著的功能:

如何为新脚本自动生成文件头

看下面的示例文件头,为了要在你所有的新脚本中自动创建该文件头,请按照以下步骤操作。

技术分享

脚本示例文件头选项

首先设置你的个人信息(作者名称、作者参考、组织、公司等)。在一个 Bash 缓冲区(像下面这样打开一个测试脚本)中使用映射 tw 启动模板设置向导。

选中选项 1 设置个性化文件,然后按回车键。

$ vi test.sh

技术分享

在脚本文件中设置个性化信息

之后,再次输入回车键。然后再一次选中选项 1 设置个性化文件的路径并输入回车。

技术分享

设置个性化文件路径

设置向导会把目标文件 .vim/bash-support/rc/personal.templates 拷贝到 .vim/templates/personal.templates,打开并编辑它,在这里你可以输入你的信息。

按 i 键像截图那样在单引号中插入合适的值。

技术分享

在脚本文件头添加信息

一旦你设置了正确的值,输入 :wq 保存并退出文件。关闭 Bash 测试脚本,打开另一个脚本来测试新的配置。现在文件头中应该有和下面截图类似的你的个人信息:

$ vi test2.sh

技术分享

自动添加文件头到脚本

添加 Bash-support 插件帮助信息

为此,在 Vim 命令行输入下面的命令并按回车键,它会创建 .vim/doc/tags 文件:

:helptags $HOME/.vim/doc/

技术分享

在 Vi 编辑器添加插件帮助

如何在 Shell 脚本中插入注释

要插入一个块注释,在普通模式下输入 cfr:

技术分享

添加注释到脚本

如何在 Shell 脚本中插入语句

下面是一些用于插入语句的键映射(n – 普通模式, i – 插入模式,v 可视模式):

  1. sc – case in … esac (n, i)

  2. sei – elif then (n, i)

  3. sf – for in do done (n, i, v)

  4. sfo – for ((…)) do done (n, i, v)

  5. si – if then fi (n, i, v)

  6. sie – if then else fi (n, i, v)

  7. ss – select in do done (n, i, v)

  8. su – until do done (n, i, v)

  9. sw – while do done (n, i, v)

  10. sfu – function (n, i, v)

  11. se – echo -e "…" (n, i, v)

  12. sp – printf "…" (n, i, v)

  13. sa – 数组元素, ${.[.]} (n, i, v) 和其它更多的数组功能。

插入一个函数和函数头

输入 sfu 添加一个新的空函数,然后添加函数名并按回车键创建它。之后,添加你的函数代码。

技术分享

在脚本中插入新函数

为了给上面的函数创建函数头,输入 cfu,输入函数名称,按回车键并填入合适的值(名称、介绍、参数、返回值):

技术分享

在脚本中创建函数头

更多关于添加 Bash 语句的例子

下面是一个使用 si 插入一条 if 语句的例子:

技术分享

在脚本中插入语句

下面的例子显示使用 se 添加一条 echo 语句:

技术分享

在脚本中添加 echo 语句

如何在 Vi 编辑器中使用运行操作

下面是一些运行操作键映射的列表:

  1. r – 更新文件,运行脚本(n, i)

  2. a – 设置脚本命令行参数 (n, i)

  3. c – 更新文件,检查语法 (n, i)

  4. co – 语法检查选项 (n, i)

  5. d – 启动调试器(n, i)

  6. e – 使脚本可/不可执行(*) (n, i)

使脚本可执行

编写完脚本后,保存它然后输入 e 和回车键使它可执行。

技术分享

使脚本可执行

如何在 Bash 脚本中使用预定义代码片段

预定义代码片段是为了特定目的包含了已写好代码的文件。为了添加代码段,输入 r 和 w 读/写预定义代码段。输入下面的命令列出默认的代码段:

$ .vim/bash-support/codesnippets/

技术分享

代码段列表

为了使用代码段,例如 free-software-comment,输入 r 并使用自动补全功能选择它的名称,然后输入回车键:

技术分享

添加代码段到脚本

创建自定义预定义代码段

可以在 ~/.vim/bash-support/codesnippets/ 目录下编写你自己的代码段。另外,你还可以从你正常的脚本代码中创建你自己的代码段:

  1. 选择你想作为代码段的部分代码,然后输入 w 并给它一个相近的文件名。

  2. 要读入它,只需要输入 r 然后使用文件名就可以添加你自定义的代码段。

在当前光标处查看内建和命令帮助

要显示帮助,在普通模式下输入:

  1. hh – 内建帮助

  2. hm – 命令帮助

技术分享

查看内建命令帮助

更多参考资料,可以查看文件:

~/.vim/doc/bashsupport.txt #在线文档的副本

~/.vim/doc/tags

  • 访问 Bash-support 插件 GitHub 仓库:https://github.com/WolfgangMehner/bash-support

  • 在 Vim 网站访问 Bash-support 插件:http://www.vim.org/scripts/script.php?script_id=365

就是这些啦,在这篇文章中,我们介绍了在 Linux 中使用 Bash-support 插件安装和配置 Vim 为一个 Bash-IDE 的步骤。快去发现这个插件其它令人兴奋的功能吧,一定要在评论中和我们分享哦。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S 爱好者、Linux 系统管理员、网络开发人员,现在也是 TecMint 的内容创作者,她喜欢和电脑一起工作,坚信共享知识。


via: http://www.tecmint.com/use-vim-as-bash-ide-using-bash-support-in-linux/

作者:Aaron Kili[3] 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

  • [1]: 集成开发环境 - http://www.tecmint.com/best-linux-ide-editors-source-code-editors/

  • [2]: Vim 编辑器安装和配置 - http://www.tecmint.com/vi-editor-usage/

  • [3]: Aaron Kili - http://www.tecmint.com/author/aaronkili/

转自

将 Vim 编辑器打造成一个 Bash 脚本专属 IDE - 今日头条(www.toutiao.com)
http://www.toutiao.com/i6415421228072305153/

如何编写 bash 脚本来设置全局环境变量?

】如何编写bash脚本来设置全局环境变量?【英文标题】:Howtowriteabashscripttosetglobalenvironmentvariable?【发布时间】:2012-09-0307:41:28【问题描述】:最近写了一个设置环境变量的脚本,看看:#!/bin/bashecho"Passapath:"readpathecho$pathdefaultPath... 查看详情

如果进程死了,如何编写 bash 脚本来重新启动进程?

】如果进程死了,如何编写bash脚本来重新启动进程?【英文标题】:HowdoIwriteabashscripttorestartaprocessifitdies?【发布时间】:2010-10-1608:38:07【问题描述】:我有一个python脚本,它将检查队列并对每个项目执行操作:#checkqueue.pywhileTrue... 查看详情

如何编写文本文件,然后在同一个 Bash 脚本中读取它?

】如何编写文本文件,然后在同一个Bash脚本中读取它?【英文标题】:HowcanIwriteatextfile,andthenreadfromitinthesameBashscript?【发布时间】:2019-09-0213:14:51【问题描述】:我在Vim中有一个热键,可以让我进入命令模式并调用Bash脚本。Bash... 查看详情

如何为需要 4 个数字输入的 C 程序编写 Bash 脚本? [复制]

】如何为需要4个数字输入的C程序编写Bash脚本?[复制]【英文标题】:HowdoIwriteaBashscriptforaCprogramthattakes4numericalinputs?[duplicate]【发布时间】:2020-12-2419:37:23【问题描述】:我正在为一个c程序编写一个bash脚本,该程序要求输入4个... 查看详情

如何编写在程序上执行 gdb 的 bash 脚本

】如何编写在程序上执行gdb的bash脚本【英文标题】:Howtowriteabashscriptthatexecutesgdbonaprogram【发布时间】:2020-04-0420:29:32【问题描述】:我正在从http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software/Buffer_Overflow/Buffer_Overflow.pdf重新创建缓冲区... 查看详情

编写一个bash脚本来运行一个带有命令行参数的java程序? [复制]

】编写一个bash脚本来运行一个带有命令行参数的java程序?[复制]【英文标题】:Writingabashscripttorunajavaprogramwithcommandlinearguments?[duplicate]【发布时间】:2017-04-1819:45:36【问题描述】:我编写了一个维护银行帐户数据库的Java程序(... 查看详情

如何为应该从 cookie_jar 返回的 cookie 编写 bash bash 脚本

】如何为应该从cookie_jar返回的cookie编写bashbash脚本【英文标题】:Howtowritebashbashscriptforcookiethatshouldreturnsfromcookie_jar【发布时间】:2021-12-0303:02:24【问题描述】:这里是bash版本GNUbash,版本5.0.17这是猫-Acookie_jarITRUE^I/^IFALSE^I0^ITS01e14... 查看详情

编程实践bashscriptingwithchatgpt:highlightsyntax使用chatgpt编写bash脚本:突出显示语法

目录BashScriptingwithChatGPT:HighlightSyntax使用ChatGPT编写Bash脚本:突出显示语法ExperimentwithChatGPTBashscripting试用ChatGPTBash脚本ModifythecodewithChatGPT 用ChatGPT修改代码DebugwithChatGPT 使用ChatGPT进行调试BashScriptingwithChatGPT:HighlightSyntax使用Ch... 查看详情

3-unt11脚本

##########BashScripts#########**bash脚本基础**编写简单bash脚本##########Bash脚本基础#########BASH=GNUBourne-AgainShell,BASH是GNU组织开发和推广的一个项目。Bash脚本类似批处理,简单来讲就是把许多的指令集合在一起,并提供循环、条件、判断... 查看详情

从此不再担心键盘遮住输入框oc(

从此不再担心键盘遮住输入框OC(二)字数544 阅读1492 评论15 喜欢25在我发布这篇文章没多久之前,我发布了一篇叫 从此不再担心键盘遮住输入框OC(一)的文章。我在那篇文章中介绍了我的键盘组件KeyboardToolBar。新版... 查看详情

bash -- 杀死命令脚本 [重复]

...【发布时间】:2015-12-2210:29:43【问题描述】:我正在研究编写shell脚本作为上课的先决条件,并希望得到一些帮助以开始学习。我目前正在做一个热身练习,需要我编写一个shell脚本,当执行该脚本时,它将杀死我给出的命令的... 查看详情

脚本1

...,并提供循环、条件、判断等重要功能,语法简单实用,用以编写程序,大大简化管理员的操作,并可以完成图形工具所无法实现的功能。 1.脚本通常以.sh结尾2.编写脚本是通常 查看详情

如何编写一个使用图像魔法将图像切割成碎片的bash脚本?

】如何编写一个使用图像魔法将图像切割成碎片的bash脚本?【英文标题】:Howtowriteabashscriptthatcutsimagesintopiecesusingimagemagick?【发布时间】:2009-09-2909:39:52【问题描述】:我有许多包含多个较小图像的输入图像,它们都在一行中。... 查看详情

如何编写一个运行程序的 bash 脚本,直到它检测到信号 SIGSEGV、分段错误?

】如何编写一个运行程序的bash脚本,直到它检测到信号SIGSEGV、分段错误?【英文标题】:HowdoIwriteabashscriptwhichrunsaprogramuntilitsensessignalSIGSEGV,Segmentationfault?【发布时间】:2019-12-2503:22:11【问题描述】:学习C指针,我确信昨天成功... 查看详情

linux中编写bash脚本的10个技巧

Shell脚本编程是你在Linux下学习或练习编程的最简单的方式。尤其对系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。本文中,我们将分享10个写出高效可靠的bash脚本的实... 查看详情

使用bash脚本,编写一个实现将命令行的多个参数逆序输出的程序。

使用bash脚本,编写一个实现将命令行的多个参数逆序输出的程序,在循环中不得使用内部命令break和continue。参考技术Ai=$#while [ $i -gt 0 ]doeval "echo \\$$i"i=$((i - 1))done 查看详情

在终端中使用 mysql 来抑制警告消息,但密码是用 bash 脚本编写的

】在终端中使用mysql来抑制警告消息,但密码是用bash脚本编写的【英文标题】:SuppresswarningmessagesusingmysqlfromwithinTerminal,butpasswordwritteninbashscript【发布时间】:2014-01-1203:11:43【问题描述】:当我尝试从终端中在MySQL上运行以下命令... 查看详情

使用 bash 脚本自动化远程登录会话

】使用bash脚本自动化远程登录会话【英文标题】:Automatingtelnetsessionusingbashscripts【发布时间】:2011-10-2404:43:27【问题描述】:我正在使用Bash脚本自动化一些与telnet相关的任务。一旦自动化,用户将不再与telnet进行交互(即完全... 查看详情