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.