こんちくわー
今日は10年ぶりくらいに元々髪を切ってもらっていた美容師さんのところに行って髪を切ってもらいました〜
いや〜久々に会うとニュースが色々あって面白いものですねぇ〜
ではでは、今回は オデのお気に入りモダンCLIコマンド✨ の紹介です!
みなさんCLIコマンドって使いますか?
GUI(Graphical User Interface)で色々操作する方もいるとは思いますが、CUI(Character User Interfaceは慣れるとGUIよりも操作が早くなるケースが多いこともありますよ!
繰り返し処理とかはCLIの方が優れていると思いますね!
とか、エビデンス残しとか、出力結果をAIに渡したりといろいろ便利ですね
あとかっこ良い!笑
それだけではなく、bash, zshなどの知識が深まりますよ!
では紹介にまいります!
基本的にはbrew install でインストールできるかと!
お気に入りコマンド一覧
lsd
たぶん一番使っている。
こんな感じでalias設定を.zshrcにしています。
alias l='lsd -l'
alias tree='lsd --tree'
考え中のときは、「l」を連打してしまい、画面がファイル一覧になります笑
ファイル一覧が既存のlsより見やすいです!
オプションはこちら
lsd.md
(こんな使いこなしていない)
オプション一覧
| オプション | 日本語説明 |
|---|---|
-a, --all |
. で始まるファイル(隠しファイル)も表示する |
-A, --almost-all |
. と .. を除き、隠しファイルを表示する |
--classic |
クラシックモード(色・アイコンなし)で表示 |
-L, --dereference |
シンボリックリンク自体ではなく、リンク先の情報を表示 |
-d, --directory-only |
ディレクトリ自身のみ表示(--tree使用時は再帰的) |
-X, --extensionsort |
拡張子でソート |
--git |
Gitステータスを表示(ディレクトリは再帰的に集約表示) |
--help |
ヘルプを表示 |
-h, --human-readable |
サイズを人間に読みやすい形式で表示(現在はデフォルト) |
--ignore-config |
設定ファイルを無視する |
--config-file <path> |
カスタム設定ファイルを指定 |
-F, --classify |
ファイル名の末尾に識別記号(*/=>@ |
-i, --inode |
inode番号を表示 |
-l, --long |
詳細情報をテーブル形式で表示 |
--no-symlink |
シンボリックリンクのリンク先を表示しない |
-1, --oneline |
1行につき1エントリ表示 |
-R, --recursive |
ディレクトリを再帰的に表示 |
-r, --reverse |
ソート順を逆にする |
-S, --sizesort |
サイズでソート |
-t, --timesort |
更新日時でソート |
--total-size |
ディレクトリの合計サイズを表示 |
--tree |
ツリー形式で再帰表示 |
-V, --version |
バージョン情報を表示 |
-v, --versionsort |
バージョン番号を自然順でソート |
--blocks <blocks> |
表示する項目と順序を指定(permission, user, group, size, date, name, inode, git) |
--color <when> |
色の使用タイミング指定(always, auto, never) |
--date <format> |
日付表示形式指定(date, locale, relative, +format) |
--depth <num> |
指定した深さまで再帰表示 |
--group-dirs <mode> |
ディレクトリとファイルの並び順制御(none, first, last) |
--group-directories-first |
ディレクトリを先に表示(--group-dirs=firstと同じ) |
--hyperlink <when> |
ファイル名にハイパーリンク付与(always, auto, never) |
--icon <when> |
アイコン表示制御(always, auto, never) |
--icon-theme <theme> |
アイコンテーマ指定(fancy, unicode) |
-I, --ignore-glob <pattern> |
指定したglobパターンに一致するファイルを非表示 |
--permission <mode> |
パーミッション表示形式指定(rwx, octal, attributes, disable) |
--size <mode> |
サイズ表示形式指定(default, short, bytes) |
--sort <WORD> |
指定項目でソート(size, time, version, extension, git) |
-U, --no-sort |
ソートしない(ディレクトリ順) |
-Z, --context |
SELinux / SMACK のセキュリティコンテキスト表示 |
--header |
ブロックヘッダーを表示 |
-N, --literal |
ファイル名をクォートせずそのまま表示 |
--truncate-owner-after <num> |
ユーザー/グループ名を指定文字数で切り詰める |
--truncate-owner-marker <str> |
切り詰め時に付与するマーカー指定 |
使用例
# ファイル一覧
$ l
.rw-rw-r-- koji koji 3.5 KB Mon Dec 8 02:02:39 2025 channel.go
.rw-rw-r-- koji koji 120 B Mon Dec 8 01:45:10 2025 go.mod
.rw-rw-r-- koji koji 1006 B Mon Dec 8 01:45:10 2025 go.sum
# コピーして、vimで矩形選択でファイルのみ抜き取り
channel.go
go.mod
go.sum
# こんな感じにvimで色々やれます
cat channel.go >> test.log
cat go.mod >> test.log
cat go.sum >> test.log
元々はexaというファイル表示コマンドを使用していたのですが、開発停止になってしまったため、lsdに移行しました。
ただ、ときが経ちezaコマンドが現在主流みたいですね!
明日使ってみよう
rg
GitHub
rgはripgrepの略で、ファイル内の文字列を高速に検索するコマンドです。
オプション一覧
INPUT OPTIONS
| オプション | 説明 |
|---|---|
-e, --regexp=PATTERN |
検索パターンを指定(複数可) |
-f, --file=PATTERNFILE |
パターンをファイルから読み込む |
--pre=COMMAND |
各ファイルを前処理コマンド経由で検索 |
--pre-glob=GLOB |
--pre を適用するファイルをglobで制限 |
-z, --search-zip |
圧縮ファイルを展開して検索 |
SEARCH OPTIONS
| オプション | 説明 |
|---|---|
-s, --case-sensitive |
大文字小文字を区別(デフォルト) |
-i, --ignore-case |
大文字小文字を無視 |
-S, --smart-case |
小文字のみならignore-case |
-F, --fixed-strings |
正規表現ではなく文字列検索 |
-P, --pcre2 |
PCRE2エンジン使用 |
--engine=ENGINE |
正規表現エンジン指定 |
-v, --invert-match |
マッチしない行を表示 |
-w, --word-regexp |
単語単位で一致 |
-x, --line-regexp |
行全体一致のみ |
-m, --max-count=NUM |
ファイルごとの最大一致行数 |
-U, --multiline |
複数行にまたがる検索 |
--multiline-dotall |
. が改行にも一致(multiline時) |
--no-unicode |
Unicodeモード無効 |
--null-data |
行区切りをNULに変更 |
--regex-size-limit=NUM |
正規表現サイズ上限 |
--dfa-size-limit=NUM |
DFAサイズ上限 |
--stop-on-nonmatch |
非一致行でそのファイルの検索停止 |
-a, --text |
バイナリをテキストとして検索 |
-j, --threads=NUM |
スレッド数指定 |
--crlf |
CRLFを改行として扱う |
FILTER OPTIONS
| オプション | 説明 |
|---|---|
-g, --glob=GLOB |
globで含める/除外 |
--iglob=GLOB |
大文字小文字無視glob |
-., --hidden |
隠しファイルも検索 |
--binary |
バイナリも検索 |
-L, --follow |
シンボリックリンクを辿る |
-d, --max-depth=NUM |
検索深さ制限 |
--max-filesize=NUM |
指定サイズ以上を除外 |
--no-ignore |
ignoreを無視 |
--no-ignore-vcs |
VCS ignoreを無視 |
--no-ignore-parent |
親ディレクトリignoreを無視 |
--ignore-file=PATH |
追加ignoreファイル指定 |
--one-file-system |
別ファイルシステムへ跨がない |
-t, --type=TYPE |
指定タイプのみ検索 |
-T, --type-not=TYPE |
指定タイプを除外 |
--type-add=TYPESPEC |
タイプ定義追加 |
--type-clear=TYPE |
タイプ定義削除 |
-u, --unrestricted |
フィルタ制限を段階的に解除 |
OUTPUT OPTIONS
| オプション | 説明 |
|---|---|
-n, --line-number |
行番号表示 |
-N, --no-line-number |
行番号非表示 |
--column |
列番号表示 |
-H, --with-filename |
ファイル名表示 |
-I, --no-filename |
ファイル名非表示 |
-A, --after-context=NUM |
後続NUM行表示 |
-B, --before-context=NUM |
前NUM行表示 |
-C, --context=NUM |
前後NUM行表示 |
-o, --only-matching |
一致部分のみ表示 |
-c, --count |
一致行数表示 |
--count-matches |
一致回数表示 |
-l, --files-with-matches |
一致ファイルのみ表示 |
--files-without-match |
不一致ファイルのみ表示 |
--json |
JSON形式出力 |
--pretty |
見やすい出力(color+heading+line-number) |
-q, --quiet |
出力しない(終了コードのみ) |
-r, --replace=TEXT |
一致部分を置換表示 |
--sort=KEY |
結果を昇順ソート |
--sortr=KEY |
結果を降順ソート |
--trim |
行頭空白削除 |
--vimgrep |
vim互換形式出力 |
-0, --null |
ファイル名後にNUL出力 |
--stats |
検索統計表示 |
OTHER
| オプション | 説明 |
|---|---|
--files |
検索対象ファイル一覧のみ表示 |
--type-list |
サポートタイプ一覧表示 |
--generate=KIND |
manページや補完スクリプト生成 |
--no-config |
設定ファイルを読まない |
--debug |
デバッグ出力 |
--trace |
詳細トレース出力 |
-V, --version |
バージョン表示 |
-h, --help |
ヘルプ表示 |
使用例
このように置換するコマンドを実施することができます!よく使います!
-l はマッチしたファイルのみ表示するオプションです。
rg -l "hello"
a.txt
b.txt
# a.txtとb.txtの両方にhelloをhiに置換!
rg -l "hello" | xargs sed -i 's/hello/hi/g'
bat
bat は、従来の cat コマンドにシンタックスハイライトや Git 連携などの強力な機能を追加した、Rust製のCLIツールです。
- 主な特徴
- シンタックスハイライト: 多数のプログラミング言語やマークアップ言語に対応。
- Git 連携: ファイルの変更箇所(追加・修正・削除)を左端のマーカーで表示。
-
不可視文字の表示:
-Aオプションでタブや改行などの制御文字を可視化。 -
自動ページング: 出力が画面に収まらない場合、自動的に
less等のページャーを起動。 - cat 互換: 他のプロセスへパイプしたりファイル出力したりする際は、自動で装飾なしのプレーンなテキストを出力。
- 便利な使い方
-
単一・複数ファイルの表示:
bat file1.md file2.md -
標準入力のハイライト:
curl -s [URL] | bat -l json(-lで言語指定可能) -
他ツールとの統合:
-
fzfのプレビューウィンドウとして使用。 -
findやfdの実行結果をbatでプレビュー。 -
manページのカラー表示用ページャーとして設定。 -
tail -fと組み合わせてログをリアルタイムに色付け監視。
-
- カスタマイズ
-
テーマ変更:
bat --list-themesで利用可能なテーマを確認。 -
環境変数:
BAT_THEMEを設定することで、デフォルトの配色を変更可能(例:TwoDark)。 - 設定ファイル: 詳細な動作オプションを固定したい場合は、設定ファイルを利用。
このようにするくらいお気に入りです!!
export BAT_STYLE="header,grid"
export BAT_THEME="TwoDark"
alias b=`bat`
オプション
| オプション | 和訳 |
|---|---|
-A, --show-all
|
空白/タブ/改行などの非表示文字を表示する(タブ幅は --tabs で調整) |
--nonprintable-notation <notation> |
--show-all 時の非表示文字の表記方法を指定(caret= ^G のような表記 / unicode= Unicode記号) |
--binary <behavior> |
バイナリ内容の扱い(no-printing=出力しない(既定) / as-text=テキストとして扱う) |
--file-name <name>... |
表示上のファイル名を指定(stdinから流したときの表示名&シンタックス判定にも使う) |
--tabs <T> |
タブ幅を Tスペースにする(0でタブをそのまま通す) |
--wrap <mode> |
折り返し方法(auto(既定), never, character)。幅は --terminal-width でも調整可 |
-S, --chop-long-lines
|
画面幅より長い行を切り詰める(--wrap=never の別名) |
--terminal-width <width> |
端末幅を手動指定(+N/-N で実際の幅へのオフセット指定も可) |
-u, --unbuffered
|
非バッファで読み込み(ストリーム向け)。このモードでは行番号は自動で無効、ハイライトは部分行で崩れる可能性あり |
--quiet-empty |
入力が空なら何も出力しない(スクリプト向け) |
シンタックス(言語)・テーマ
| オプション | 和訳 |
|---|---|
-l, --language <language>
|
シンタックスハイライトの言語を明示指定(言語名 or 拡張子で指定可)。一覧は --list-languages
|
-L, --list-languages
|
対応言語(言語名/拡張子)一覧を表示 |
-m, --map-syntax <glob:syntax>...
|
globパターンを既存シンタックス名に割り当て(例: *.build:Python)※右側は拡張子ではなくシンタックス名
|
--ignored-suffix <suffix> |
指定した拡張子を無視して判定(例: .json.dev を JSON として扱うため .dev を無視) |
--theme <theme> |
テーマ指定(一覧は --list-themes)。既定は auto(端末の色からdark/lightを選ぶ) |
--theme-dark <theme> |
端末がダーク背景のときに使うテーマ名(--theme=auto/dark のとき有効) |
--theme-light <theme> |
端末がライト背景のときに使うテーマ名(--theme=auto/light のとき有効) |
--list-themes |
テーマ一覧を表示 |
--theme の特別値
-
auto(既定): 端末の色から dark/light を自動選択(--theme-dark/--theme-lightで中身を指定できる) -
auto:always: リダイレクト時も端末色を検出して自動選択 -
auto:system(macOSのみ): システム設定の外観(ライト/ダーク)から選ぶ -
dark:--theme-darkを使う -
light:--theme-lightを使う
強調・差分・行範囲
| オプション | 和訳 |
|---|---|
-H, --highlight-line <N:M>...
|
指定した行(範囲)を背景色で強調表示(例: 40, 30:40, :40, 40:, 30:+10) |
-d, --diff
|
Git index(ステージ)との差分として変更行だけ表示(追加/削除/変更) |
--diff-context <N> |
--diff で変更行の前後 N行を一緒に表示 |
-r, --line-range <N:M>...
|
指定した行範囲だけ出力(例: 30:40, :40, 40:, 30:+10) |
スタイル(装飾)・色・装飾の出し分け
| オプション | 和訳 |
|---|---|
-p, --plain
|
装飾なしのプレーン表示(--style=plain)。-pp で自動ページングも無効化(--paging=never) |
-n, --number
|
行番号だけ表示(--style=numbers の別名) |
--style <components> |
表示要素(行番号/ヘッダ/グリッド/Git差分など)を指定。カンマ区切り or full 等のプリセット |
--color <when> |
色の使用タイミング(auto(既定), never, always) |
--italic-text <when> |
斜体のANSIシーケンス使用(always / never(既定)) |
--decorations <when> |
--style で指定した装飾をいつ出すか(auto(既定), never, always) |
-f, --force-colorization
|
--decorations=always --color=always の別名(パイプしても色/装飾を維持) |
-s, --squeeze-blank
|
連続する空行を1行にまとめる |
--squeeze-limit <N> |
連続空行の最大表示数を指定 |
--strip-ansi <when> |
入力中のANSIエスケープを除去するタイミング(auto, always, never(既定)) |
--style の既定値(デフォルトで有効)
changes, grid, header-filename, numbers, snip
--style の主な指定値
-
default,full,auto,plain -
changes,header,header-filename,header-filesize,grid,rule,numbers,snip
ページャ(less等)
| オプション | 和訳 |
|---|---|
--paging <when> |
ページャを使うタイミング(auto(既定), never, always)。-P は --paging=never の別名 |
--pager <command> |
使用するページャを指定(既定は less)。--pager=builtin で内蔵 minus を使う |
補完・設定/キャッシュ・情報
| オプション | 和訳 |
|---|---|
--completion <SHELL> |
シェル補完を出力(bash/fish/zsh/ps1) |
--no-custom-assets |
カスタムアセット(追加テーマ/シンタックス等)を読み込まない |
--config-dir |
設定ディレクトリの場所を表示 |
--cache-dir |
キャッシュディレクトリの場所を表示 |
--diagnostic |
バグ報告用の診断情報を表示 |
--acknowledgements |
謝辞を表示 |
--set-terminal-title |
ページャ使用時に端末タイトルをファイル名に設定 |
-h, --help
|
ヘルプ表示 |
-V, --version
|
バージョン表示 |
位置引数
| 引数 | 和訳 |
|---|---|
<FILE>... |
表示するファイル群。- または引数なしで stdin を読む |
サブコマンド
| サブコマンド | 和訳 |
|---|---|
cache |
シンタックス/テーマのキャッシュを操作(例: cache --build / cache --clear) |
よく使うのが、こちらで検索したファイルをbatで表示するコマンドですね!
# fdコマンドでファイルを検索して、batで表示する例
fd go.mod | xargs bat
fd
fd は、Rustで書かれたファイル検索ツールです。標準的な find コマンドよりも高速で、使いやすさを重視した設計になっています。
- 主な特徴
-
直感的な構文:
find -iname '*PATTERN*'の代わりにfd PATTERNと入力するだけで検索可能。 - 高速: 並列ディレクトリトラバーサル(走査)により、非常に高速に動作。
-
スマートデフォルト: * デフォルトで隠しファイルを無視。
-
.gitignoreにあるパターンを自動的に除外。 - カラー出力によりファイルタイプを視覚的に区別。
-
- スマートケース: 検索語がすべて小文字なら大文字小文字を区別せず、大文字が含まれれば区別する設定。
-
正規表現・正規表現ベース: デフォルトで正規表現を使用でき、
-gオプションでグロブ形式もサポート。
- 基本的な使い方
-
単純検索:
fd netflix(カレントディレクトリから "netflix" を含むファイルを検索) -
拡張子指定:
fd -e md(Markdownファイルのみを検索) -
特定ディレクトリの検索:
fd passwd /etc -
隠しファイル・無視ファイルも含める:
fd -H(隠しファイル)、fd -I(gitignore無視を無効)
- コマンド実行(-x / -X オプション)
検索結果に対して外部コマンドを実行できます。
-
並列実行 (-x):
fd -e zip -x unzip(見つかったzipを個別に解凍) -
一括実行 (-X):
fd -e cpp -X vim(見つかった全てのcppファイルを一つのvimインスタンスで開く) -
プレースホルダ:
{}(パス)、{.}(拡張子なしパス)、{/}(ファイル名のみ) などを使用して、複雑なリネームや変換が可能。
- find との主な違い
-
findはデフォルトで全てを検索しますが、fdは「ユーザーが通常探したいもの(隠しファイルやビルド成果物以外)」を素早く見つけることに特化しています。 - コマンド名が短く(
fdvsfind)、タイピング効率が良い。
オプション
無視ルール(hidden / ignore)
| オプション | 和訳 |
|---|---|
-H, --hidden
|
隠しファイル/ディレクトリも含める(既定は除外)。--no-hidden で戻せる |
-I, --no-ignore
|
.gitignore/.ignore/.fdignore/グローバルignore等で無視されるものも表示(--ignore で戻せる) |
-u, --unrestricted
|
無制限検索(無視+隠しも含める)。--hidden --no-ignore の別名 |
--no-ignore-vcs |
gitignore(.gitignore 等)による無視をしない(--ignore-vcs で戻せる) |
--no-require-git |
Gitリポジトリ外でもgitignore系を尊重する(既定はGitリポジトリ内でのみ尊重) |
--no-ignore-parent |
親ディレクトリ側のgitignoreによる無視をしない |
大文字小文字・パターン種別(regex / glob / literal)
| オプション | 和訳 |
|---|---|
-s, --case-sensitive
|
大文字小文字を区別(既定はスマートケース) |
-i, --ignore-case
|
大文字小文字を無視 |
-g, --glob
|
正規表現ではなく glob で検索(--full-path と併用で ** が複数階層にマッチ) |
--regex |
正規表現検索(既定)。--glob を上書きするために使える |
-F, --fixed-strings
|
正規表現ではなく 文字列そのままで検索(部分一致)。完全一致したいなら --glob も検討 |
--and <pattern> |
追加の必須パターンを足す(全部にマッチする必要あり)。複数指定可 |
パス・表示形式
| オプション | 和訳 |
|---|---|
-a, --absolute-path
|
ルートからの 絶対パスで出力(--relative-path で戻せる) |
-p, --full-path
|
パターンを ファイル名だけでなくフルパスに対してマッチさせる |
-l, --list-details
|
ls -l 風の詳細表示(実質 --exec-batch ls -l 相当+安定ソート等) |
-0, --print0
|
結果の区切りを改行ではなく NUL にする(xargs向け) |
--strip-cwd-prefix [when] |
./ プレフィックスを外す挙動を制御(never/always/auto)。--exec/--exec-batch/--print0 時の安全対策に関係 |
--path-separator <sep> |
出力に使うパス区切り文字を指定(Unixは/、Windowsは\が既定) |
--format <fmt> |
1件ごとの出力テンプレート指定(後述プレースホルダ使用) |
--format / --exec で使えるプレースホルダ
| プレースホルダ | 意味 |
|---|---|
{} |
パス(検索結果のパス) |
{/} |
ベース名(ファイル名) |
{//} |
親ディレクトリ |
{.} |
拡張子なしパス |
{/.} |
拡張子なしベース名 |
{{ |
文字 {
|
}} |
文字 }
|
たどり方(symlink / mount)
| オプション | 和訳 |
|---|---|
-L, --follow
|
シンボリックリンク先のディレクトリも辿る(既定は辿らない)。--no-follow で戻せる |
--one-file-system, --mount, --xdev
|
検索開始と別のファイルシステムへは跨がない(find -xdev 相当) |
--prune |
マッチしたディレクトリには降りない(枝刈り) |
結果数・終了コード
| オプション | 和訳 |
|---|---|
--max-results <count> |
結果数を count に制限して即終了 |
-1 |
1件で即終了(--max-results=1 の別名) |
-q, --quiet / --has-results
|
何も出力せず「見つかったら0 / 無ければ1」で終了(スクリプト向け・早期終了で速い) |
--show-errors |
権限不足・壊れたsymlinkなどの FSエラー表示を有効化 |
深さ(depth)
| オプション | 和訳 |
|---|---|
-d, --max-depth <d>
|
探索深さの上限を d にする(既定は無制限) |
--min-depth <d> |
d 以上の深さの結果だけを出す |
--exact-depth <d> |
深さがちょうど d の結果だけ(--min-depth d --max-depth d の別名) |
タイプ・拡張子・除外
| オプション | 和訳 |
|---|---|
-t, --type <filetype>
|
種別で絞る(複数指定可) |
-e, --extension <ext>
|
拡張子で絞る(複数指定可) |
-E, --exclude <pattern>
|
globで除外(他のignoreより優先。複数指定可) |
--ignore-contain <name> |
指定名を(直下に)含むディレクトリを除外(複数指定可) |
--ignore-file <path> |
.gitignore 形式のカスタム ignore ファイルを追加(優先度は低い) |
--type の値
| 値 | 意味 |
|---|---|
f, file
|
通常ファイル |
d, dir, directory
|
ディレクトリ |
l, symlink
|
シンボリックリンク |
b, block-device
|
ブロックデバイス |
c, char-device
|
キャラクタデバイス |
s, socket
|
ソケット |
p, pipe
|
名前付きパイプ(FIFO) |
x, executable
|
実行可能ファイル(※暗黙に file を含む) |
e, empty
|
空ファイル/空ディレクトリ(※挙動は file/dir 指定の有無で変わる) |
色・リンク・性能
| オプション | 和訳 |
|---|---|
-c, --color <when>
|
色付け(auto=端末出力時のみ(既定)/ never / always) |
--hyperlink [auto|always|never] |
端末エスケープで ファイルへのハイパーリンクを出すか(既定は never) |
-j, --threads <num>
|
スレッド数指定(既定はCPUコア数) |
-S, --size <+-><NUM><UNIT>
|
サイズで絞る(例: +500m / -10ki / 123b) |
--size のUNIT
- 10進:
b, k, m, g, t - 2進:
ki, mi, gi, ti
更新日時・所有者
| オプション | 和訳 |
|---|---|
| `--changed-within <date | duration>` |
| `--changed-before <date | duration>` |
-o, --owner [user][:group]
|
所有ユーザー/グループで絞る(!で除外も可) |
実行(exec)
| オプション | 和訳 |
|---|---|
-x, --exec <command ...>
|
各結果に対してコマンドを実行(並列)。引数終端に \; を使える。プレースホルダ展開あり。未指定なら末尾に {} が暗黙追加 |
-X, --exec-batch <command ...>
|
1回のコマンド実行に全結果を引数として渡す(順序は非決定) |
--batch-size <size> |
-X の1回あたり引数数の上限(0は無制限。OS制限で分割される場合はある) |
その他
| オプション | 和訳 |
|---|---|
-h, --help
|
ヘルプ表示 |
-V, --version
|
バージョン表示 |
-C, --base-directory <path>
|
作業ディレクトリを指定して実行(出力もそれ基準になる) |
--search-path <path> |
位置引数ではなくオプションで探索パスを指定(複数可) |
参考(環境変数/ファイル)
-
LS_COLORS/NO_COLOR:色設定 - グローバルignore:
$XDG_CONFIG_HOME/fd/ignoreまたは$HOME/.config/fd/ignore -
.fdignore:fd専用のignore(--no-ignore-vcsでも効く)
fzf
fzf は、Go言語で書かれた非常に高速でインタラクティブなコマンドライン・ファジーファインダーです。ファイル、コマンド履歴、プロセス、ホスト名など、あらゆるリストを動的に検索・フィルタリングできます。
このコマンドは単体というよりは、複数のコマンドと組み合わせて使うことが多いです。例えば、find や fd でファイルを検索し、その結果を fzf で絞り込んで選択する、といった使い方が一般的です。
.zshrcなどのシェル設定ファイルにエイリアスを追加して、fzfを使用しています!オプションがとにかく多い
alias fzf="fzf --height 70% --layout reverse --info inline --border --preview 'bat --color=always {}' --preview-window '~3' --bind 'ctrl-/:change-preview-window(50%|hidden|)'"
オプション
SEARCH(検索関連)
| オプション | 説明 |
|---|---|
-x, --extended |
拡張検索モード(デフォルト有効) |
-e, --exact |
完全一致モード |
-i, --ignore-case |
大文字小文字無視 |
+i, --no-ignore-case |
大文字小文字区別 |
--smart-case |
スマートケース(大文字含むと区別) |
--literal |
ラテン文字の正規化を無効 |
| `--scheme=default | path |
| `--algo=v1 | v2` |
-n, --nth |
指定フィールドのみ検索対象に |
--with-nth |
表示用フィールド変換 |
--accept-nth |
選択時に出力するフィールド指定 |
+s, --no-sort |
ソートしない |
-d, --delimiter |
フィールド区切り指定 |
--tail=NUM |
メモリ保持件数制限 |
--disabled |
検索を無効化(セレクタとして使用) |
--tiebreak |
同点時の優先順位指定 |
INPUT / OUTPUT
| オプション | 説明 |
|---|---|
--read0 |
NUL区切り入力 |
--print0 |
NUL区切り出力 |
--ansi |
ANSIカラー処理有効 |
--sync |
入力完了後に検索開始 |
--no-tty-default |
TTY取得方法変更 |
GLOBAL STYLE
| オプション | 説明 |
|---|---|
--style |
表示スタイル(default/minimal/full) |
--color |
色設定詳細指定 |
--no-color |
色無効 |
--no-bold |
太字無効 |
--black |
黒背景 |
DISPLAY MODE
| オプション | 説明 |
|---|---|
--height |
高さ指定(%や~で自動調整) |
--min-height |
最小高さ |
--tmux |
tmuxポップアップ表示 |
LAYOUT
| オプション | 説明 |
|---|---|
| `--layout=default | reverse |
--reverse |
上から表示 |
--margin |
外側余白 |
--padding |
内側余白 |
--border |
枠線スタイル指定 |
--border-label |
枠線ラベル |
--border-label-pos |
ラベル位置 |
LIST SECTION
| オプション | 説明 |
|---|---|
-m, --multi |
複数選択 |
--highlight-line |
行全体ハイライト |
--cycle |
循環スクロール |
--wrap |
折り返し |
--raw |
非一致も表示 |
--track |
選択追跡 |
--tac |
入力逆順 |
--gap |
行間追加 |
--freeze-left/right |
固定列指定 |
--scroll-off |
スクロール余白 |
--pointer |
カーソル表示文字 |
--marker |
複数選択マーカー |
INPUT SECTION
| オプション | 説明 |
|---|---|
--no-input |
入力欄非表示 |
--prompt |
プロンプト変更 |
--info |
情報表示スタイル |
--ghost |
ゴーストテキスト |
--separator |
区切り線 |
--filepath-word |
パス単位移動 |
PREVIEW WINDOW
| オプション | 説明 |
|---|---|
--preview |
プレビューコマンド指定 |
--preview-window |
位置・サイズ・挙動指定 |
--preview-border |
プレビュー枠線 |
--preview-label |
プレビューラベル |
--preview-wrap-sign |
折り返し表示記号 |
HEADER / FOOTER
| オプション | 説明 |
|---|---|
--header |
固定ヘッダー表示 |
--header-lines |
入力の先頭N行をヘッダー扱い |
--footer |
フッター表示 |
--header-border |
ヘッダー枠線 |
SCRIPTING
| オプション | 説明 |
|---|---|
-q, --query |
初期クエリ |
-1, --select-1 |
1件なら自動選択 |
-0, --exit-0 |
0件なら即終了 |
-f, --filter |
非対話モード(grep的) |
--print-query |
クエリ出力 |
--expect |
特定キーで終了 |
KEY / EVENT BINDING
| オプション | 説明 |
|---|---|
--bind |
キー/イベントにアクション割当 |
DIRECTORY WALKER
| オプション | 説明 |
|---|---|
--walker |
組み込みディレクトリ探索設定 |
--walker-root |
探索開始ディレクトリ |
--walker-skip |
除外ディレクトリ |
HISTORY
| オプション | 説明 |
|---|---|
--history |
履歴ファイル指定 |
--history-size |
履歴最大数 |
SHELL INTEGRATION
| オプション | 説明 |
|---|---|
--bash |
Bash連携スクリプト出力 |
--zsh |
Zsh連携 |
--fish |
Fish連携 |
ADVANCED
| オプション | 説明 |
|---|---|
--with-shell |
子プロセス実行シェル指定 |
--listen |
HTTPサーバ起動 |
--listen-unsafe |
リモート許可 |
EXTENDED SEARCH 構文
| 構文 | 意味 |
|---|---|
'word |
完全一致 |
^word |
前方一致 |
word$ |
後方一致 |
!word |
否定 |
| ` | ` |
主な環境変数
| 変数 | 意味 |
|---|---|
FZF_DEFAULT_COMMAND |
デフォルト入力コマンド |
FZF_DEFAULT_OPTS |
デフォルトオプション |
FZF_API_KEY |
listen用APIキー |
終了コード
| コード | 意味 |
|---|---|
| 0 | 正常終了 |
| 1 | マッチなし |
| 2 | エラー |
| 130 | Ctrl-C/ESC |
使い方
標準的な ls の出力を fzf に渡し、選択しているファイルの中身を bat でプレビューします。
# カレントディレクトリのファイルをfzfで選択して bat で内容を確認し、選択したファイルを vim で開く例
`
ls | fzf --preview 'bat --color=always --style=numbers -- {}' | xargs -r vim
まとめ
どうでしょうか〜もっとzや、他にもコマンドはあるのですが、今回は特に利用する3つに厳選しました!
コマンドは組み合わせて使うとさらに便利になるので、ぜひ色々試してみてくださいね!
よく見るCLIツール一覧サイトはこちらなので、ぜひ見てくださいね!
https://github.com/agarrharr/awesome-cli-apps
CLIマスターに俺はなる!(ポケモンマスター)
ではでは〜



