Tcsh

scp 不會像其他命令那樣自動完成

  • July 22, 2013

我正在使用 tcsh。我發現當我執行 scp my選項卡時,它不會自動完成到my-file.txt目前目錄下,我必須在./此處添加前綴以使其完成。這似乎只發生在scp. 我嘗試了其他命令,它似乎工作正常。

我發現這scp tab給了我$HOSTNAME(即目前主機名)的值localhost

所以看起來它正在嘗試匹配主機名,不知道為什麼..

添加以回應評論:

~/temp/test>ls -al
total 12
drwxr-xr-x 2 liw liw 4096 Jul 21 15:16 .
drwxr-xr-x 9 liw liw 8192 Jul 21 15:15 ..
-rw-r--r-- 1 liw liw    0 Jul 21 15:16 my_file.txt

~>more .cshrc.user 
set prompt="%n@%m %~%#"

set path=($HOME/bin $path)

if (-o $HOME/.aliases) source $HOME/.aliases

set filec
set autolist
set autoexpand
set addsuffix

bindkey ^r i-search-back

~> complete scp
'c%*@*:%`set q=$:-0;set q="$q:s/@/ /";set q="$q:s/:/ /";set q=($q " ");ssh $q[2] -l $q[1] ls -dp $q[3]\*`%' 'c%*:%`set q=$:-0;set q="$q:s/:/ /";set q=($q " ");ssh $q[1] ls -dp $q[2]\*`%' 'c%*@%$hosts%:' 'C@[./$~]*@f@' 'n/*/$hosts/:'

幾乎可以肯定在 /etc 中有一個系統範圍的 tcsh 配置文件,它有一個completescp. 最簡單的檢查方法是輸入

complete

這將列出所有自定義完成。自定義完成指令有點複雜,但目的可能是如果您使用scp至少一個參數,則希望在文件路徑中有一個主機名。然後,您可以嘗試找出該奧秘,或者只是添加

uncomplete scp

到您~/.tcshrc並手動覆蓋該命令。

引用自:https://unix.stackexchange.com/questions/83877