Bash에서 "단어"를 삭제하면 _
및 같은 특정 문자에서 중지됩니다 /
. 예를 들어 내가 입력하면
/foo/bar
활성화되고 backward-kill-word
(보통 Alt- Backspace및/또는 Ctrl- 에 매핑됨 w) 나머지 텍스트는 다음과 같습니다.
/foo/
. 이것은 실제로아니요에 해당 $COMP_WORDBREAKS
하거나readline
~의rl_completer_word_break_characters
. 단어 분할을 결정하는 데 사용되는 문자를 어떻게 감지합니까(코드의 기본값보다는 재정의될 수 있으므로 실행 중인 시스템에서 선호)?
답변1
Bash 문서에는 다음과 같이 명시되어 있습니다.
backward-kill-word (M-Rubout)
점 뒤에 있는 단어를 죽여보세요. 단어 경계는 역방향 단어에 사용되는 것과 동일합니다.
그리고
backward-word (M-b)
현재 또는 이전 단어의 시작 부분으로 돌아갑니다. 단어는 영숫자(문자 및 숫자)로 구성됩니다.
Bash 4.2에서의 처리는 backward-word
번들로 제공되는 libreadline 코드(text.c:rl_backward_word
). 가설은 다음을 기반으로 합니다.rl_alphabetic
, 그 자체는 다음에 달려 있습니다.isalnum
기능. 이는 로케일에 따라 다르지만 bash에서 직접 구성할 수는 없습니다.
shell-forward-word
Bash 4.0에는 AND shell-backward-word
연산(및 동등한 Kill 연산)을 포함하는 또 다른 "단어" 유형이 도입되었습니다 . 이는 쉘 메타 문자( ()<>;&|"
) 및 공백(로케일 종속성에 의해 가능 isblank
) 에서만 중단되며 bashline.c
기본 bash 코드( )에서 처리됩니다.