シェルを強化するRust製ツール
はじめに
この資料は、シェルを強化するためのツールを紹介しています。
次の基準で選定しています。
ライセンスが明記されていること
どれほど素晴らしいものでも、ライセンスが明記されていないものは使えないと考えています。
README.md で例示されているものが正常に動作すること
ほんの少し個人的な好み
Rustの環境構築やツールのインストール方法については以下を参照してください。
外部のbashスクリプトをインポートする bash_bandler
bash_bandler は、複数のbash スクリプトを1つのファイルにバンドルするためのツールです。デフォルトでは、他のbashファイルをインクルードするために、# import ./filename.sh 構文を使用します。しかし、すでに存在する source ./filename.sh 構文を使用するように設定することもできます。
PATH設定が楽になる pad-path
直感的に$PATHを変更するツールです。
echo / printf 代替ツール rout
出力先(stdout/stderr/tty)を直接指示できたり、繰り返しや特定時間ポーズして表示させたりすることができます。
シェルで文字列をカラー出力する dye-cli
dye-cli は、シェルで文字列をカラー出力するためのシンプルで使いやすいCLIツールです。コマンド名は dye です。
標準入力を文字列としてエスケープする esc
esc は、標準入力を文字列としてダブルクォート(”…”)エスケープするシンプルなCLIツールです。
screen 代替ツール zellij
zellij は GNU screen の代替ツールで、画面分割などの操作も圃場に操作しやすく便利なツールです。
ターミナルを共有できる teleterm
ターミナルを共有したり、録画、再生できるCLIツールです。
クロスプラットフォームなクリップボードツール bp
bp はクロスプラットフォームなクリップボードツールです。コピーかペーストかを自動的に判断することができ、パイプで動作するように最適化されています。動作は tee コマンドをベースにしています。
CLIでクリップボードにコピー&ペースト pbutil
Linux などで pbcopy と pbpaste に相当するものがないことにうんざりしていませんか?
pbutil は、macOSの pbcopy と pbpaste と同じインターフェイスを他のプラットフォームでも使えるようにするためのものです。
標準入力のデータをクリップボードにコピーするコマンドです。 コピーした内容はいつもどおりの方法でペーストできます。(マウスでの paste や cmd+v など)
クリップボードの内容をリモートに送信 copiepate
Copiepate はクリップボードの内容をリモートで設定するための小さなユーティリティです。
標準入力にタイムスタンプを付加するtimestamp
標準入力にタイムスタンプを付加するための小さなCLIツールです。デフォルトでは’%c’ の書式ですが任意の記述子を与えることができます。
ファイルや標準入力の単語をカラー表示 colorizer
ファイルや標準入力から定義した単語をカラー表示するツールです。正規表現が使え、事前定義した複数のプロファイルから選択することができます。
パイプ入力をフィルタ/マップする fpipe
fpipeは、シェルのパイプ入力をフィルタリングやマッピングを行うことができるツールです。
カラー表示フィルター pipecolor
pipecolor は、出力をカラー化するためのフィルタコマンドです。カラーリングのルールを正規表現でカスタマイズすることができます。
カラー表示フィルター pipeview
コ正規表現と色を入力引数としてパイプ入力をカラー表示することが簡単にできるツールです。
pv 代替ツール pv
pvはUnixのパイプ監視アプリケーションです。Linux の pv のクローンです。
プログレスバーや、少なくとも流量計があると便利なユースケースで使うと便利です。
コマンドラインパイプ構築ツール pipr
PiprはRustで書かれたコマンドラインパイプ構築ツールです!
Pipr はバックグラウンドで編集中のパイプラインを自動的に評価し、その結果を表示することができます。これにより、 sed や awk を連携させた複雑なパイプ処理を書く作業がとても簡単になります。
すべてのテキストファイルを削除するために rm ./*.txt とタイプしても、すでに rm ./* で実行されていて、作業ディレクトリのすべてのファイルを削除してしまうことを想像してみてください。 Pipr は bubblewrap によって、あなたのコマンドを分離して読み取り専用の環境で実行し、安全に使用できるようにしています。このため、安心して使用することができます。
パイプ処理の進捗状況を表示 pipeprogress
pipeprogress は、パイプ処理で長い操作中の進捗状況を表示するためのCLIツールです。
ユーザ確認後に出力するフィルタ ays
ays は、標準入力を標準出力に送る前に、ユーザに確認を求めます。ユーザが確認に成功しなかった場合、ays は標準出力に EOF を書き込みます。
tee 代替ツール ctee
標準入力からANSIカラーシーケンスを除去する tee の代替ツールです。
tee 代替ツール pipetee
stdinの内容をターミナルに出力し、同時にstdoutに転送する、シンプルで高速なCLIツールです。
tee 代替ツール rustee
rustee は、UNIX の tee コマンドの機能を拡張したCLIツールです。
シェルヒストリを強化する atuin
Atuin は、既存のシェル履歴を SQLite データベースに置き換え、コマンドのコンテキストを追加で記録します。さらに、Atuin サーバを経由して、マシン間で履歴を完全に暗号化して同期させることもできます。
ポータブルで拡張可能な履歴マネージャ pxh
pxh は、対話型シェルやその他の REPL ツール用の、ポータブルで拡張可能な履歴マネージャです。
pxh の仕事は、シェルの履歴という最も貴重な知識保管庫を追跡するための、信頼できる控えめな永続性と検索エンジンになることです。pxh は既存の履歴ファイルを読み込むことができ、コンピュータ間で一貫したオンデマンド同期を提供します。
コマンド名は、Portable, eXtensible History manager に由来しています。
インテリジェントなシェル履歴検索をする mcfly
McFly は、デフォルトの ctrl-r シェル履歴検索を、作業ディレクトリと最近実行したコマンドのコンテキストを考慮したインテリジェントな検索エンジンに置き換えます。McFlyの提案は、小さなニューラルネットワークでリアルタイムに優先順位を付けられます。
zsh の履歴管理を改善する hstdb
hstdb は、[zsh-histdb](<https://github.com/larkery/zsh-histdb>) のアイデアをベースにしたZshのコマンド履歴管理を改善するためのCLIツールです。複数マシンで履歴を同期させることも簡単です。
ディレクトリ移動の支援ツール zoxide
Zoxide は、z と autojump に触発された、よりスマートな cd コマンドです。
頻繁に使うディレクトリを記憶するので、ほんの数回のキーストロー クでそのディレクトリに「ジャンプ」することができます。 zoxide はすべての主要なシェルで動作します。
ディレクトリ移動を簡単にする prtl
ディレクトリをタグして管理するシンプルなCLIツールです。
コマンド実行時にだけディレクトリを移動する hike
あるコマンドを別のディレクトリで実行したいと思ったことはないだろうか。その場合、そのディレクトリにcdで移動し、コマンドを実行した後、元のディレクトリにcdで戻らなければなりません。
hike は、指定したディレクトリに移動して、コマンドを実行し、戻ってくるシンプルなCLIツールです。
ターミナルファイルブラウザ tere
クロスプラットフォームで動作するターミナルファイルブラウザです。tere は、ディレクトリに効率的に移動するための TUI を提供し、終了時にそのフォルダのパスを表示するシンプルなツールです。出力されたディレクトリに cd するようにシェルを設定すれば、ファイルシステム内を非常に速く移動することができます。
ファイルツリー表示 broot
brootはディレクトリツリーの表示や移動、プレビューなどができるツールです。マウス操作もサポートしています。
ファイルマネージャー felix
Vim ライクなキーマッピングを持つ tui ファイルマネージャです。 高速で、シンプルで、設定や利用が簡単です。
ファイルマネージャー xplr
xplr はターミナル UI ベースのファイルエクスプローラです。カスタマイズが可能で他のコマンドラインユーティリティと柔軟に連携することができ、ターミナルでの作業の生産性を向上させることができます。
ファジーファインダー skim
skim は、ファイル、行、コマンドなどのナビゲーションに費やされる時間を短縮するためのファジーファインダーです。ライブラリとしても使用することができます。
ファジーファインダー scout
find などの出力を非同期で取り込み文字列を指定して絞り込むことができるツールです。
ファジーセレクタ heatseeker
Heatseekerは、Gary Bernhardt氏のselectaという汎用ファジーセレクタをRustで書き直したCLIツールです。
CLI出力からファイルパスを記憶し再利用する ea-command
eaは、CLI出力からファイルパスを記憶し、再利用することができCLIツールです。find、rg、clangなどnのファイルのパスを出力するようなCLIツールと組み合わせて使用すると便利です。
モダンで柔軟なクロスプラットフォームシェル nu
nu は、モダンで柔軟なクロスプラットフォームシェルです。JSON、TOML, YAMLなどの構造化ファイルへの変換も簡単になります。
軽快なスニペットマネージャー oxio
Oxioは、boomに触発された小さなスニペットマネージャーです。URL、返信定型文、重要なメモなどのテキストを隠しておき、すぐにクリップボードにコピーして貼り付けられるようにすることができます。
現在のディレクトリを暗号化する wdcrypt
wdcrypt は、現在の作業ディレクトリをFernet暗号で暗号化するためのCLIツールです。[Fernet](<https://cryptography.io/en/latest/fernet/>) は秘密鍵型暗号の実装で、鍵がなければディレクトリにアクセスできなくなることを保証します。
stdin/stdoutを前提にしたコマンドをファイルに読み書きさせる o-o
o-o は、コマンドラインで指定されたファイルに対して読み書きを行うコマンドを、標準入出力を前提とした動作を有効にするためのCLIツールです。
ファイルが変更されるとコマンドを自動実行する fwatcher
fwatcher は、ディレクトリやファイルを監視してコマンドを自動的に実行することができるCLIツールです。ライブラリとして利用することもできます。ZoomやGoogle Meets などのリモート会議を録画させておき、録画ファイルが生成されたタイミングで、文字起こしや議事録作成などの作業を自動化させるときなどにも使用することができます。