배쉬 : 탈출을 4 번 누르기


11

bash 터미널에서 escape를 4 번 누르면 다음과 같이 표시됩니다.

-bash-4.1$
Display all 2837 possibilities? (y or n)
:
!
./
[
[[
]]
{
}
411toppm
a2p
ac
accept
accton
aclocal
aclocal-1.11
acpi_listen

이 기능은 무엇이며 이러한 항목은 어떻게 찾습니까? (두 번째 Esc 키를 누르면 터미널에서 경고음이 울립니다.)

답변:


11
$ bind -p | grep 'complete$'
"\C-i": complete
"\M-\e": complete

이것은 Emacs 명령 줄 편집 모드에서 Meta+Esc(과 Ctrl+i) 의 기본 키 바인딩 이 Readline 기능 임을 보여줍니다 complete. Meta키는 일반적으로 Esc명시하지 않고 키보드의 Meta키를 누르십시오. 이 함수에 대한 Readline 문서는

포인트 이전의 텍스트에 대해 완료를 시도하십시오. 실제 완료는 응용 프로그램에 따라 다릅니다. 예를 들어, Bash는 텍스트를 변수 (텍스트로 시작하는 경우 $), username (텍스트가로 시작하는 경우 ~), 호스트 이름 (텍스트가로 시작하는 경우 @) 또는 명령 (별칭 및 함수 포함) 으로 처리를 완료하려고 시도 합니다 . 이들 중 어느 것도 일치하지 않으면 파일 이름 완성이 시도됩니다. 반면 Gdb는 프로그램 기능 및 변수의 완성을 허용하며 특정 상황에서 파일 이름 완성 만 시도합니다.


Anthon의 답변에 대한 귀하의 의견 : 아니요, Esc두 번 누르는 것은 Tab일반적으로 읽는 것과 동일하지 않습니다 (Readline이 기본적으로 Readline처럼 두 동작을 모두 동일한 동작에 매핑하는 프로그램에 있지 않는 한). 그러나 Ctrl+i 입니다 같은 Tab처럼 Ctrl+[동일하다 Esc. 이는 double 이 Readline 함수에 바인딩되어있는 한 원하는 경우 Ctrl+[ Ctrl+[in으로 완료 할 수 있음을 의미합니다 . 예를 들어, Esc 키가없는 VT220 터미널에서 작업하는 경우 유용합니다.bashEsccomplete

독일어 VT220 키보드


Kusalananda 님,이 심층 답변에 감사드립니다. 마지막 요점에 대해 : 완료를 Esc두 번 누르면 bash에서 두 번 (또는 \M-\e) 누르는 이유는 Tab무엇입니까?
flow2k

1
@ flow2k Esc-Esc와 Tab이 모두 complete기본적으로 기능에 바인딩되어 있지만 일반적으로 그렇지는 않습니다 (즉, 키 누름이 "동일하지 않음"). readline 가능 프로그램에서만 탭을 Esc-Esc로 대체 할 수 없습니다. 그러나 Tab을 Ctrl-i로 대체하거나 Esc를 Ctrl- [로 대체 할 수 있습니다.
Kusalananda

내가 할 수있는 후속 조치 : Tab의 결과에 표시되지 않습니다 bind -p. 왜 그런 겁니까? Tab"하드 코딩"되어 있고 바인딩 될 수 없기 때문일 수 있습니다.
flow2k

1
@ flow2k 아니오, 탭은 Ctrl-i와 동일 합니다. 를 찾으십시오 \C-i. 이것은 하드웨어 수준과 동일합니다.
Kusalananda

8

이를 파일 완성이라고하며, 명령 행에 선행 명령이없는 경우 bash는 내장 된 명령과 명령에있는 모든 2837 명령을 완료하도록 제안합니다. PATH

정렬 된 순서로 표시됩니다


1
흥미 롭기 때문에 탭을 두 번 누르는 것과 같습니다. 아마도 2 이스케이프 = 1 탭?
flow2k
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.