私は何年もの間、毎日端末を使用しています。高度にカスタマイズされたデフォルト以外のシェルを使用しています。私はタブ補完を多用し、多くのコマンドのフラグを記憶しています。約1年前まで、端末の生産性のピークを達成したと思っていました。次に、シェルユーティリティの波を発見しました。これは、あいまいですが、端末環境とのやり取りの方法を根本的に変えました。
この記事は、これらの新しいユーティリティ(および、私が以前から知っていて気に入っているいくつかのツール)に関するシリーズの最初の記事です。今日は、ファイルシステム内を移動するための特別なツールについて説明します。
ジャンプアラウンド:z
一般的に使用されるWebサイトの最初の数文字をブラウザに入力し、Enterキーを押して、適切な場所に移動できることを確信してください。同じ経験をあなたの殻に取り入れたらどうなるでしょうか?名前の一部を入力するだけで、一般的に使用されるディレクトリにテレポートできると想像してみてください。それがz
z
シェルスクリプトは、アクセスしたディレクトリとアクセスした日時を追跡します。ディレクトリへのアクセスの頻度とアクセスの最新性を組み合わせて、アクセスの「頻度」を決定します。ディレクトリの名前に2文字を入力すると、z
提供された部分文字列を含む候補を最も高い頻度で選択します。結果は不気味な時間で正しいです。
ここで動作しています:
クイックファクト:
-
bash
/zsh
実装:GitHub fish
実装:GitHub- ライセンス(
bash
/zsh
):WTFPLv2 - ライセンス(
fish
):MIT - 言語:シェルスクリプト
autojump
のような、似たようなツールがたくさんあります。 およびfasd
。それらすべてを試してください!
あいまい検索:fzf
正規表現で物事を検索するのはやり過ぎです。適切な文字が適切な順序で出現するだけで十分な場合があります。 fzf
ユーティリティを使用すると、あいまい一致を簡単に検索できます。このツールは、ファイルシステム内を移動することとどのように関連していますか?お待ちください。表示されます。
デフォルトでは、fzf
stdinで動作するため、grep
のように使用できます :
$ fzf < long-log-file.txt
実例:
fzf
stdinをフィルタリングし、stdoutに出力を送信するように機能します。このツールを使用して、ファイルを検索する以上のことができます。現在のディレクトリの下にあるディレクトリを検索しますか?
$ fzf
それは正しい。 stdinがパイプでない場合は、fzf
その下にあるすべてのファイルを検索し、stdoutで選択したファイルを出力します。これにより、結果をエディターなどの他のコマンドと簡単に組み合わせることができます。
より細かく制御して同じことを実現したい場合は、次のコマンドを実行できます。
$ find . -type d | fzf
fzf
を使用できます 実行して移動するには:
$ cd $(find . -type d | fzf) #bash/zsh
$ cd (find . -type d | fzf) #fish
現在、他にも楽しいアプリケーションがあります。
- 次のコマンドを使用して履歴からコマンドを呼び出します:
$ eval $(history | fzf) #bash/zsh $ eval (history | fzf) #fish
- 現在のディレクトリの下にあるファイルを次のように編集します:
$ $EDITOR $(find . | fzf) #bash/zsh $ $EDITOR (find . | fzf) #fish
- インストールするパッケージを選択します:
$ sudo apt install $(apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | sed 's|([^/]+)/.*|\1|' | fzf) #bash/zsh $ sudo apt install (apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | string split / | fzf) #fish
- 通常、行で区切られたテキストに基づいて選択します。空が限界です!
fzf
ユーティリティには、bash
との既存の統合があります 、zsh
、およびfish
。これらのシェルをインストールする場合は、fzf
「逆インデックス検索」やタブ補完などのワークフローを自然に拡張および拡張します。私はfish
のヘビーユーザーです 統合、私自身。
クイックファクト:
-
fzf
を取得する :GitHub - ライセンス:MIT
- 言語:移動
もっと欲しいですか?
これらのツールが役立つと思われる場合は、今後の記事にご注目ください。待ちきれない場合は、このシリーズは、All ThingsOpen2019で私が行ったこの講演に基づいています。他のツールやトリックを見つけることができます。