자주 사용하는 명령을 빠르게 저장하고 액세스하는 방법은 무엇입니까? 나는 그것들을 모두

나는 일상적으로 실행해야 할 많은 명령을 가지고 있으며, 종종 약간의 변형이 있습니다.

지금 나는 그것들을 모두 저장 .bash_history하고 사용하고 있습니다 CTRLR그것들을 액세스하는데 더 좋은 방법이 있는지 궁금합니다. 내가 찾는 것 :

  • 새로운 명령을 쉽게 추가
  • 원하는 명령을 쉽게 검색하고 다시 실행할 수 있습니다.
  • 제안에서 원치 않는 명령을 피하십시오

나는 몇 가지를 할 경우 : 불행하게도, bash_history는 세 번째 요구에 너무 강하지 cd하고 ls신속하게 기록 파일을 채 웁니다. 나는 최근에 배웠고 HIST_SIZE복제 또는 특정 명령을 피하기 위해 기록을 구성 할 수 있지만 모든 것을 구성하기 전에 가장 좋은 방법인지 확인하고 싶었습니다.



답변

다음 readline 명령이 매우 유용합니다.

history-search-backward,
history-search-forward

(그들이 평소와 다른 인식 reverse-search-history, forward-search-history,에 묶여 CtrlR, CtrlS).

나는에 관련된 이러한 명령이 CtrlUpCtrlDown에 다음 줄을 넣어 ~/.inputrc:

"\e[1;5A": history-search-backward
"\e[1;5B": history-search-forward

작동 방식 : 명령 시작 부분에 문자를 몇 개 쓰지 않고 Ctrl-를 누르면 Up해당 접두사로 시작하는 다음 이전 명령이 표시되고 다시 누르면 다음이 표시됩니다. 만족하면 명령을 수정 한 후을 눌러 Enter실행하십시오.


답변

또 다른 팁 : 때로는 주석을 사용하여 명령을 북마크 / 태그 지정합니다.

my_command #bookmark

그때:

[ctrl-r]#bookmark


답변

범위가 매우 제한적이지만 다음 두 확장 자리 표시자를 지적하고 싶습니다.

!! 

마지막 명령의 자리 표시 자 확장입니다. sudo명령 앞에 놓는 것을 잊어 버린 경우에 유용합니다 .

!$ 

마지막 매개 변수를 반복합니다. 다른 명령을 반복하고 싶을 때 유용a/very/long/path/name/you/do/not/want/to/type/again


답변

‘별칭’사용

alias 이를위한 훌륭한 도구입니다.

  • 명령 행에서 하나를 쉽게 선언하여 현재 쉘 세션 중에 사용할 수 있습니다.
  • 나중에 사용할 경우 쉘 구성에 추가 할 수 있습니다.

별명을 사용하면 별명을 입력 한 것과 똑같으므로 매우 유연합니다. 예를 들어 파이프와 함께 사용할 수 있습니다.

alias findfoo="grep 'foo'"
echo 'foo1 \n foo2 \n bar1 \n bar2 \n foo3' | findfoo # Does your custom grep

아직 지정하지 않은 플래그를 전달하여 “약간의 변형”을 수행 할 수 있어야합니다.

echo 'foo1 \n foo2 \n bar1 \n bar2 \n foo3' | findfoo -v # finds non-matches


답변

자주 사용하는 명령에 대해 최소한의 쉘 스크립트를 작성하고 짧은 이름을 지정합니다. 그것들은 모두 같은 장소에 저장되며에 추가됩니다 PATH.

그렇게하면 매우 복잡한 명령에 대한 바로 가기 액세스가 alias가능하지만 달리 작업의 변경 가능한 부분을 바로 가기의 명령 줄 인수로 바꿀 수 있습니다.


답변

Git에서 .bash_history 의 사본을 유지하고 있습니다. 이를 단순화하기 위해 설정했습니다

# don't put duplicate lines in the history
# don't save commands which start with a space
HISTCONTROL=ignoredups:erasedups:ignorespace

# append to the history file, don't overwrite it
shopt -s histappend

.bashrc에 , 다음 명령 A의 (일반적으로 사용하기 위해 수정) 정리 스크립트

# Ensure a single space at the end of each line to easier add more parameters
sed -i -e 's/ *$/ /' "~/.bash_history"

sort --unique --output="~/.bash_history" "~/.bash_history"

에 라인을 추가하기 전에 실행 git gui합니다. 기록 파일은 모든 명령으로 수정되므로 특정 저장소를 업데이트하는 특수 명령도 있습니다.

git stash && git pull && git stash pop


답변

역사와 관련된 다른 모든 대답 중에서도.

내가 설정

HISTFILESIZE=2024
HISTSIZE=1024

~ / .bash_profile에서

다른 의견 이외에 : 역사

또 다른 유용한 기능은 …

와 함께 역사 리콜 시작

!first few letters<ESC>Ctrl-E

처음 몇 글자로 시작한 마지막 명령을 기억합니다

예 :

!find<ESC>Ctrl-E

GUI를 사용하는지 또는 명령 줄 만 사용하는지 언급하지 않았습니다. GUI를 사용하는 경우 영구 클립 보드 관리자 중 하나를 사용하여 일반적으로 사용되는 명령, 사용자 ID, 비밀번호, URL 등을 복사 / 붙여 넣기 할 수 있습니다.