株式会社ゆめみ Advent Calendar 2022 23日目の記事です。
はじめに
2022年も残りわずかとなりましたね。
今年一年を振り返ってみて、普段業務でよく使用しているmacOS用のターミナル向けのツールやコマンドを紹介したいと思います。
動作確認環境
$ sw_vers
ProductName: macOS
ProductVersion: 13.1
BuildVersion: 22C65
生産性が向上したと思うmacOS用ターミナル向けツールやコマンド
1. Fig.app
ターミナルでコマンドの自動補完を行うGUIアプリです。ディレクトリ名やファイル名を自動で補完してくれたり、gitの各種コマンドやブランチ名等も補完してくれます。一般的なコマンドは補完が効くので、かなり生産性向上に寄与してくれました。
見た目は以下のような感じになります。
2. Starship
BashやZsh、Fish等で使用できるカスタマイズ可能なシェル用プロンプトを提供するツールです。
細かく調整しなくても、いい感じのプロンプトにしてくれます。
現在選択しているgitブランチやAWSプロファイルのリージョンを表示したり、ランタイムのバージョンを表示してくれます。
また、それらの情報が不要なときは表示されないというのも嬉しいポイントです。
ちなみに、デフォルトのフォントだと各種アイコンが??になってしまうので、Nerdフォントを導入する必要があります。
https://github.com/ryanoasis/nerd-fonts
StarshipのインストールはHomebrewでできます。
# starshipのインストール
brew install starship
Starshipのconfigは以下のように設定しています。
# https://starship.rs/ja-jp/config/
# シェルプロンプトの間に空行を追加します
add_newline = true
# プロンプトの記号変更
[character]
success_symbol = "[\\(`・ω・´\\) ❯](bold green)"
error_symbol = "[\\(´ ・ω・`\\) ❯](bold red)"
# バッテリー表示
[battery]
full_symbol = "🔋 "
charging_symbol = "⚡️ "
discharging_symbol = " "
disabled = false
[[battery.display]]
threshold = 20
style = "bold yellow"
[status]
style = "red"
symbol = "🔴"
format = '[\[$common_meaning$signal_name$maybe_int $status\]]($style) '
map_symbol = true
disabled = false
[directory]
truncation_length=4
truncate_to_repo=false
disabled = false
configの詳細は以下をご参照ください。
3. lsd (LSDeluxe)
コマンド名はちょっとドキっとしますが、lsコマンドのデラックスバージョンです。
ディレクトリやファイル一覧をわかりやすく表示してくれます。
カラーリングはもちろんのこと、設定ファイルで表示項目を調整することもできます。
# lsdのインストール
brew install lsd
通常のlsコマンドの代わりにlsdを使用するようにエイリアスを設定しておくと便利です。お好みでどうぞ。
alias ls='lsd'
alias l='lsd -l'
alias ll='lsd -l'
alias la='lsd -a'
alias lla='lsd -la'
alias lt='lsd --tree'
4. teee - alias teee='tee >(pbcopy)'
コマンドの結果を標準出力で画面に表示しつつ、クリップボードにもコピーしておく便利コマンド teee
です。
(実際はコマンドと言うよりエイリアスですが)
macOSにはコマンドの結果をクリップボードにコピーする pbcopy
および、クリップボードの内容を出力する pbpaste
コマンドがあります。
通常、コマンドの結果をパイプでpbcopyに渡しますが、その際に標準出力がpbcopyにもっていかれてしまい、どんな内容がコピーされたのかがわかりにくさがありました。
その時に tee コマンドを使って画面に結果を出力しつつクリップボードにもコピーできないかなと思い、以下のエイリアスを作成しました。
# ~/.bashrc or ~/.zshrc
alias teee='tee >(pbcopy)'
エイリアスを設定したらターミナルを再起動するか、 exec $SHELL
でシェルを読み込み直します。
teee コマンドの使い方のイメージ以下になります。
echo 'Hello, World!' | teee
#=> Hello, World!
pbpaste
#=> Hello, World!
クリップボードにコピーしつつ、別のコマンドにもパイプで渡すこともできます。
echo '{"message":"Hello!"}' | teee | jq -r .message
#=> Hello!
papaste
#=> {"message":"Hello!"}
5. hstr
bash/zsh用のコマンド履歴インクリメンタル検索ツールです。
brew install hstr
でインストールして、
# bash
hstr --show-configuration >> ~/.bashrc
# zsh
hstr --show-configuration >> ~/.zshrc
で設定を追加すると使えるようになります。
基本的にはキーボードショートカット Control + R
でhstrを呼び出すと、コマンド履歴をインクリメンタル検索できます。
過去に実行したコマンドを探す際のスピードが格段にアップするのでオススメです。
6. jq
有名なツールですね。jqはコマンドラインでJSON形式の文字列を整形したり解析します。
JSONから特定の値を取り出したり、JSONの文法チェックにも使ったりしています。
何かと業務で利用する機会が多いツールです。
7. Mo (Mustache Templates in Bash)
moはMustache記法 ({{
と }}
) で書かれたファイルや文字列を環境変数の値で置き換えてくれるツールです。
moはbashスクリプトになっているので、ダウンロードして実行権限を付与したらパスが通っている場所に配置するだけでインストール完了します。
# ダウンロード
curl -sSL https://git.io/get-mo -o mo
# 実行権限付与
chmod +x mo
# パスが通っている場所に移動させてインストール完了
sudo mv mo /usr/local/bin/
例は以下になります。
# 一度実行してみる
echo 'Hello, {{NAME}}!' | mo
#=> Hello, !
# 環境変数を定義
export NAME=Taro
moはCIやCDで環境毎に異なる設定ファイルを作成するのに使用しています。
8. zsh-completions
zshの各種コマンドをTABキーで自動補完してくれるツールです。
1番で紹介したFig.appが使えない環境などで使用しています。
brew install zsh-completions
で導入できます。細かな設定方法は、
brew info zsh-completions
を参照してください。
9. neovim
neovimはvimから派生したテキストエディターです。
たまにターミナルでファイル編集したいときにneovimだとデフォルトの状態でもいい感じにファイル編集ができるので重宝しています。
10. glow
glowはコマンドラインでMarkdownファイルを見やすくするマークダウンビューワーです。
brew install glow
でインストールできます。
使い方は以下の通り。
# ファイルを読み込む
glow README.md
# 標準出力からMarkdown文字列を受け取る
cat README.md | glow -
Markdownファイルの内容をパッと確認したいときに便利です。
-p
オプションを付けるとページャーが起動します。
オプションが覚えられないので、パイプ経由でプレビューしやすいように以下のエイリアスを設定しています。
# ~/.bashrc or ~/.zshrc
md='glow -p -'
mdエイリアスの使い方は次のようになります。
cat README.md | md
お試しあれ。
おわりに
この記事では生産性向上につながりそうな普段よく使っているコマンドやツールを、パッと思い出せるモノを中心に10個紹介しました。
このようなツールやコマンドを活用して、業務効率化を図っていきたいですね。
最後までお読みいただきありがとうございました!