programing

Bash Histsize 대파일 크기?

lastcode 2023. 4. 27. 22:27
반응형

Bash Histsize 대파일 크기?

에서 무엇이 다릅니까?HISTSIZE대 대HISTFILESIZE?

기본 500줄을 초과하는 bash 기록을 확장하는 데 사용됩니다.

여기와 다른 포럼에서는 둘 다 필요한 이유에 대한 명확성이 부족한 것 같습니다( 1, 예 2, 예 3).

단답:

HISTSIZE는 bash 세션이 진행되는 동안 기록 목록의 메모리에 저장된 줄 또는 명령 수입니다.

HISTFILESIZE는 ( 시 (할 수 때 (a) 세션 시 시 기 파 허 (b) 이 사 수 있 세 저 파 션 bash 이 기 때 끝 다 니 됩 장 에 일 록

사이의 차이에 주목하십시오.file- 및 에크디list기념으로

긴 답변:

위의 모든 정보 + 몇 가지 예:

1:HISTFILESIZE=10그리고.HISTSIZE=10

  1. 세션을 시작합니다.
  2. HISTFILE(배시 명령 기록을 저장하는 파일)이 HISTFILESIZE=10줄로 잘립니다.
  3. 당신은 50줄을 씁니다.
  4. 50개의 명령 끝에는 HISTSIZE=10으로 크기가 결정되는 41~50개의 명령만 기록 목록에 포함됩니다.
  5. 세션을 종료합니다.
  6. 을 가정하여histappend이 활성화되지 않은 경우 명령 41 ~ 50이 HISTFILE에 저장됩니다. HISTFILE에는 처음에 보유한 10개의 명령과 새로 작성된 10개의 명령이 저장됩니다.
  7. HISTFILESIZE=10줄을 포함하도록 HISTFILE이 잘립니다.
  8. 이제 기록에 10개의 명령이 있습니다. 방금 완료한 세션에서 마지막으로 입력한 10개의 명령입니다.
  9. 새 세션을 시작할 때 1단계에서 HISTFILESIZE=10의 HISTFILE로 다시 시작합니다.

2:HISTFILESIZE=10그리고.HISTSIZE=5

  1. 세션을 시작합니다.
  2. HISTFILE(배시 명령 기록을 저장하는 파일)은 대부분의 HISTFILESIZE=10줄을 포함하도록 잘립니다.
  3. 당신은 50줄을 씁니다.
  4. 50개의 명령 끝에는 46~50개의 명령만 기록 목록에 있으며, HISTSIZE=5로 크기가 결정됩니다.
  5. 세션을 종료합니다.
  6. 을 가정하여histappend는 활성화되지 않습니다. 46 ~ 50 명령은 HISTFILE에 저장됩니다. HISTFILE에는 처음에 보유한 10개의 명령과 새로 작성된 5개의 명령이 있습니다.
  7. HISTFILESIZE=10줄을 포함하도록 HISTFILE이 잘립니다.
  8. 기록에 이전 세션에서 5개, 방금 완료한 세션에서 마지막으로 입력한 5개 등 10개의 명령이 있습니다.
  9. 새 세션을 시작할 때 1단계에서 HISTFILESIZE=10의 HISTFILE로 다시 시작합니다.

3:HISTFILESIZE=5그리고.HISTSIZE=10

  1. 세션을 시작합니다.
  2. HISTFILE(배시 명령 기록을 저장하는 파일)은 대부분의 HISTFILESIZE=5 행을 포함하도록 잘립니다.
  3. 당신은 50줄을 씁니다.
  4. 50개의 명령 끝에는 HISTSIZE=10으로 크기가 결정되는 41~50개의 명령만 기록 목록에 포함됩니다.
  5. 세션을 종료합니다.
  6. 을 가정하여histappend이 활성화되지 않은 경우 명령 41 ~ 50이 HISTFILE에 저장됩니다. HISTFILE에는 시작 부분에 유지되는 명령 5개와 새로 작성된 명령 10개가 포함됩니다.
  7. HISTFILESIZE=5줄을 포함하도록 HISTFILE이 잘립니다.
  8. 이제 기록에 5개의 명령어가 있습니다. 방금 완료한 세션에서 마지막으로 입력한 5개의 명령어입니다.
  9. 새 세션을 시작할 때 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

반응형