쉘 기록에 특정 명령을 "고정"시키는 방법이 있습니까?
나머지 기록과 마찬가지로 Ctrl+R을 사용하여 검색할 수 있는 즐겨찾는 명령을 저장하고 싶지만 만료되어서는 안 됩니다.
답변1
간단한 접근 방식은 셸 시작 파일에 코드를 넣어 추가 기록 파일을 읽고, 끈끈한 줄을 잊어버리지 않도록 충분한 기록 줄을 메모리에 저장하는 것입니다.
세게 때리다
존재하다 ~/.bashrc
:
history -r ~/.bash_history.sticky
HISTSIZE
또한 최소한 HISTFILESIZE
줄 수 ~/.bash_history.sticky
와 긴 세션에서 실행하는 명령 수를 추가 해야 합니다 .
HISTFILESIZE=1000
HISTSIZE=10000
고정 기록 항목이 메모리에 유지되고 값이 너무 크지 않도록 하려면 HISTSIZE
기록을 수동으로 정리하여 수행할 수 있지만 PROMPT_COMMAND
.history -d
erasedups
HISTCONTROL
다루기 힘든
존재하다 ~/.zshrc
:
fc -RI ~/.zsh_history.sticky
HISTSIZE
또한 최소한 SAVEHIST
줄 수 ~/.zsh_history.sticky
와 긴 세션에서 실행하는 명령 수를 추가 해야 합니다 .
SAVEHIST=1000
HISTSIZE=10000
큰 문제 없이 고정 기록 항목을 메모리에 유지하려면 임시 파일에 쓰고 편집된 버전을 다시 읽어야 함에서 기록을 수동으로 트리밍하여 이를 수행 HISTSIZE
할 수 있습니다 . 또는 옵션을 설정합니다.precmd
fc -W
hist_ignore_dups
hist_ignore_all_dups
답변2
내 솔루션은 cron 작업과 .*sh_history 파일의 여러 줄이었습니다.
하루가 끝나면 이 크론 항목이 실행됩니다(내 항목은 오후 11시로 설정됨).
0 23 * * * cat /home/username/.bash_history >> /home/username/BIGHISTORY
고정 명령이 일반 기록 스크롤 버퍼에서 벗어나는 경우 간단한 grep 명령을 사용하여 BIGHISTORY 파일에서 해당 명령을 찾아 다시 접힌 부분으로 가져올 수 있습니다. 나는 이것이 당신이 원하는 것이 아니라는 것을 알고 있지만 최소한의 노력으로 가장 가까운 가난한 사람의 버전입니다.
답변3
bash
(모름 ) 에서 zsh
설정할 수 있습니다
export HISTFILESIZE=-1
export HISTSIZE=-1
당신 안에서 .bashrc
당신의 역사가 영원히 살아있게 해주세요. 나도 알아요, 이게 정확히 당신이 찾고 있는 것이 아니란 걸요. 그러나 즐겨 사용하는 명령의 경우 별칭이나 함수를 만드는 것이 좋습니다.
답변4
Zsh에서는 기록을 유지합니다긴시간. 네. HISTSIZE
(20000
다양한 설정이 포함되어 있으므로 여기에 나열하지 않겠습니다.) 이 작업에는 약 10개월이 걸렸습니다. 내 기록 파일( ~/.zhistory
)은 크기가 1.1MiB이고 시작 속도가 눈에 띄게 느려지지 않습니다.
저는 보통 다른 터미널에서 작업 기록을 가져옵니다 fc -R
(여러 터미널이 열려 있는 경우 - 항상).
하지만 귀하의 질문에 답하기 위해 실제로 저장하려는 명령을 "표시"하고 # GOOD
끝에 설명을 추가했습니다. 이는 광범위한 실험을 거쳐 오랜 시간이 걸려 어렵게 얻은 경우가 많습니다. 그 중 일부는 재사용이 거의 불가능한 스크립트가 되지만 태그를 지정하는 것이 이를 저장하는 가장 빠른 방법입니다. 워낙 오랜 역사를 가지고 있기 때문에 역사적 검색을 하면 # GOOD
대개 내가 원하는 것을 꽤 빨리 찾을 수 있습니다.