현재 디렉터리가 비어 있으면 하위 디렉터리를 입력하세요.

현재 디렉터리가 비어 있으면 하위 디렉터리를 입력하세요.

bash의 GUI 파일 관리자를 포기하지 못하게 하는 한 가지 이유는 Bash가 빈 디렉토리 내의 고유한 하위 디렉토리에 대해 탭 완성 기능을 수행하지 않는다는 것입니다.

$ ls
..       // is not displayed, when cmd is simply ls
.        // but they still exist
subdir/

cd <tab> 현재 디렉토리에 다른 것이 없기 때문에 확장 할 수 있기를 원 cd subdir/하지만 bash는 이 명령을 완료하려면 입력의 첫 글자가 필요합니다.

사용 사례 중첩된 디렉터리(특히 알 수 없는 디렉터리)가 있는 프로젝트를 탐색하는 것은 고통스럽습니다. /src/main/com/application/module/package는 다음과 같이 번역됩니다. s<tab><tab><tab>m<tab><tab><tab>c<tab><tab><tab>a<tab>...예를 들어 thunar의 경우 첫 번째 디렉터리가 미리 선택되어 있으므로 Enter를 여러 번 누를 수 있습니다.

나는 이것이 현재 디렉토리와 상위 디렉토리의 식별자 때문이라고 생각합니다. Bash에서 이 동작을 구축하는 올바른 방법은 무엇입니까?

//편집_2:

데비안 10에서 xfce4-terminal을 사용하고 있습니다

답변1

내 질문에 대한 빠른 의견을 보내주신 모든 분들께 감사드립니다. 프로그래밍 가능한 쉘 스크립트의 쉘 스크립팅을 비활성화하면 문제가 해결되었습니다.

이는 Debian이 사전 설치된 패키지로 인해 발생합니다. 이 문제를 해결하는 단계는 다음과 같습니다.

  1. 내 파일에 나타나는 다음 코드 목록 .bashrc($HOME/.bashrc, $HOME/.profile, /etc/bash.bashrc 및 /etc/profile)을 제거합니다.
  2. apt remove bash-completion다음 파일을 삭제할 패키지를 제거하십시오.데비안 패키지 - 파일 목록
  3. 편집된 .bashrc/restart bash를 가져옵니다.
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then  
  if [ -f /usr/share/bash-completion/bash_completion ]; then  
    . /usr/share/bash-completion/bash_completion  
  elif [ -f /etc/bash_completion ]; then  
    . /etc/bash_completion  
  fi  
fi  

매우 감사합니다!

관련 정보