배쉬 히스토리에 라인 삽입


9

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


2
일반적으로 사람들은 자주 사용하는 명령에 대한 별칭을 추가합니다 ...
HBruijn

훌륭합니다. 그러나 그것은 사실이 아닙니다. 나는 끊임없이 사용하는 명령에 별칭을 사용하지만 상황에 따라 수정하려는 많은 수의 인수가있는 많은 명령이 있습니다.
rgtk

4
다소 미친 것처럼 들리고 작동하지 않을 수있는 일종의 파일 수정을 cron해야합니다. 그냥 긴 명령 인수를 허용하는 쉘 스크립트를 만들고 그것을 드롭 /usr/local/bin또는 무언가
웨슬리

당신이 그들을 자주 사용한다면, 어쨌든 그들은 당신의 역사에 있지 않습니까?

에서 함수를 선언 .bashrc?
Mark K Cowan

답변:


13

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


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


좋은 속임수, 그 중 하나를 훔치는
wim

히스토리에서 다시 검색하기 위해 Ctrl-R이 수행하는 작업을 살펴볼 수 있습니다. 당신의 마음을 날려 버릴 준비를하십시오 ...

2
@CameronKerr이 답변 바로 아래의 답변을 살펴보십시오 ( serverfault.com/a/695115/120438 ).이 특별한 경우 Ctrl + R을 사용하면 단점은 한 번에 하나씩 관련 명령을 제공한다는 것입니다. approach는 모든 관련 명령 목록을 반환합니다.
Jenny D

이것은 훌륭한 트릭이지만 질문에 전혀 대답하지 않습니다. 이것이 어떻게 가장 높은 투표 응답인지 이해하지 못합니다. 내 유스 케이스는 도커 이미지가있어 종료 할 때 기록을 계속 잃어 버리는 것입니다. 커맨드 라인을 통해 기록 파일을 전달할 수 있다면 좋을 것이라고 생각했습니다.docker run ...
kumarharsh

@kumar_harsh 감사합니다.
ewwhite

7

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

history -r [filename]

bash 매뉴얼 페이지에서 :

히스토리 파일의 내용을 읽고 현재 히스토리 목록에 추가하십시오.

스타트 업 자동화

방금이 명령을 내 마지막 줄로 추가하여 자동으로 시작하려고했습니다 .bashrc. 그러나 새 쉘을 시작할 때 사용자 정의 히스토리 파일의 명령을 사용할 수 없었습니다. 쉘의 역사는 단지 기본에서로드 것 같습니다 .bash_history: 파일 시동 파일이 처리 된 바로 전에 프롬프트 대화 형 쉘 표시됩니다. 불행히도 이것을 자동화하는 쉬운 방법이없는 것 같습니다.


2

@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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.