在本指南中,我们将讨论什么是 Shfmt,如何在 Linux 中安装 Shfmt,最后如何在 Linux 中使用 Shfmt 格式化 shell 程序。
内容
一、简介
如果您有编程背景,您可能知道格式化、linting 等术语。
每个代码编辑器都附带了重要的支持工具,可让我们在编码时轻松生活。
同样,对于 shell 脚本,我们有 换档. shfmt 用于格式化、解析和解释您的 shell 脚本。 Shfmt 支持 Bash、mksh 和 Posix shell。
Shfmt 是高度可配置的,可以以多种方式和约定格式化您的代码。
您可以从命令行安装和使用 Shfmt 工具来处理您的 shell 脚本。 在流行的文本编辑器中也有可用的插件,它们将使用 shfmt 来格式化您的 shell 脚本。
2.在Linux中安装Shfmt
Shfmt 可用作 snap 应用程序。 如果您的发行版安装了 snap,您可以使用以下命令安装 shfmt:
$ sudo snap install shfmt
另一种安装 Shfmt 的方法是使用以下单行命令:
$ curl -sS https://webinstall.dev/shfmt | bash
无论您运行什么发行版,都可以使用上述两种方法。 有几个发行版,您可以从它们的软件包存储库中安装 shfmt。
要在 Alpine Linux 中安装 shfmt,请运行:
$ sudo apk add shfmt
在 Arch Linux、EndeavourOS 和 Manjaro Linux 中安装 shfmt:
$ sudo pacman -S shfmt
在 FreeBSD 中安装 shfmt。
$ sudo pkg install devel/shfmt
$ sudo pkg install shfmt
3、Linux下使用Shfmt格式化shell程序
如果这是您第一次使用 Shfmt,请首先运行 help
命令以了解 shfmt 支持哪些选项:
$ shfmt --help
现在,请允许我向您展示一个示例。 我创建了一个没有正确格式的 shell 脚本。
看看上面的图片。 看起来很奇怪,对吧?
让我们使用 shfmt
像下面这样:
$ shfmt dummy.sh
Shfmt 将开始格式化给定的脚本。
以下是优化前后上述脚本的输出:
从上面的输出中,您可以看到我们的脚本格式很好。
你可能想知道为什么缩进被设置为 标签. 这是默认的并且可以修改。
3.1. 自定义缩进
我总是跟随 google shell 脚本样式文档 并将缩进设置为 2格 而不是标签。
设置自定义缩进使用 -i
旗帜。 让我们看看帮助菜单对此有何评论 -i
旗帜:
任何大于零的值都通过 -i
标志是将要使用的空间量。
$ shfmt -i 2 scriptname.sh
3.2. 差异风格输出
如果您需要有关确切格式化的信息,可以使用 -d
旗帜。 看一下下图,它显示了以绿色格式化的内容 +
象征。
3.3. 列出要格式化的脚本
您可以使用 -l
标志,它将获得需要格式化的脚本列表。
为了演示这一点,我将创建三个脚本文件。 我没有格式化第二个和第三个脚本。 而且我已经给了很多空间 echo
第二个和第三个文件的声明。
现在,如果我运行 shfmt 命令 -l
标志,它应该只选择我的第二个样本 2 和 3 文件:
$ shfmt -l sample*.sh sample2.sh sample3.sh
3.4. 将输出写入文件
默认情况下,Shfmt 将格式化脚本的输出写入 stdout,也就是终端。 如果要将输出写入文件,可以使用 -w
旗帜。
$ shfmt -w scriptname.sh
3.5. 在路径中查找shell脚本
和 -f
标志,shfmt 将递归扫描给定目录并找到所有 shell 脚本。
脚本是否具有扩展名并不重要 .sh
或不。 Shfmt 可以识别所有的 shell 脚本,即使它们没有扩展名。
$ shfmt -f /home/ostechnix /home/ostechnix/.config/envman/load.sh /home/ostechnix/.local/bin/webi /home/ostechnix/Downloads/sampleshell /home/ostechnix/dummy.sh
3.6. Shfmt 也可以检测错误
Shfmt 不仅仅用于格式化 shell 脚本。 它还可以发现脚本中的错误。
看看下图,我用来终止函数的大括号丢失了,shfmt 发现了它。
您还可以使用 bash 使用内置语法检查功能 -n
标志将验证您的代码和
列出所有错误。
$ bash -vn scriptname.sh
3.7. 外部编辑器中的 Shfmt
实时,您可以选择任何一种文本编辑器,例如 Vim、Atom、Sublime Text、Vs 代码等。其中一些文本编辑器可能具有对格式的本机支持 bash 脚本。
每个代码编辑器都有一个与 shfmt 集成的插件。 转到 GitHub 官方存储库(链接在末尾),在页面底部,您将在下方看到每个使用 shfmt 的文本编辑器的插件列表。
结论
在本指南中,我们通过实际示例了解了什么是 Shfmt 以及如何使用 Smfmt 格式化 Shell 程序。 Shfmt 将是一个非常有用的工具,可以让您的脚本保持干净、整洁和有条理。 与文本编辑器集成,您将在创建脚本时拥有非常流畅的工作流程。
资源:
- Shfmt GitHub 存储库
相关阅读:
- ShellCheck – 一个免费的工具来查找你的 Shell 脚本中的错误
- 使用 run-parts 命令运行脚本时修复“Exec 格式错误”
- 如何在 Linux 中运行目录中的所有脚本
- 如何使用 Linux 命令行工具解析和漂亮打印 JSON
来自Pixabay的精选图片。
格式化shell脚本LinuxProgrammingScriptingshell scriptsShfmt