배쉬 쉘 탭 완성, ~를 확장하지 마십시오


12

내가 사용하는 Tab내가 쉘 (bash는) 사용할 때 키의 많은.

그러나 나는 ~항상 확장되어 짜증이납니다 /home/"user". 나는 그것이 항상 이런 식으로 생각하지 않습니다; 이 행동을 막을 방법이 있습니까?

예를 들면 :

  1. cj@zap:~$ ls ~/
  2. 프레스 Tab
  3. cj@zap:~$ ls /home/cj/

나는이 계속 싶습니다 ~/과 함께 끝나지 /home/cj/.


2
"항상 이런 식으로 생각한 것은 아닙니다." -프로그래밍 가능 완료는 리드 라인 설정 set expand-tilde off(기본값 또는에서 설정 ~/.inputrc)을 무시합니다 .
추후 공지가있을 때까지 일시 중지되었습니다.

"bind -v | grep tilde"는 "set expand-tilde off"를 반환하므로 도움이 될 것이라고 생각하지 않습니다.
Johan

을 살펴볼 수 있습니다 shopt -p direxpand.
gam3

답변:


10

물결표 확장 비활성화는 빠르고 고통스럽지 않습니다. 열고 ~/.bashrc이것을 삽입하십시오 :

_expand()
{
    return 0;
}

확장 기능이에서 재정의됩니다 /etc/bash_completion. 나중에 확장을 원할 경우 함수 위에서 수행하는 작업에 대해 언급하는 것이 좋습니다. 새 인스턴스에서 변경 사항이 적용됩니다.


그래도 _expand(){ true; }짧아 :)
tig

그렇지 _expand(){ false; }않습니까? @tig
John T

2
@ 존 : 아니오 사실이 아니야. true성공적인 결과 성공적인 결과를 반환하므로, 0 return 0같다 true종료 상태, 그리고 return 1같다 false. 단지 시도 true; echo $?하고 false; echo $?.
tig

@tig 너무 많은 프로그램이 저를 혼동했다 ... codepad.org/Frb3RyAN는 마찬가지로 코드 (위 참조)의 많은이를 찾을 수 : cs.nthu.edu.tw/~tingting/DS_mid_solution.pdf가 나는쪽으로 전환있어 가정 것 보다 사실적인 의미, 즉 "참으로, 프로그램이 성공적으로 실행되었습니다"또는 "거짓-프로그램이 잘못 실행되었습니다."
John T

@John : 괜찮습니다 :),«John T도 잘못 될 수 있습니다»(불쾌하지 말 것 :))
tig

5

최신 bash_completion을 사용하면 __expand_tilde_by_ref를 재정의해야합니다.

__expand_tilde_by_ref() {
  return 0
}

1

더 간결하게 :

_expand() { :; }

"as ::"는 "true"와 동등한 쉘 내장입니다 :-)


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.