번호 매기기 기록 명령을 어떻게 편집 할 수 있습니까?


17

자주 변경 사항을 검색합니다 history | grep 'string'

내 히스토리에서 히스토리 라인 번호와 함께 명령 목록을 얻습니다.)

history | grep 'git'

  755  git status
 1535  git push origin master
 1570  git merge origin/one-146
 1667  git reset --hard origin/master

!nnn예를 들어 다음 과 같이 한 번에 명령을 기억하고 실행할 수 있습니다 .

!755
git status
# On branch master
nothing to commit, working directory clean

내 질문은 : 번호가 매겨진 기록 명령을 리콜하고 편집을 위해 명령 줄에 머물러 있고 그대로 그대로 '실행' 하지 않고 실행 !하여 몇 가지 peform presing return을 변경할 수 있습니까?

답변:


12

이후 다른 접근 방식을 채택했습니다. ![line-number]:p

명령문을 인쇄하여 실행 기록에 추가하지만 실제로 실행하지는 않습니다. 그런 다음 위쪽 화살표를 사용하여 원하는대로 변경하십시오.

이 텍스트를 hg별칭 ( alias hg='history | grep ') 과 결합 하여 일부 텍스트를 기반으로 기록 명령을 호출합니다.

예:

$ hg checkout

17140   git checkout README.rdoc
17143   git checkout master
17201   git checkout README.rdoc
17204   git checkout master
17923   git checkout .bashrc
18151   git checkout v311

나는뿐만 아니라 이것을 사용 ctrl- r가끔 1 개 라인이에 바로 출력이 아닌 주어진 문자열을 훑어의 즉각적인 목록을 확인하는 것을 선호하기 때문에 (역 역사 검색) ctrl- r을 보여줍니다. 그런 hg [string]다음 위 ![line-number]search_stringhg checkout그림과 같이하십시오.


8

histverify 옵션 을 설정하면 ( 예 :

shopt -s histverify

그러면 모든 실행 기록 대체가 즉시 실행되는 대신 편집을 위해 제공됩니다. 그런 다음 명령을 실행하기 위해 Enter입력 한 후 한 번이 아니라 두 번 눌러야 !755합니다.

을 사용하여 임의의 텍스트를 기록 목록에 넣을 수 있습니다 history -s. 이것을 결합 fc -nl하여 특정 기록 항목을 나열하십시오.

history -s "$(fc -nl 755 755)"

그런 다음을 눌러 Up현재 최신 기록 항목을 불러옵니다.


6

Ctrl+를 사용하여 기록을 다시 검색 할 수 있습니다 R. 히스토리 항목이 길면 마우스 (키보드가 아닌 검색을 중지 함)를 사용하여 명령의 일부를 복사하여 붙여 넣어 다시 편집하십시오.

@rijsg가 언급했듯이 (왼쪽 및 오른쪽) 화살표 또는 동등한 키를 사용하여 검색을 중지하고 편집을 시작할 수 있습니다.


2
화살표 키나 이와 동등한 명령 ( Ctrl-a예 :)을 누르면 검색이 실행되지 않고 명령 프롬프트에 현재 기록 항목을 남기지 않습니다. @Michael이 원하는 것에 따라 이것은 충분하거나 충분하지 않을 수 있습니다.
njsg

2

명령 행에서 vi 편집기를 사용하도록 .bashrc 파일을 구성하면 명령 행 편집이 훨씬 덜 복잡해집니다.

1 일 1 회 "set -o vi" 가 활성화되면 "<esc> k" 를 누른 다음 "k"를 계속 눌러 기록 파일을 그대로 올릴 수 있습니다. 항목을 지나갈 경우 "j"를 사용하십시오. 내려갑니다 .

참고 : vi를 사용할 때 두 가지 모드가 있습니다 : command 및 edit 명령 모드로 들어가려면 ESCAPE KEY ONCE를 누른 다음 a, A, i, I 등을 삽입하십시오.

vi의 간단한 커서 패드 : left = h, down = j, up = k, right = l http://linuxmeister.net/vi/vi-Summary.jpg

이 작업을 수행하는 데 필요한 모든 항목을 http://linuxmeister.net/Notes/bashrc-simple.html에 추가 했습니다.

따라서 위의 매우 유용한 정보를 바탕으로 "역사"를 사용하고 "역사"에서 한 줄을 호출하지 않고 실행할 수있었습니다. (포스트 감사합니다!)

shopt가 나열되고 histverify가 "off"인 경우 a! 즉시 실행됩니다.

.bashrc에 추가했거나 다음을 입력 한 경우 : shopt -s histverify , a! 예를 들어 다음과 같이 편집 할 수 있습니다.

history
    1  more .bashrc
    2  history
    3  shopt
    4  . ./.bashrc
    5  shopt | grep hist
    6  history
    7  alias
    8  history
    9  shopt
   10  history

->! 5

! 5를 누르면 다음 명령이 나타나지만 실행되지는 않습니다

histverify가 "on"인 경우 ###

shopt | grep hist
cmdhist         on
histappend      on
histreedit      off
histverify      on
lithist         off

Linus와 Richard는 UNIX를 활용하기 위해 Linux 및 GNU 도구를 만들었습니다. vi 편집기 (Bill Joy가 작성)는 UNIX 및 Linux의 모든 배포에서 마스터 할 수있는 최상의 도구 중 하나입니다.

다른 모든 명령 행 편집기를로드해야하며 추가 소프트웨어가 필요합니다. Linux에서 Firefox, Thunderbird 및 OpenOffice 이외의 GUI를 사용하는 것은 1968 VW Beetle로 Diesel 4x4를 ​​견인하는 것과 같습니다 ... 작동하지만 확실하지 않습니다.

Kernigan이 GUI에 대해 말한 것을 기억하십시오. "당신이 보는 것이 전부입니다."


-1
echo !number

그런 다음 위쪽 화살표를 누르고 단어를 제거 echo하고 나머지를 편집하십시오. Enter 키를 눌러 실행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.