Linux 工具命令(02): shfmt 格式化 shell 脚本, vscode 神插件

如果你用 Linux, 那你一定会遇到各种各样的 shell script(下称 script)

可惜的是, script 并没有一个 强制 约束的格式。 对于分支控制语句, 都有自己的关键字。

  1. 条件语句: if (...) then ... else ... fi
  2. 循环语句: for ... do ... done 等。

因此 是否使用 {statement} 或者 缩进 并不影响。

当分支语句多,且有嵌套语句的时候, 可读性依赖根据维护者习惯, 永远是一个迷。

9x9

shfmt 解决可读性问题

好消息来了, 在 Github 上有一个开源项目, mvdan/sh , 提供了一个工

shfmt

shfmt 就像 go fmt 一样, 可以格式化 script。 强制实现格式统一, 解决维护者依赖。

formatted-9x9

vscode 中的 shfmt 配置

shfmt 支持在很多编辑器中得到了支持。 你可以在 Github 主页中找到。

在 vscode 中, 我使用的是 shell-format

通过在 settings.json 中配置, 可以自定义 shfmt 路径

1
2
// settings.josn
"shellformat.path": "/usr/local/bin/shfmt",

引用