Bash Histsize 대파일 크기?
에서 무엇이 다릅니까?HISTSIZE
대 대HISTFILESIZE
?
기본 500줄을 초과하는 bash 기록을 확장하는 데 사용됩니다.
여기와 다른 포럼에서는 둘 다 필요한 이유에 대한 명확성이 부족한 것 같습니다(예 1, 예 2, 예 3).
단답:
HISTSIZE
는 bash 세션이 진행되는 동안 기록 목록의 메모리에 저장된 줄 또는 명령 수입니다.
HISTFILESIZE
는 ( 시 (할 수 때 (a) 세션 시 시 기 파 허 (b) 이 사 수 있 세 저 파 션 bash 이 기 때 끝 다 니 됩 장 에 일 록
사이의 차이에 주목하십시오.file
- 및 에크디list
기념으로
긴 답변:
위의 모든 정보 + 몇 가지 예:
예 1:HISTFILESIZE=10
그리고.HISTSIZE=10
- 세션을 시작합니다.
- HISTFILE(배시 명령 기록을 저장하는 파일)이 HISTFILESIZE=10줄로 잘립니다.
- 당신은 50줄을 씁니다.
- 50개의 명령 끝에는 HISTSIZE=10으로 크기가 결정되는 41~50개의 명령만 기록 목록에 포함됩니다.
- 세션을 종료합니다.
- 을 가정하여
histappend
이 활성화되지 않은 경우 명령 41 ~ 50이 HISTFILE에 저장됩니다. HISTFILE에는 처음에 보유한 10개의 명령과 새로 작성된 10개의 명령이 저장됩니다. - HISTFILESIZE=10줄을 포함하도록 HISTFILE이 잘립니다.
- 이제 기록에 10개의 명령이 있습니다. 방금 완료한 세션에서 마지막으로 입력한 10개의 명령입니다.
- 새 세션을 시작할 때 1단계에서 HISTFILESIZE=10의 HISTFILE로 다시 시작합니다.
예 2:HISTFILESIZE=10
그리고.HISTSIZE=5
- 세션을 시작합니다.
- HISTFILE(배시 명령 기록을 저장하는 파일)은 대부분의 HISTFILESIZE=10줄을 포함하도록 잘립니다.
- 당신은 50줄을 씁니다.
- 50개의 명령 끝에는 46~50개의 명령만 기록 목록에 있으며, HISTSIZE=5로 크기가 결정됩니다.
- 세션을 종료합니다.
- 을 가정하여
histappend
는 활성화되지 않습니다. 46 ~ 50 명령은 HISTFILE에 저장됩니다. HISTFILE에는 처음에 보유한 10개의 명령과 새로 작성된 5개의 명령이 있습니다. - HISTFILESIZE=10줄을 포함하도록 HISTFILE이 잘립니다.
- 기록에 이전 세션에서 5개, 방금 완료한 세션에서 마지막으로 입력한 5개 등 10개의 명령이 있습니다.
- 새 세션을 시작할 때 1단계에서 HISTFILESIZE=10의 HISTFILE로 다시 시작합니다.
예 3:HISTFILESIZE=5
그리고.HISTSIZE=10
- 세션을 시작합니다.
- HISTFILE(배시 명령 기록을 저장하는 파일)은 대부분의 HISTFILESIZE=5 행을 포함하도록 잘립니다.
- 당신은 50줄을 씁니다.
- 50개의 명령 끝에는 HISTSIZE=10으로 크기가 결정되는 41~50개의 명령만 기록 목록에 포함됩니다.
- 세션을 종료합니다.
- 을 가정하여
histappend
이 활성화되지 않은 경우 명령 41 ~ 50이 HISTFILE에 저장됩니다. HISTFILE에는 시작 부분에 유지되는 명령 5개와 새로 작성된 명령 10개가 포함됩니다. - HISTFILESIZE=5줄을 포함하도록 HISTFILE이 잘립니다.
- 이제 기록에 5개의 명령어가 있습니다. 방금 완료한 세션에서 마지막으로 입력한 5개의 명령어입니다.
- 새 세션을 시작할 때 1단계에서 HISTFILESIZE=5의 HISTFILE로 다시 시작합니다.
elixir_sinari의 정보:
명령을 입력할 때 기록 "파일"은 업데이트되지 않습니다.명령은 "목록"에 별도로 저장됩니다(history 명령에 의해 액세스됨).저장된 명령의 수는 HISTIZE 값으로 제어됩니다.셸(대화형)이 종료되면 마지막 $HISTIZE 줄이 해당 "목록"에서 $HISTFILE에 복사/첨부됩니다.HISTFILESIZE가 설정된 경우 이 작업 후 $HISTFILEIZE 행(최신)만 $HISTFILE에 존재하는지 확인합니다. 그리고 셸이 시작되면 "list"는 $HISTFILE에서 최대 $HISTSIZE 명령까지 초기화됩니다.
그리고 그 때부터.man bash
페이지:
HISTIZE 변수의 값은 기록 목록에 저장할 명령 수로 사용됩니다.마지막 HISTSIZE 명령의 텍스트(기본값 500)가 저장됩니다. (...)
시작 시 HISTFILE 변수(기본값 ~/.bash_history)에 의해 이름이 지정된 파일에서 기록이 초기화됩니다.HISTFILE 값으로 명명된 파일은 필요한 경우 HISTFILESIZE 값으로 지정된 줄 수 이하로 잘립니다. (...) 대화형 셸이 종료되면 마지막 $HISTSIZE 줄이 기록 목록에서 $HISTFILE로 복사됩니다.histappend shell 옵션을 사용하도록 설정한 경우(아래 SHELL BUILTIN 명령 아래의 shopt 설명 참조), 행이 기록 파일에 추가되고 그렇지 않으면 기록 파일을 덮어씁니다.HISTFILE이 설정되지 않았거나 기록 파일을 쓸 수 없는 경우 기록은 저장되지 않습니다. (...) 기록을 저장한 후 HISTFILESIZE 행 이하로 기록 파일이 잘립니다.HIST FILESIZE가 설정되지 않은 경우 잘라내기가 수행되지 않습니다.
Arturomp이 말한 것 위에 구축하고 그것을 조금 더 명확하게 하기 위한 노력으로.
2000년 정도의 긴 역사를 가지고 있다고 가정하면..
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2027 78
2028 57
2029 yu45u
당신은 당신이 보여주는 것을 줄일 수 있습니다.HISTSIZE
~$ HISTSIZE=5
~$ history
2026 546
2027 78
2028 56
2029 yu45u
2030 HISTSIZE=5
이제 명령어를 몇 개 입력하든 마지막 5개만 기록됩니다.
~$ ABC
~$ GGH
~$ GSDHFG
~$ JFDR
~$ ABSDDS
~$ AHFGHFD
<close terminal>
<open new terminal>
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2028 56
2029 yu45u
2030 HISTSIZE=5
2031 GGH
2032 GSDHFG
2033 JFDR
2034 ABSDDS
2035 AHFGHFD
마지막 5개의 명령만 기록되었기 때문에 첫 번째 명령("ABC")이 기록되지 않았음을 분명히 알 수 있습니다.
이제 전체 기록이 파일에 저장됩니다..bash_history
그리고 이 파일이 사용되는 기간을 변경할 수 있습니다.HISTFILESIZE
예를 들어 다음과 같은 경우2033
HISTFILESIZE
내 경우에는 이것을 가질 것입니다.
~$ history
1 fghfghdf
2 gegege
3 gege
.. ..
2028 HISTSIZE=5
2029 GGH
2030 GSDHFG
2031 JFDR
2032 ABSDDS
2033 AHFGHFD
언급URL : https://stackoverflow.com/questions/19454837/bash-histsize-vs-histfilesize
'programing' 카테고리의 다른 글
재귀적인 자기 결합을 하는 가장 간단한 방법은? (0) | 2023.04.27 |
---|---|
IIS Express 웹 응용 프로그램을 중지한 후 실행 중인 사이트를 즉시 종료합니다. (0) | 2023.04.27 |
기존 ASP에 웹 API를 추가하는 방법.NET MVC (5) 웹 애플리케이션 프로젝트? (0) | 2023.04.27 |
백그라운드 프로세스를 포킹/실행하기 위한 bash 앰퍼샌드(&)와 동등한 Powershell (0) | 2023.04.22 |
UITable View 아래에 추가 구분 기호 제거 (0) | 2023.04.22 |