Bash 기록에 명령을 실행하지 않고 어떻게 추가 할 수 있습니까?


32

가끔씩 실제로 실행하지 않고 Bash의 히스토리에 명령을 직접 추가하는 것이 유용합니다. 지금까지 내가 찾은 닫힌 것은 #앞에 추가하고 반환을 누르는 것입니다. 더 좋은 방법이 있습니까?

답변:


39

history -s 명령


그 기능에 대해 몰랐습니다. 나는 그것을 즉시 사용한다고 생각할 수는 없지만 알아 두는 것이 좋습니다.
Doug Harris

7
스크립트에서 이와 비슷한 명령을 실행할 수 있는지 알고 있습니까? 나는 스크립트가 ./resize-images.sh난 그냥 칠 수 있도록 대신 스크립트 내 역사에 명령을 추가 할 수 있다면, 정말 유용 할 것이다 그의 마지막 줄 변경 사항을 취소 할 실행해야합니다 명령을 나타냅니다을 up-enter내가 취소 필요한 경우
벤 페이지

1
@ BenPage : 두 가지 대답을보십시오 : unix.stackexchange.com/questions/112354/… .
RustyTheBoyRobot 2016 년

9

history -s 명령

키 입력을 바인딩하여이를 수행 할 수도 있습니다. Bash 프롬프트에서이를 입력 할 수 있습니다.

bind '"\C-q": "\C-a history -s \C-j"'

또는 이것을 다음에 추가하십시오 ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

그런 다음 무언가를 입력하고 Ctrl-를 누르면 q실행되지 않고 기록에 추가됩니다. "역사"전에 공간은 원인 history자체가 명령 하지 귀하의 경우 역사에 추가 할 HISTCONTROL변수가 포함 ignorespace또는 ignoreboth. "\ Cq"대신 다른 키 입력을 선택할 수 있습니다.


3

한 문자 "명령"보다 짧은 것을 생각해 내기가 어렵 기 때문에 실제로 키 스트로크 수준으로 이동해야합니다. 내 bash 설정과 미국 키보드를 사용하면 이제 수행 할 작업이 있습니다.

  1. 줄의 시작으로 이동 : CTRLA: +1 명령, +2 키 누르기
  2. 추가 #(필요 SHIFT) : +1 명령, +2 키 누르기
  3. ENTER+1 명령, +1 키 누름으로 기록에 추가

총 3 개의 명령으로 5 번의 키 누르기.

를 사용하면 ALT#1 번의 명령과 2 번의 키 누름에서 동일하게 수행됩니다.

키보드 레이아웃 및 bash 구성에 따라 YMMV


3
문제는 키를 누르는 횟수가 아니라 "command"대신 "#command"가 기록에 저장된다는 것입니다.
Grumbel

1
"#command"는 명령이 실제로 실행되지 않았다는 것을 알려주는 히스토리 파일에 저장되는 것이 좋습니다. 나중에 문제를 파악하기 위해 입력 한 명령을 검토하려는 경우에 유용 할 수 있습니다.
Marnix A. van Ammers

2
@Grumbel, @Marnix : 동의합니다. 저는 그 편지에 대한 질문에 대답하지 않았지만 그가 지금하는 일을 더 빨리 만드는 방법을 보여주었습니다. 개인적으로 사용하는 #command것이보다 빠르며 올바르게 history -s command매핑하면 사용하기가 매우 쉽다고 생각합니다 history-search-backward/-forward. 그러나 맛의 문제입니다.
Benjamin Bannier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.