scp는 다른 명령처럼 자동 완성되지 않습니다.

scp는 다른 명령처럼 자동 완성되지 않습니다.

저는 tcsh를 사용하고 있습니다. Tab을 실행했을 때 현재 디렉토리가 scp my자동 완성되지 않고 완료하려면 앞에 a를 붙여야 my-file.txt한다는 사실을 발견했습니다. ./이것은 단지 발생하는 것 같습니다 scp. 다른 명령을 시도했는데 제대로 작동하는 것 같습니다.

나는 이것이 나에게 (즉, 현재 호스트 이름) scp tab의 가치를 제공한다는 것을 발견했습니다.$HOSTNAMElocalhost

그래서 호스트 이름과 일치시키려는 것 같은데 왜 그런지 모르겠습니다.

응답 댓글을 추가하세요.

 ~/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개의 항목이 포함된 호스트 파일 설정이 있습니다. 그래서 자동 완성을 할 때마다 해당 목록을 살펴봅니다.

관련 정보