Bash 기록에 줄 삽입

Bash 기록에 줄 삽입

기본적으로 bash는 ~/.bash_history기록에서 행을 로드합니다. 로드할 사용자 정의 파일을 추가할 수 있습니까? 자주 사용하는 명령이 포함된 파일을 삽입하고 내장된 검색을 통해 액세스하고 싶습니다.

답변1

나는 alias h='history|grep'그것을 내 Bash 프로필에 로드하기만 하면 됩니다.

내 작업 흐름은 h command예를 들어 다음과 같습니다.h hpssa

#  h hpssa
  202  05-28-2015 11:54:33  hpssacli
  217  05-28-2015 11:54:33  hpssa -start
  225  05-28-2015 11:54:33  hpssacli -stop
  226  05-28-2015 11:54:33  hpssa -stop
  228  05-28-2015 11:54:33  hpssa -start

" "를 실행하려면 hpssa -stop그냥 입력하면 됩니다.!226


이것은 단지 나의 접근 방식일 뿐이지만 역사적 항목을 기억하는 방식을 수정할 수도 있습니다. 실제로 기록 파일에 데이터를 주입하는 것은 의미가 없다고 생각합니다.

답변2

나는 이전에 입력한 긴 명령을 검색하기 위해 기록을 거꾸로 검색하는 Ctrl-R( Readline 명령) 에 크게 의존했지만 이제는 별칭과 쉘 스크립트/함수를 사용하는 것을 선호합니다. reverse-search-history어쨌든 Bash history내장 기능을 사용하여 사용자 정의 명령 목록을 현재 기록에 로드할 수 있습니다.

history -r [filename]

Bash 매뉴얼 페이지에서:

기록 파일의 내용을 읽고 이를 현재 기록 목록에 추가합니다.

자동화 시작

방금 내 로 추가해 보았습니다 .bashrc. 그러나 새 셸을 시작할 때 사용자 정의 기록 파일의 명령을 사용할 수 없습니다. 쉘 기록은 .bash_history기본 파일에서만 로드되는 것 같습니다.뒤쪽에시작 파일이 처리되었습니다.앞으로프롬프트가 대화형 셸에 나타납니다. 안타깝게도 이 작업을 자동으로 수행하는 쉬운 방법은 없는 것 같습니다.

답변3

@AnthonyGeoghegan이 관찰했듯이 시작 파일이 처리된 후에 기록이 로드됩니다. 이는 시작 파일에 필요한 기록을 미리 로드하는 다른 방법을 제공합니다.

mv .bash_history .bash_history.tmp
cat .extra_hist .bash_history.tmp > .bash_history
# or swap them, to put the extra stuff at the end of the history, for
# quicker ^R access.

이 접근 방식을 사용하면 시간이 지남에 따라 특수 명령의 여러 복사본이 .bash_history에 추가될 수 있습니다. .bash_history 파일을 채울 때(예: sed를 통해) 쉽게 찾아서 제거할 수 있도록 특수 명령을 주석 줄로 묶을 수 있습니다. 그것은 다음과 같습니다:

cp .extra_hist .bash_history
sed '/: remove from here/,/:remove to here/d' .bash_history >> .bash_history

관련 정보