이전에 사용한 명령에 대한 명령 줄 기록을 어떻게 검색합니까?


186

기록을 보는 것 외에 내 기록을 필터링하는 방법이 있습니까?

"ssh"로 시작한 명령을 검색하려고한다고 가정합니까?

답변:


271

를 눌러 Ctrl+ R입력 ssh. Ctrl+ R는 가장 최근의 명령에서 이전 명령으로 검색을 시작합니다 (역 검색). 로 시작하는 명령이 두 개 이상인 경우 일치하는 항목을 찾을 때까지 +를 반복해서 ssh누릅니다 .CtrlR

일치하는 것을 찾았 Enter으면를 눌러 명령을 실행하거나 왼쪽 / 오른쪽 커서를 눌러 명령 텍스트를 선택할 수 있습니다.

검색 방향을 반전시키는 Ctrl+의 기본 반전 옵션은 R없지만 여기 에 대한 제안 사항이 있습니다.


90

당신은 당신의 역사를 검색하려는 경우, 당신은 history | grep ssh당신이 검색하고자하는 무엇이든 대신 ssh를 대신 사용할 수 있습니다 .


필자는 필터와 일치하는 모든 명령을 목록에 표시하기 위해이 방법을 사용합니다.
Pisu

15

나는 위의 약간의 변형을하고 나를 위해 잘 작동합니다 (당신이 당신의 배쉬 기록을 참조하는 경우)

내 홈 폴더에 이름이 지정된 파일을 만듭니다.

.inputrc

안쪽이 간다

"\e[5~": history-search-backward
"\e[6~": history-search-forward

참고 : 14.04에서는 위의 내용이 더 이상 작동하지 않는 것 같습니다.

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

그런 다음 원하는 이전 명령을 많이 입력하고 page up / page dn 버튼을 사용하면 항상 page up으로 시작하여 기록을 검색합니다.


루트 권한이있는 경우 / etc / inputrc를 편집하면 모든 사용자에게 적용됩니다.
울프

1
@doug, 흠. 우분투 15.04를했습니다. 이 솔루션은 작동하지만 Ctrl + LeftArrow / Ctrl + RightArrow 키를 엉망으로 만듭니다. 항목이 아닌 .inputrc 파일을 만드는 데 문제가있는 것 같습니다.
Ravi

.inputrc를 리 바인드하거나 터미널을 닫는 것을 잊지 마십시오
David Brossard 2016 년

14

Ctrl+ R를 누르면 "reverse-i-search"모드가 시작되고 "ssh"를 입력하면 "ssh"가 포함 된 명령에 대한 기록을 검색합니다.


9

다음은 고전적인 명령을 사용하는 다른 방법입니다 (더 많은 배포판에서 작동 할 가능성이 높음). 명령 기록은 .bash_history홈 디렉토리 의 파일 에 저장 되므로 다음을 수행 할 수 있습니다.

grep "ssh" ~/.bash_history

-i대소 문자를 구분하지 않는 검색이 필요한 경우 플래그를 잊지 마십시오 .


history | grep ssh임시 세션의 ssh 만 표시 하므로이 답변을 보러 갈 것입니다.
iniravpatel

3

인터넷 어딘가에 다음 기능을 발견하여 큰 효과를 발휘했습니다. 이것을 당신의 것으로 넣으십시오 ~/.bashrc:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}

이제 쉘을 다시로드하십시오 : exec bash. 이제 다음과 같이 사용할 수있는 새로운 명령이 있습니다.

hgrep ssh

기록에서 일치하는 명령 목록이 표시됩니다. 명령을 실행하려면 !명령 번호를 입력하십시오. 예를 들면 다음과 같습니다.

~:$ hgrep scp
  207  tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
  421  tn scp scott-laptop __HOST__:Scott\ Severance.asc .
  422  tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
  468  tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  469  tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  470  scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207

훨씬 유연한 검색이 가능하고 한 번에 여러 개의 결과를 볼 수 있기 때문에이 방법은 Ctrl+ 보다 낫습니다 R.


2

이것을 당신의 것으로 넣으십시오 ~/.bashrc:

별칭 hgrep = '연혁 | grep --color = auto '

예:



1

역사는 잘하지만 제한입니다 - 내가 로그인 할 수 있도록 내 bash는 환경을 설정하는 것을 선호 모든 . 내가 실행 한 명령을 그들이에서 실행 된 디렉토리에 추가하여, 그럼 내가 모든 명령을 나열 명령을 실행 grep 등으로 파이프 할 수있는 현재 디렉토리에서 실행했습니다 .'dish '라고합니다.

https://github.com/wolfwoolford/dish

추적을 자르려면 .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc ) 에서 소스를 찾으십시오.

디렉토리에 관계없이 실행 된 모든 명령을 인쇄하는 'dishg'또는 dish global이라는 무료로 제공되는 유용한 명령도 있습니다. 분명히 이것은 grep과 tail 등과 함께 사용할 때만 유용합니다 ...

나는 그것을 수년간 사용해 왔으며 문자 그대로 새 상자를 설치할 때마다 설치하는 첫 번째 것입니다. 숨겨진 디렉토리 (~ / .dish)의 텍스트 파일로 실행하는 명령을 기록합니다. 디스크 공간에 문제가 없었습니다 ...


0

이것을 @ssmy에 대한 주석으로 작성 하고 싶었지만 주석 에서 형식을 얻지 못했습니다.

내역을 검색 한 후 history | grep ssh느낌표가 앞에 붙은 번호 (예 :)를 입력하여 원하는 명령을 실행할 수 있습니다 !42.

예:

$ 역사 | grep ssh
  5 ssh me@someserver.net
 13 ssh me@someotherserver.net
 42 ssh me@thisone.com
$! 42
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.