このガイドでは、Shfmtとは何か、LinuxにShfmtをインストールする方法、そして最後にLinuxでShfmtを使用してシェルプログラムをフォーマットする方法について説明します。
1。はじめに
プログラミングのバックグラウンドをお持ちの場合は、フォーマット、リンティングなどの用語をご存知かもしれません。
コーディング中の生活を楽にするために、すべてのコードエディタに付属している重要なサポートツールがあります。
同様に、シェルスクリプトの場合、 shfmt があります 。 shfmtは、シェルスクリプトのフォーマット、解析、および解釈に使用されます。 Shfmtは、Bash、mksh、およびPosixシェルをサポートします。
Shfmtは高度に構成可能であり、いくつかの方法と規則でコードをフォーマットできます。
コマンドラインからShfmtツールをインストールして使用し、シェルスクリプトを操作できます。また、シェルスクリプトをフォーマットするためにshfmtを使用する一般的なテキストエディタで利用可能なプラグインがあります。
2。 LinuxにShfmtをインストールする
Shfmtはスナップアプリケーションとして利用できます。ディストリビューションにスナップインストールされている場合は、次のコマンドを使用してshfmtをインストールできます。
$ sudo snap install shfmt
Shfmtをインストールする別の方法は、次のワンライナーコマンドを使用することです。
$ curl -sS https://webinstall.dev/shfmt | bash
上記の2つの方法は、実行しているディストリビューションに関係なく使用できます。パッケージリポジトリから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を使用してシェルプログラムをフォーマットする
Shfmtを初めて使用する場合は、help
を実行することから始めます。 shfmtがサポートするオプションを把握するためのコマンド:
$ shfmt --help
それでは、例を示しましょう。適切なフォーマットのないシェルスクリプトを作成しました。
上の画像を見てください。変に見えますよね?
shfmt
を使用してこのスクリプトをフォーマットしましょう 以下のように:
$ shfmt dummy.sh
Shfmtは指定されたスクリプトのフォーマットを開始します。
最適化の前後の上記のスクリプトの出力は次のとおりです。
上記の出力から、スクリプトが適切にフォーマットされていることがわかります。
インデントがタブに設定されているのはなぜか疑問に思われるかもしれません。 。これはデフォルトで変更可能です。
3.1。カスタムインデント
私は常にGoogleシェルスクリプトスタイルのドキュメントに従います インデントを2スペースに設定します タブの代わりに。
カスタムインデントを設定するには、-i
を使用します 国旗。この-i
についてヘルプメニューが何を言っているか見てみましょう フラグ:
ゼロより大きい値はすべて-i
で渡されます フラグは、意図するために使用されるスペースの量です。
$ shfmt -i 2 scriptname.sh
3.2。差分スタイルの出力
正確にフォーマットされたものに関する情報が必要な場合は、-d
を使用できます。 国旗。下の画像を見てください。+
で緑色にフォーマットされているものを示しています。 シンボル。
3.3。フォーマットするスクリプトを一覧表示する
-l
を使用できます フォーマットする必要のあるスクリプトのリストを取得するフラグ。
これを示すために、3つのスクリプトファイルを作成します。 2番目と3番目のスクリプトはフォーマットせずに残しました。そして、私はecho
にたくさんのスペースを与えました 2番目と3番目のファイルのステートメント。
ここで、-l
を指定してshfmtコマンドを実行すると フラグ、2番目のサンプル2および3ファイルのみを選択する必要があります:
$ shfmt -l sample*.sh sample2.sh sample3.sh
3.4。出力をファイルに書き込む
デフォルトでは、Shfmtはフォーマットされたスクリプトの出力をターミナルであるstdoutに書き込みます。出力をファイルに書き込みたい場合は、-w
を使用できます。 フラグ。
$ shfmt -w scriptname.sh
3.5。パス内のシェルスクリプトを検索する
-f
を使用 フラグを立てると、shfmtは指定されたディレクトリを再帰的にスキャンし、すべてのシェルスクリプトを検索します。
スクリプトの拡張子が.sh
であるかどうかは関係ありません。 か否か。 Shfmtは、拡張子がなくてもすべてのシェルスクリプトを認識できます。
$ 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は、シェルスクリプトをフォーマットするためだけのものではありません。また、スクリプトのエラーを見つけることもできます。
下の画像を見てください。関数を終了するためのブレースが欠落していて、shfmtがそれを見つけています。
-n
を使用して、bashに組み込まれている構文チェック機能を使用することもできます。 コードを検証するフラグと
すべてのエラーを一覧表示します。
$ bash -vn scriptname.sh
3.7。外部エディターのShfmt
リアルタイムでは、Vim、Atom、Sublime Text、Vs codeなど、任意のテキストエディターを使用できます。これらのテキストエディターの中には、bashスクリプトのフォーマットをネイティブでサポートしているものもあります。
各コードエディタには、shfmtと統合するプラグインがあります。 GitHubの公式リポジトリ(最後にあるリンク)に移動すると、ページの下部に、下にshfmtを使用する各テキストエディターのプラグインのリストが表示されます。
結論
このガイドでは、Shfmtとは何か、およびSmfmtを使用してシェルプログラムをフォーマットする方法を実際の例とともに見てきました。 Shfmtは、スクリプトをクリーンで整理された状態に保つための非常に便利なツールになります。テキストエディタと統合すると、スクリプトを作成する際のワークフローが非常にスムーズになります。