현상금 업데이트

현상금 업데이트

현재 디렉토리에 파일이 있고 이를 원격 서버로 test.txt전송하고 싶다고 가정해 보겠습니다.scp

완료를 사용할 때 즉 :

scp -rp test<TAB>

zsh 완성 기능은 나머지 파일 이름을 완성하는 대신 다음을 제공합니다.

scp -rp test<TAB>
test.txt
testuser

testuser내 시스템의 로컬 사용자입니다. 원격 서버에 연결할 때 로컬 사용자에 대해 zsh 완료가 완료되는 이유는 무엇입니까?

이것은 쓸모없고 어리석은 규칙처럼 보입니다.

scpssh와 동일한 완성 파일을 사용하고 /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)

관련 정보