scpに対してlocal〜autocompleteを有効にする方法は?

scpに対してlocal〜autocompleteを有効にする方法は?

遅すぎました。問題のマシン、オペレーティングシステム、および構成が廃止されたため、追加の提案を確認することはできません。 FedoraやArch Linuxではこの問題は発生しませんでした。もしあなたこの問題が発生した場合は、他の質問を投稿して設定の詳細を提供してください。

ホームディレクトリからファイルをコピーしようとするたびに、次の問題に直面します。 (チルダ)で始まるパスはscp自動補完されません。 2回~入力して押すとscp ~/確認するのはとても簡単ですTab。ファイル補完は表示されません。たとえば、一意のパスプレフィックスを指定してもscp ~/.bash_hist完了しません。これは意図的に設計されたもの、構成可能なもの、またはバグですか?

明確にするために、タスクを完了する他のすべての部分(リモートホストのホスト名とパス)はすべてうまくいきました。チルダを使用してパスを完成することは、他のコマンドでも機能しますls

非標準の課題を完了するには制限がありますか~?私は/home/users/username他のホストのためのNFS 3マウントを指しています(/home/usernameブラウザプロファイルのように速度が重要なアイテムのため)。私は$HOME/home/users/username)や他の奇妙なものを変えませんでした。

Fedora 19では動作します。Tab結果は以下で完了します。scp ~/foo変えるその後~/home/username正常に完了します。

参考にしてください:質問は〜です。どちらもありませんルートでオートコンプリート情報...でもないリモートで自動的に実行されます。 Bashはインストールが完了した後に正しく動作します。

openssh-client 1:5.9p1-5ubuntu1 および GNU bash バージョン 4.2.24(1)-release(x86_64-pc-linux-gnu) の実行

答え1

Debian Lennyで作業するときは、次の操作を行います。

apt-get install bash-completion

次に、 ~/.bash_profile を使用してローカルで有効にするか、/etc/profile を使用してシステム全体に追加します。以下を貼り付けます。

if [ -f /etc/bash_completion ]; then
 . /etc/bash_completion
fi

答え2

bashがauto-completion行く道のようです。bash-completionパッケージをインストールします。

その後、コマンドへの参照/etc/bash_completion.d/sshが表示されます。scp

答え3

同じ問題が発生しました(価値のあるOS X 10.11、ストックbash 3.2.57、Brewによるbash-completion 1.3)。次のようなこのヒントSSH完了ファイルで、チルダ(/usr/local/etc/bash_completion.d/ssh私の場合や/etc/bash_completion.d/ssh他の場合)を次のように拡張しました。

_scp_local_files()
{
    local IFS=$'\n'

    local dirsonly=false
    if [ "$1" = -d ]; then
        dirsonly=true
        shift
    fi

    cur="${cur/#\~/$HOME}" # <<< Expand tilde

    if $dirsonly ; then
        COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
            sed -e "s/$_scp_path_esc/\\\\&/g" -e '/[^\/]$/d' -e "s/^/$1/") )
    else
        COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
            sed -e "s/$_scp_path_esc/\\\\&/g" -e 's/[*@|=]$//g' \
            -e 's/[^\/]$/& /g' -e "s/^/$1/") )
    fi

    COMPREPLY="${COMPREPLY/#$HOME/~}" # <<< Contract tilde

また、パスを素敵で短く保ちながら(とにかく元の入力どおり)、最後にチルダを減らすのが良いと思います。

関連情報