저는 많은 사용자가 있는 클러스터에서 작업하고 있습니다. 클러스터에는 첫 번째 문자가 내 사용자 이름과 동일한 사용자 50명이 있고, 마지막 문자까지 동일한 이름을 가진 사용자가 50명 있습니다. Tab 키에서 끝낼 때 문자를 더 입력할 필요 없이 Tab 키를 누른 다음 마지막 문자를 입력하면 됩니다 /home/e
./home/elsherbini/
FigNORE는 절대 경로에서는 작동하지 않고 파일 접미사에서만 작동하는 것 같습니다. 탭으로 완성된 디렉토리 목록을 무시하는 방법이 있습니까?
GNU bash, 버전 4.1.2(1)-릴리스(x86_64-redhat-linux-gnu)
답변1
제가 제안하고 싶은 접근 방식 중 하나는 디렉토리 경로 alias
에만 관심이 있다면 home
디렉토리에 다음을 추가하는 것이 도움이 된다는 것입니다 profile
. 생성한 고유 별칭은 첫 번째 문자에 대해서도 자동으로 수행되어야 합니다.
alias myHome="cd /home/elsherbini"
. .profile
my\T
pwd
/home/elsherbini
편집하다:
또 다른 방법은키 바인딩그러나 이것이 도움이 된다면 에서의 사용법을 고려하면 빠른 double click
합계가 필요합니다 .right click
PuTTY
completeIt(){ echo "elsherbini"; }
bind -x '"\C-h": completeIt;'
Control-H
사용자 이름과 같이 사용자 정의를 요청하는 문자열을 사용하십시오 . 용법:
$ cd
elsherbini
답변2
나는 zsh
그것을 매우 철저하게 사용자 정의할 수 있도록 사용하고 있습니다. 이 옵션은 특정 모드가 완료되는 것을 방지합니다.
autoload -Uz compinit; compinit
# ignore some common patterns that we usually don't want as completions
zstyle ':completion:*' ignored-patterns "/usr/share/iscan" "/usr/lib/iscan" \
"iscan" "/usr/lib/ispell" "ispell" "/usr/lib64" "/usr/lib32" \
"/usr/libx32" "/usr/libexec" "/srv/tftp" "chkwins" "dpkg-buildflags"
답변3
내장 함수를 재정의하여 compgen
간단한 디렉토리(예: cd
및 ls
)를 완성할 수 있습니다. 예를 들어 이 함수를 ~/.bashrc에 넣으세요.
compgen(){
local IFS=$'\n'
local x tmp
x=$( builtin compgen "$@" ) &&
while read -r tmp; do
[[ "$tmp" =~ ^/home/e && ! "$tmp" =~ ^/home/elsherbini$ ]] ||
echo "$tmp"
done <<< "$x"
}
내장 함수를 실행 하고 출력을 필터링하여 compgen
가능한 완성 목록에서 ^/home/e
일치하지 않는 정규식으로 시작하는 줄을 제거합니다. ^/home/elsherbini$
정규 표현식은 에서 인용되지 않습니다 [[]]
.