ターミナルで「モノ」を探すいろいろな方法

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

S 20240330 133753

開発者の方は以前自分が作成したソースコードや、参考のためにダウンロードしたソースコードの中から、さまざまな情報を日常的に探していると思います。

例えば、関数名や変数名、ファイル、ライブラリのバージョン番号等を探す事があると思いますが、その場しのぎの力業ではなく、効率的に検索するためのツールや方法を知っておくと便利です。

開発者のMaciek Flak氏は、そのような場合に役立つ、ターミナルからさまざな「モノ」を探す方法を説明したブログ記事「Finding stuff in the terminal」を公開しています。

同氏が紹介した方法は以下の通りです。

目次

ターミナルから効率良く検索

ターミナルから検索するためのツールや方法として以下のものがリストアップされています。

  • 文字列を探すgrep。指定された文字列にマッチする行を表示する。
    ❯ grep -i atuin **/*.nix
  • モダンなgrepの代替ツールripgrep。指定ディレクトリ以下に含まれるファイルを素早く検索することができる。
    ❯ rg atuin
    
  • rgas-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の出力を見やすくすることができる。
    Git log delta
  • ファイル名で検索するfindfd。findを使ってファイル名でファイルを探すことができる。fdはfindのモダン版。
    find . -name "*atuin*.nix"
    ./home-manager/modules/atuin.nix
    
  • シェル履歴から検索するatuinatuinはシェル履歴をSQLiteデータベースに保存することができるツール。あいまい検索や他のマシンとの同期も可能。
    S 20240223 135946
  • ワーキングディレクトリを変更するzoxide。ディレクトリの変更を支援する小さなユーティリティで、頻繁に訪れるディレクトリを保存し、フルパスを覚えていなくてもジャンプできるようにする。
    z ripgrep
    
  • ディスクスペースを消費しているモノを探す。ncduを使わなくてもduコマンドでもファイルを探すことができる。dustはそのモダン版。
    du -h ~ | sort -hr | head -n 10
    

個人的には知っているものもあれば、as-tgreeやdelta、zoxide、dustなど知らないものもありました。全てを一度に覚えるのは大変ですので、気になるものから少しづつ試していくと良さそうです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次