배쉬 히스토리에 라인 삽입


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.