開発者の方は以前自分が作成したソースコードや、参考のためにダウンロードしたソースコードの中から、さまざまな情報を日常的に探していると思います。
例えば、関数名や変数名、ファイル、ライブラリのバージョン番号等を探す事があると思いますが、その場しのぎの力業ではなく、効率的に検索するためのツールや方法を知っておくと便利です。
開発者のMaciek Flak氏は、そのような場合に役立つ、ターミナルからさまざな「モノ」を探す方法を説明したブログ記事「Finding stuff in the terminal」を公開しています。
同氏が紹介した方法は以下の通りです。
目次
ターミナルから効率良く検索
ターミナルから検索するためのツールや方法として以下のものがリストアップされています。
- 文字列を探す
grep
。指定された文字列にマッチする行を表示する。❯ grep -i atuin **/*.nix
- モダンなgrepの代替ツール
ripgrep
。指定ディレクトリ以下に含まれるファイルを素早く検索することができる。❯ rg atuin
rg
とas-tgree
でディレクトリ構造を可視化。rgの結果をツリー形式で表示できる。❯ rg rust -l | as-tree . ├── README.md ├── configuration.nix ├── flake.lock ├── home-manager │ ├── amd-pc.nix │ ├── dell-xps.nix │ └── modules │ ├── i3.nix │ ├── nvim │ │ ├── config │ │ │ ├── init.vim │ │ │ ├── lsp-config.vim │ │ │ └── rust-config.lua │ │ └── neovim.nix │ ├── rust.nix │ └── zsh.nix └── hosts ├── amd-pc │ ├── configuration.nix │ └── postgres.nix ├── dell-xps │ └── configuration.nix └── odroid ├── nextcloud.nix └── postgres.nix
git
で履歴を確認。-Gや-pオプションを利用してgitの履歴から検索できる。# -G (grep) Look for differences whose patch text contains added/removed lines that match # -p (patch) generate patch ❯ git log -G _atuin_search_widget -p
- モダンなgit dffページャー
delta
。gitのページャーとしてdeltaを指定することでgitのdiffやlogの出力を見やすくすることができる。
- ファイル名で検索する
find
とfd
。findを使ってファイル名でファイルを探すことができる。fdはfindのモダン版。find . -name "*atuin*.nix" ./home-manager/modules/atuin.nix
- シェル履歴から検索する
atuin
。atuinはシェル履歴をSQLiteデータベースに保存することができるツール。あいまい検索や他のマシンとの同期も可能。
- ワーキングディレクトリを変更する
zoxide
。ディレクトリの変更を支援する小さなユーティリティで、頻繁に訪れるディレクトリを保存し、フルパスを覚えていなくてもジャンプできるようにする。z ripgrep
- ディスクスペースを消費しているモノを探す。ncduを使わなくてもduコマンドでもファイルを探すことができる。dustはそのモダン版。
du -h ~ | sort -hr | head -n 10
個人的には知っているものもあれば、as-tgreeやdelta、zoxide、dustなど知らないものもありました。全てを一度に覚えるのは大変ですので、気になるものから少しづつ試していくと良さそうです。