
브라우저의 '기록' 기능처럼 명령줄에 대한 모든 과거 활동/기록을 볼 수 있는 방법이 있습니까?
배경 지식 저는 명령줄과 상호 작용하기 위해 OSX 터미널을 사용하고 있습니다.
답변1
시스템 관리자나 사용자가 $HISTFILE
다른 설정을 하지 않은 이상 기록은 다음에 저장됩니다.
~/.bash_history
지도 시간
터미널 역방향 검색
터미널 창이 활성화된 상태에서 키를 누르면 Control+R
프롬프트 reverse-i-search
가 나타납니다. 이제 이전에 사용한 명령의 처음 몇 글자만 입력하기 시작하면 전체 명령이 표시됩니다. 이것은 짧은 기억력과 긴 명령을 가진 우리들에게 매우 귀중한 것입니다.
터미널 기록의 크기를 늘리십시오
터미널이 이전 명령을 상기시켜주는 아이디어가 마음에 든다면 더 많은 기록 저장을 위해 터미널 기록 파일의 크기를 늘릴 수 있습니다.
.bash_profile이 있는 경우
선택한 텍스트 편집기에서 .bash_profile을 엽니다.
이거 추가 해봐:
HISTFILESIZE=1000000000 HISTSIZE=1000000
저장 및 종료
.bash_profile이 없는 경우
터미널 시작
다음을 입력하여 홈 폴더로 이동합니다.
cd ~/
다음을 입력하여 .bash_profile을 생성합니다.
touch .bash_profile
이제 즐겨 사용하는 텍스트 편집기에서 .bash_profile을 편집하거나 터미널 창에 다음을 입력하여 기본 TextEdit에서 파일을 자동으로 엽니다.
open -e .bash_profile
마지막으로 다음을 .bash_profile 파일에 추가합니다.
HISTFILESIZE=1000000000 HISTSIZE=1000000
저장 및 종료
이 훌륭한 튜토리얼의 출처는 다음과 같습니다.막토이드.
답변2
많은 셸에서는 간단히 를 입력하여 명령 기록을 볼 수 있습니다 history
.
답변3
Bash에는 기록을 처리하기 위한 몇 가지 옵션이 있습니다. 우선, 귀하의 기록은 텍스트 파일에 저장됩니다. 이는 일반적으로 발생 하지만 변수를 다른 것으로 ~/.bash_history
설정하여 변경할 수 있습니다 .$HISTFILE
기록에 접근하는 가장 쉬운 방법은 다음과 같습니다.
명령
history
. 옵션이 없으면 단순히$HISTFILE
. 그러나 기록 목록을 조작할 수 있는 옵션은 꽤 많습니다. 으로 모두 보실 수 있습니다help history
. 제가 특히 유용하다고 생각하는 것들은 다음과 같습니다.-a append history lines from this session to the history file -r read the history file and append the contents to the history list
내 Bash 초기화 파일에 다음 줄이 있습니다(
~/bash_profile
OSX 및~/.bashrc
대부분의 다른 *nix 버전에 해당).export PROMPT_COMMAND='history -a;history -r;'
이 두 명령은 새 프롬프트가 나타날 때마다 실행됩니다(터미널에 표시될 때마다
$
, 처음 열릴 때 및 모든 명령 실행 후). 결과적으로 각 명령이 실행된 후 해당 명령이 기록되고 디스크에서 읽혀지기 때문에 내 기록이 모든 터미널 창에서 공유$HISTFILE
됩니다$HISTFILE
.및 버튼 Up. 한 번 Down누르면 Up실행한 이전 명령이 표시되고, 다시 누르면 그 이전 명령이 표시됩니다. 버튼 Down을 누르면 다른 방향으로 이동합니다.
이는 대부분의 최신 시스템(예: OSX)에서 기본적으로 활성화되어 있지만 그렇지 않은 경우 다음 줄을 다음 파일에 추가하여 이 동작을 활성화할 수 있습니다
~/.inputrc
."\e[A": history-search-backward "\e[B": history-search-forward
Bash는 또한 기록 동작을 제어하는 몇 가지 옵션과 변수를 제공합니다(그 중 다수는 @Chris의 매우 좋은 답변에 언급되어 있지만 그가 그렇지 않은 일부는 언급하겠습니다).
histappend
If set, the history list is appended to the file named by the value of the HISTFILE variable when the shell exits, rather than overwriting the file.
다시 말하지만 이는 기본적으로 설정되어야 합니다. 터미널 세션 전체에서 기록이 유지되지 않는 경우 다음 줄을 다음 줄에 추가하세요
~/.bash_profile
.shopt -s histappend
변수
HISTCONTROL
:명령이 기록 목록에 저장되는 방식을 제어하는 콜론으로 구분된 값 목록입니다. 값 목록에 공백 무시가 포함된 경우 공백 문자로 시작하는 줄은 기록 목록에 저장되지 않습니다. 값이 무시되면 이전 기록 항목과 일치하는 행이 저장되지 않습니다. ignoreboth 값은ignorespace와ignoredups의 약어입니다. 삭제된 값은 현재 줄과 일치하는 모든 이전 줄이 해당 줄이 저장되기 전에 기록 목록에서 제거되도록 합니다. 위 목록에 없는 값은 무시됩니다. HISTControl이 설정되지 않거나 유효한 값을 포함하지 않는 경우 쉘 파서가 읽은 모든 행은 HISTIGNORE 값에 따라 기록 목록에 저장됩니다. 여러 줄 복합 명령의 두 번째 및 후속 줄은 테스트되지 않으며 HISTControl 값에 관계없이 기록에 추가됩니다.
변수
HISTIGNORE
:기록 목록에 저장할 명령줄을 결정하는 데 사용되는 콜론으로 구분된 패턴 목록입니다. 각 패턴은 행의 시작 부분에 고정되며 전체 행과 일치해야 합니다(암묵적인
*' is appended). Each pattern is tested against the line after the checks specified by HISTCONTROL are applied. In addition to the normal shell pattern match‐ ing characters,
&'는 이전 기록 행과 일치하지 않습니다. `&'는 백슬래시를 사용하여 이스케이프할 수 있습니다. 백슬래시는 일치를 시도하기 전에 제거됩니다. 두 번째 여러 줄 복합 명령의 후속 줄은 테스트되지 않으며 HISTIGNORE 값에 관계없이 기록에 추가됩니다.
이 모든 것을 종합하면 쉘 초기화 파일에 다음 줄이 있습니다( 대부분의 경우 ~/.bash_profile
OSX의 경우).~/.bashrc
export HISTCONTROL=ignoredups
export HISTSIZE=10000
export HISTIGNORE="pwd:df:du:ls"
## Make Bash append rather than overwrite the history on disk:
shopt -s histappend
## history -a causes the last command to be written to the
## history file automatically and history -r imports the history
export PROMPT_COMMAND='history -a;history -r;'