저는 tcsh를 사용하고 있습니다. Tab을 실행했을 때 현재 디렉토리가 scp my
자동 완성되지 않고 완료하려면 앞에 a를 붙여야 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/:'
답변1
complete
/etc에 특수 명령을 정의하는 시스템 전체 tcsh 구성 파일이 거의 확실하게 있습니다 scp
. 이를 확인하는 가장 쉬운 방법은 다음을 입력하는 것입니다.
complete
그러면 모든 사용자 정의 완성이 나열됩니다. 사용자 정의 완성 지시문은 좀 더 복잡하지만 scp
적어도 하나의 인수를 사용하는 경우 파일 경로에 호스트 이름을 포함하려는 의도가 있을 수 있습니다. 그런 다음 그 미스터리를 알아내거나 추가할 수 있습니다.
uncomplete scp
~/.tcshrc
수동 오버라이드로 명령을 날립니다 .
답변2
자동 완성은 호스트 파일의 모든 항목을 일치시키려고 시도합니다. 한번은 자동 완성 기능을 실행하여 "sexyladies.com"을 얻었고 해당 사이트를 방문한 적이 없기 때문에 시스템이 손상되었다고 생각했습니다.
이것은 사실이 아닙니다. 차단하려는 웹 사이트에 대해 약 20,000개의 항목이 포함된 호스트 파일 설정이 있습니다. 그래서 자동 완성을 할 때마다 해당 목록을 살펴봅니다.