이전에 입력한 명령을 기반으로 터미널을 자동 완성하는 방법은 무엇입니까?

이전에 입력한 명령을 기반으로 터미널을 자동 완성하는 방법은 무엇입니까?

위, 아래를 누르면 시간순으로 입력된 이전 명령이 순환되는 터미널을 사용하는 것이 정상입니다.

위아래로 누를 때 이전에 입력한 명령을 기반으로 커서에 입력하는 내용을 자동 완성하여 해당 동작을 추가하는 방법을 사이트에서 배웠습니다.

예를 들어 다음 명령을 이 순서대로 입력했다고 가정해 보겠습니다.

  1. ls Videos
  2. ls Vids
  3. lsomething
  4. ls Videos/Funny/Old
  5. vi file
  6. ls Music

아무 것도 입력하지 않은 경우 위쪽 및 아래쪽을 누르면 평소처럼 모든 줄이 순환됩니다. 그러나 를 입력한 경우 ls위쪽 및 아래쪽 키를 누르면 처음 2자가 있는 모든 명령 ls(위의 1,2,3,4,6행)이 순환됩니다. 하지만 입력 ls(뒤에 공백 포함)하면 라인 1,2,4,6을 통해서만 위아래 순환이 가능합니다. 마찬가지로 ls Vid화살표가 라인 1,2,4를 순환하도록 허용하지만 ls Videos라인 1과 4 사이만 순환하도록 허용합니다.

입력한 관련 없는 명령 하나하나를 순환할 필요 없이 반복해서 입력해야 하는 명령과 관련된 값을 완성하는 것은 매우 유용합니다. 예를 들어, env로케일과 같은 값이 사물에 미치는 영향을 테스트하려고 합니다 .

env [many different values] [command]
[insert many different commands here]
env [slightly different values from before] [command]
[doing other stuff]

env시도한 값 사이를 순환하려면 입력한 후 위로 몇 번만 누르면 됩니다 .

설명이 좀 길었다면 사과드립니다. 나는 그것이 무엇이라고 불리는지 모른다. 내 터미널에는 이러한 동작이 있었지만 해당 동작이 사라진 것 같고 이 동작을 배운 사이트를 찾을 수 없습니다. 편집과 관련이 있는 것 같아요 ~/.bashrc.

답변1

원하는 동작을 얻으려면 다음 행을 파일에 추가하십시오 ~/.inputrc(파일이 없으면 작성하십시오).

"\e[A": history-search-backward
"\e[B": history-search-forward

그런 다음 새 터미널을 열면 예상대로 작동합니다. 이 동작은 /etc/inputrc및 의 설정으로 제어됩니다 ~/.inputrc. Readline Command Names다음 섹션 에서 이에 대한 자세한 내용을 읽을 수 있습니다 man bash.

   non-incremental-forward-search-history (M-n)
          Search forward  through  the  history  using  a  non-incremental
          search for a string supplied by the user.
   history-search-forward
          Search  forward through the history for the string of characters
          between the start of the current line and the point.  This is  a
          non-incremental search.

관련 정보