遅すぎました。問題のマシン、オペレーティングシステム、および構成が廃止されたため、追加の提案を確認することはできません。 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
また、パスを素敵で短く保ちながら(とにかく元の入力どおり)、最後にチルダを減らすのが良いと思います。