터미널이 데이터를 저장합니까?


9

이것은 정말 오랫동안 알고 싶었지만 실제로 질문을 던지는 적이 없었습니다.

Linux 배포판에서 제공되는 터미널에서 화살표 키를 사용하여 명령의 전체 기록을 볼 수 있음을 알고 있습니다 (다른 방법이있는 경우 알 수 없음). 어떻게 발생합니까?

터미널이 모든 키 입력을 기록하는 곳이 있습니까? 일종의 버퍼입니까? 그러나 다시 버퍼 인 경우 잠시 후에 지워지지 않습니까?

이 시스템은 어떻게 작동합니까?


이전에 사용 된 모든 명령을 가져 오기 위해 기록을 작성하십시오.
Sukupa91

OP는 history명령 에 대해 묻지 않고 이전 명령을 기억하는이 전체 시스템의 작동 방식을 묻습니다 .
Tarun

죄송합니다. 잘못되었습니다.
Sukupa91

2
이 예외를 염두에 두십시오. 명령이 공백으로 시작하면 명령이 히스토리에서 끝나지 않습니다.
Rinzwind

@Rinzwind, 공백으로 시작하면 히스토리에 추가됩니다.
GC 13

답변:


10

이것은 명령 히스토리이며 터미널이 아닌 쉘의 기능입니다.

우분투에서 (그리고 대부분의 다른 Linux 배포판은 아니지만 많은 경우) 대화 형 사용을위한 기본 쉘은 Bash ( /bin/bash)입니다. Bash는 히스토리를 유지합니다. 즉,의 마지막 명령 목록입니다 ~/.bash_history. 쉘을 열면 (일반적으로 터미널을 열어서)이 파일을 읽고이 쉘의 내부 히스토리로로드합니다. 쉘을 닫으면 변경 사항이 파일에 다시 기록됩니다. 기본적으로이 명령은 마지막 500 개의 명령으로 제한됩니다.

이것이 정확히 작동하는 방식을 바꿀 수있는 몇 가지 변수와 쉘 옵션이 있습니다. man bash자세한 내용 은 bash 맨 페이지 ( )를 참조하십시오. HISTORY를 검색하기 만하면됩니다 (를 입력 /^HISTORY하고 확인하고 Enter다음 찾기로 이동 n)

또한 단지보다 역사를 돌아 다니면서 꽤 많은 방법이 있습니다 UpDown:

  • 예를 들어, Ctrl+ R와 이전 명령의 일부를 누르면 bash는 기록에서 이전에 일치하는 명령을 검색 하고, 첫 번째 일치 항목이 찾고 있지 않으면 Ctrl+를 반복 R합니다. (bash 맨 페이지의 '히스토리 조작 명령'참조)

  • 복사 /etc/inputrc~/.inputrc함께 라인과 주석 history-search-forwardhistory-search-backward그들이다. 명령의 첫 문자를 입력 PgUp하고을 누르면 bash는 기록에서 같은 문자로 시작하는 명령 만 표시합니다. (이 변경 후 쉘을 열었을 때만 작동)

  • !!셸에서 명령 대신 입력 하면 마지막 명령이 반복됩니다 (자세한 내용은 bash 맨 페이지의 'HISTORY EXPANSION'참조).


1
그리고 역사를 지키고 싶지 않다면 unset HISTFILE~ / .bashrc에 넣으 십시오. 그런 다음 기록을 메모리에 보관하여 새 쉘 호출마다 지 웁니다.
CVn

10

명령 기록은 일반적으로 .bash_history홈 디렉토리 의 파일에 사용자별로 저장됩니다 . 즉, 모든 사용자는 자신이 실행 한 고유 한 명령 집합을 갖습니다.

여러 터미널 세션이 열려 있으면 화살표 키를 누를 때 다른 명령이 표시 될 수 있지만 모든 터미널 창을 닫으면 다른 터미널 세션의 기록이 공통 ~/.bash_history파일 로 병합 됩니다.

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