web-dev-qa-db-ja.com

ターミナルのファイル名の中央での部分一致の自動補完(ダッシュ/バッシュ)

たくさんのディレクトリがあります:

20130118-Cars_Directory
20130118-Bikes_Directory
20130218-Planes_Directory
20130228-Scooters_Directory

コマンドの途中で部分一致を入力する方法でディレクトリを変更する方法はありますか。

理想的には、cd *Bikes*<TAB>、およびダッシュは残りをオートコンプリートしていますか?

5
somethis

実際、偶然にも、cd *Bikes*<RETURN>はシステムに変更を加えなくても機能することがわかりました。

*Bikes*の周りに引用符が必要ないことに少し驚いています。

3
somethis

これを行うには、cdのエイリアスを作成し、bash補完を自由に定義します。 Bach Completion manual を参照してください。

ここにステップバイステップガイドがあります。新しいコマンドには「scd」を使用しますが、「cd」も使用できます。

1).bashrcファイルの編集

gedit ~/.bashrc  

2)エイリアスの作成
「。bashrc」ファイルの最後にこれを貼り付けます:

# Alias for making a "Super cd"

alias scd="cd"

_scd_completion() {
    mapfile -t COMPREPLY < <(ls -d */ | grep "${COMP_WORDS[COMP_CWORD]}")
}
complete -F _scd_completion scd

保存して閉じます。

3)新しいターミナルを開く
または実行:source ~/.bashrc

4)使用方法

コマンドを呼び出してから、移動するディレクトリの名前の一部を呼び出すだけです。

scd Bikes<TAB>

できた楽しい!

5
desgua

z と呼ばれるツールを使用してみてください。必要なものが許可され、さらに周波数によって重み付けされたcdのグローバルデータベースが作成され、頻繁にアクセスした場所に瞬時にジャンプできます。

Bikesディレクトリにアクセスした場合は、後で入力できます

z Bikes

あなたはそこにジャンプします

1
ganqqwerty