현재 디렉토리에 파일이 있고 이를 원격 서버로 test.txt
전송하고 싶다고 가정해 보겠습니다.scp
완료를 사용할 때 즉 :
scp -rp test<TAB>
zsh 완성 기능은 나머지 파일 이름을 완성하는 대신 다음을 제공합니다.
scp -rp test<TAB>
test.txt
testuser
testuser
내 시스템의 로컬 사용자입니다. 원격 서버에 연결할 때 로컬 사용자에 대해 zsh 완료가 완료되는 이유는 무엇입니까?
이것은 쓸모없고 어리석은 규칙처럼 보입니다.
scp
ssh와 동일한 완성 파일을 사용하고 /usr/share/zsh/functions/Completion/Unix/_ssh
명령 ssh
의 동작은 동일하지만 ssh
이 경우 ssh가 로컬 파일 이름을 완성해서는 안 되기 때문에 덜 짜증스럽습니다.
scp
로컬 사용자가 아닌 로컬 파일 이름만 제공하도록 완성 규칙을 수정하려면 어떻게 해야 합니까 ?
현상금 업데이트
허용된 솔루션은 작동 scp
하지만 문제는 여전히 존재합니다 ssh
. 다음을 사용 하여 연결 myserver.domain.org
하고 완료하려는 경우:
ssh m<TAB>
myserver.domain.org
예상되는 시스템 프로비저닝을 완료 하고 로컬 사용자 man
및 에 대한 프로비저닝도 수행합니다 messagebus
. 이는 어리석은 일입니다.
ssh/scp
모든 로컬 사용자를 완료하는 대신 완료하려는 사용자 목록을 지정(하드코드)할 수 있도록 완료 시스템을 어떻게 변경합니까 ?/etc/passwd
즉, 나는 ssh
허용된 답변처럼 비활성화된 사용자 완성을 원하지 않습니다 scp
. 하지만 나는 다음 목록을 사용하는 대신 완료될 나만의 사용자 목록을 제공하고 싶습니다./etc/passwd
답변1
zstyle ':completion:*:scp:*' tag-order '! users'
이는 다른 완료를 찾을 수 없는 경우가 아니면 완료 시스템 scp
에 에 대한 완료를 시도하지 않도록 지시합니다. users
(바라보다http://zsh.sourceforge.net/Doc/Release/Completion-System.html#index-tag_002dorder_002c-completion-style)
사용할 때 입력해야 하는 고유한 사용자 이름 목록을 지정하려면 다음을 수행하세요 ssh
.
zstyle ':completion:*:ssh:*' users alice bob carol
(바라보다http://zsh.sourceforge.net/Doc/Release/Completion-System.html#index-users_002c-completion-style)