12.04マシンで使用したエイリアスがたくさんあります。
例:
alias pssh="tsocks ssh"
alias pscp="tsocks scp"
alias prdp="tsocks xfreerdp ..........SOMETHING ...."
これらのエイリアスは、通常のLinuxコマンド(scp、ssh ect。)を変更したものであるため、これらのエイリアスには、元のエイリアスと同じオートコンプリートルールを設定する必要があります。通常のコマンドのルールはまったく問題ないので、独自のルールを作成したくありません。
12.04では、以下が完全に機能しました。
complete -F _ssh pssh
complete -F _scp pscp
complete -F _ssh prdp
これは14.04では機能しません。オートコンプリートしようとすると、次のエラーが発生します。
bash: completion: function `_ssh' not found
psshを試す前にsshでオートコンプリートすると、すべてが機能します。私の知る限り、オートコンプリートルールは使用される前に読み込まれないためです。sshのオートコンプリートルールが読み込まれるまで、私のルールは無効であり、エラーが発生します。
これを修正するにはどうすればよいですか、通常のLinuxコマンド用に定義されたオートコンプリートルールにエイリアスを正しくフックするにはどうすればよいですか?
新しいbash完了リリース(> = 2.0)は、オートコンプリートロジックのロードに使用される時間を大幅に改善しました。彼らは要求に応じて必要なファイルをロードすることによってそれらを作成しました、これらのファイルの新しい場所は次のとおりです:
/ usr / share / bash-completion / completes /
ls -lahを使用してそのようなディレクトリを探索すると、多くのソフトリンクが存在するよりもわかります。これは、すべてのコマンド/エイリアスにファイルが必要なためです。したがって、pssh、pscp、およびprdpがある場合は、これらの名前でリンクを作成する必要があります。
sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/psss
sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/pscp
sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/prdp
もう1つの方法は、sshオートコンプリートファイルを/etc/bash_completion.d/にsyslinkすることです。
sudo ln -s /usr/share/bash-completion/completions/ssh /etc/bash_completion.d/ssh
前者の方法では、すべてのbashインタラクティブセッションで_ssh関数が読み込まれます(起動が遅くなります)。
上記の方法のいずれかを使用した後、complete -F _ssh pssh ...
構成は_ssh関数をエイリアスに関連付けます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加