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

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

매일 실행해야 하는 명령이 많으며 일반적으로 약간의 변형이 있습니다.

지금은 모두 저장 .bash_history하고 액세스하는 데 CTRL-를 사용 R하지만 더 좋은 방법이 있는지 궁금합니다. 내가 찾고 있는 것:

  • 새로운 명령을 쉽게 추가
  • 원하는 명령을 쉽게 검색하고 재실행
  • 제안에 불필요한 명령을 피하세요

cd불행하게도 bash_history는 세 번째 요구 사항에 그다지 강력하지 않습니다. and 를 수행하면 ls기록 파일이 매우 빨리 채워집니다. 나는 최근에 중복이나 특정 명령을 피하기 위해 기록을 구성할 수 있다는 것을 배웠지 HIST_SIZE만, 모든 것을 구성하기 전에 이것이 최선의 방법인지 확인하고 싶습니다.

답변1

또 다른 팁: 저는 가끔 명령을 북마크/표시하기 위해 주석을 사용합니다.

my_command #bookmark

그 다음에:

[ctrl-r]#bookmark

답변2

다음 readline 명령이 매우 유용하다는 것을 알았습니다.

history-search-backward,
history-search-forward

reverse-search-history(이것은 - , - forward-search-history에 대한 일반적인 바인딩 과 다릅니다 .)CtrlRCtrlS

이 명령을 다음 줄 Ctrl과 결합 Up하여 Ctrl입력 했습니다 .Down~/.inputrc

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

작동 방식: 명령 시작 부분에 몇 개의 문자를 쓰고 Ctrl- 를 누르면 Up해당 접두어로 시작하는 다음 이전 명령이 표시되고, 다음 명령을 보려면 다시 누르는 식입니다. 만족스러우면 명령을 수정하고 Enter실행을 누를 수 있습니다.

답변3

"별칭"을 사용하세요

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

답변4

나는 사본을 보관하고 있습니다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, 및 다음 명령(일반 용도로 수정됨)정리 스크립트

# 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

관련 정보