Bash機能でパスの完成を完了する方法

Bash機能でパスの完成を完了する方法

私はいくつかの記事を読んでいますが、bashスクリプトについては知らず、必要なことをすることはできません。私が試したようにこの投稿

次の機能があります.bash_alias。サーバーフォルダにCDを移動するだけです。

html() {
  cd /var/www/html/$1
}

だからコマンドがhtml myapp実行されますcd /var/www/html/myapp。次のステップに行きたいです。

html my<TAB>フォルダをハードコードせずにオートコンプリートするようにしたいですhtml myapp 。一般的な基本的なオートコンプリート動作が必要です。名前がmyで始まる複数のフォルダがある場合は、フォルダを一覧表示することもできます。ご案内ください。

ベストアンサー1

完成関数を作成する必要があります(通常は名前をとして指定します_html)。次に、html組み込み関数を使用して関数をコマンドに関連付けますcomplete

_html() {
    local cur prev words cword
    _init_completion || return
   COMPREPLY=($(cd /var/www/html && compgen -o dirnames -- "$cur"))
}

complete -F _html html

(注:_init_completionに定義されており/usr/share/bash-completion/bash_completion、直接または経由でインポートされたとします/etc/bash_completion。)

おすすめ記事