ZSH-전체 기록을 출력 하시겠습니까?


37

최근에 bash에서 zsh로 전환했습니다. 내가 이전에 실행 명령했다 찾는 데 사용하는 것이 (재귀 검색 이외의) bash는, 하나의 방법으로 history | grep whatever어디, whatever내가 기억하는 명령의 비트입니다.

zsh에서는 작동하지 않습니다. history.zsh_history파일에 많은 항목이 포함되어 있어도 몇 가지 항목 만 반환합니다 .

검색에 적합한 전체 기록을 어떻게 출력 할 수 grep있습니까?

답변:


48

히스토리는 zsh 항목의 범위를 [first] [last]인수 로 허용 하므로 모두 실행 history 0합니다.

Alt-h히스토리 명령에 zsh 도움말 (적어도 염두에 두어)을 입력 하면 내장 도움말이 표시됩니다.


3
큰! 그것은 나를 위해 성가신 기본값이므로, 이것을 내 별칭 파일에 추가하고 있습니다 :alias history="history 0"
Nathan Long

7
아니 그것은 중요하지만, 기록 목록 1에서 시작하고 0이 아닌 것을
ggustafsson

2
나는이 별명을 스스로 사용하고있다 :alias h='history 1 | grep'
Harald Nordgren

3
이것은 나를 위해 작동하지 않는 것 같습니다 : 내 ~/.zsh_history10066 줄이 있지만 history 0(또는 동등한 fc -l 0것) 4999 줄만 인쇄합니다.
jayhendren 2016 년

2
받는 history 1 | grep사람, 난 당신에 대해 알고 희망 ctrl+r이제까지 최고의 트릭 / 바로 가기 -!
Emil Vatai

9

허용되는 대답은 정확하지만 검색을 수행하기 위해 외부 이진을 호출 할 필요 는 없습니다 .grep.zshrc

histsearch() { fc -lim "*$@*" 1 }

노트:

  • fc대화식 히스토리를 제어하는 ​​zsh 내장입니다. history와 같습니다 fc -l.

  • -m플래그는 인용되어야하는 패턴을 필요로한다.

  • -i플래그는 타임 스탬프를 추가합니다.

  • fc는 더 많은 트릭을 가지고 있습니다 (예 : 현재 세션의 내부 기록으로 검색 제한). zshbuiltins(1)매뉴얼 페이지 또는 공식 문서를 참조하십시오 .


"$ @"대신 "* $ @ *"(추가 별표 참고) 패턴을 사용하는 것이 가장 좋습니다. 후자는 정확히 일치하는 항목 만 생성합니다.
Piotr Dobrogost

1
당신은 완전히 맞습니다, @PiotrDobrogost! 내가 한 상태 에서이 답변을 어떻게 제출했는지 잘 모르겠습니다. 메모리에서 해당 기능을 입력해야한다고 생각합니다. 그대로 사용하기가 쉽지 않으므로 별표를 포함하도록 답변을 편집하겠습니다.
wjv

3

fzf를 살펴 보십시오 . 쉘 히스토리뿐만 아니라 브라우저 히스토리, 디렉토리 히스토리 등과 같은 다른 흥미로운 위치에서도 "무슨 입자"를 찾는 데 도움이됩니다.

fzf는 명령 행 퍼지 파인더입니다. 즉, 찾고있는 입자 또는 분수를 검색 할 수 있으며 지속적으로 구체화 할 수있는 일치 항목이 표시됩니다. 정말 게임 체인저입니다.

저자 의 홈페이지 에는 많은 예시가 들어 있습니다.


언급 한 내용을 뒷받침하는이 답변에 대한 참조를 추가하십시오.
Pimp Juice IT

슈퍼 유저에 오신 것을 환영합니다! 읽어 보시기 바랍니다 소프트웨어 권장하는 방법 에 대한 최소한의 필요한 정보를 슈퍼 사용자에 소프트웨어를 추천하는 방법과 제안을. 제공된 링크가 깨져도 답변을 유용하게 유지하려면 이러한 세부 정보를 답변으로 편집해야합니다.
저는
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.