bash에서 실행하지 않고 history에 명령 저장


8

명령을 실행하지 않고 bash 기록에 저장하는 방법이 있습니까? 예 :

$ cmd [a long list of arguments] 

이제 타이핑하는 동안 나는 다른 것을 먼저하고 싶다는 것을 기억합니다. 나는 뭔가를 가질 수 있을까?

$ cmd [a long list of arguments][some-key-strokes]

그리고 이것은 실제로 실행되지는 않지만 bash 히스토리로 들어가서 나중에 사용할 수 있습니까?


5
그 상황에서, 나는 그 줄 앞에 접두사를 붙인다. #, 그리고 Enter를 누르십시오.
Oliver Charlesworth

답변:


5

더 좋은 방법이있을 수 있지만 역사 확장을 사용할 수 있습니다. :p 수정자를 실행하지 않고 현재 주석 행을 인쇄합니다. !# 현재 줄입니다. % 그 자체로는 아무것도 일치하지 않을 것이다.

$ cmd [arguments] !#%:p

시원한! ;) 명령에서 특수 문자를 이스케이프 할 필요없이 명령이 단순하지 않은 경우 지저분해질 수있는 부분 ls -al +1

시원한! 매우 산뜻한

8

사용 -s 옵션을 history 명령:

history -s cmd arg1 arg2

에 대한 호출 history -s 편리하게도, 명령 기록에 추가되지 않으므로, 기록에서 실행 한 것처럼 보입니다. cmd 실제로 이렇게하지 않고.


시원한! 이것도 멋지다.

1

보통 이것은 다음에 의해 수행됩니다.

echo 'cmd [a long list of arguments]' >> /home/you/bash_history

기록의 이름은 시스템마다 다를 수 있습니다. 따라서 HISTFILE 환경 변수

무엇이 :

echo 'cmd [a long list of arguments]' >> "$HISTFILE"

1

일반적으로 나는 라인을 주석으로 변환하기 위해 라인의 처음에 #를 추가한다.

#cmd [a long list of arguments] 

나는이 방법을 선호한다. 왜냐하면 당신은 # 3을 사용하여 그것을 할 수 있기 때문이다.

^a#<ENTER>

^ a는 현재 선의 시작에 간다

# 코멘트를 추가합니다.

ENTER는 주석을 실행합니다.


0

그 상황에서, 나는 그 줄 앞에 #을 붙이고 Enter를 누른다.

... 또는 키 조합을 사용하십시오. ESC #

bind -p | grep -i 'insert-comment'   # "\e#": insert-comment

참조 : Bash - 명령을 실행하지 않고 저장


0

공백을 추가하고 | (파이프)을 입력하고 Enter 키를 누른 다음 Ctrl-C '를 누릅니다.

( 공간 , | , 들어가다 , Ctrl + 기음 )

이 명령은 | (백 스페이스로 간단히 제거 할 수 있습니다.) 처음에는 # 대신 #을 사용합니다 (제거하는 것이 더 지루할 수 있음).

면책 조항 : 이것은 항상 작동하는지 모르겠습니다! 자신의 책임하에 사용하십시오!

$ cmd [긴 인수 목록] |

& gt; Ctrl + C

$ 쪽으로

$ cmd [긴 인수 목록] |


0

이 줄을 사용해보십시오 :

history -s -p $COMMAND

에서 help:

The -p option means to perform
history expansion on each ARG and display the result,

즉, 다음과 같은 것을 확장 할 수 있습니다. !! 그 결과를 역사의 맨 아래에 저장하십시오.


history -s 2 년 전 대답으로 주어졌습니다. ~을합니까? -p 그것에 개선? 무엇을 하는가? -p 해야 할 것? (그렇게하는 것이 의미가있는 한, 당신은 편집하다 당신의 답을 더 좋게 만들고 다른 의견으로 내 의견에 응답하지 마십시오.)
G-Man

0

또 다른 옵션은 행의 시작 부분으로 이동하여 수행 할 작업을 & amp; & amp;

rm old_file && cmd [args]

따라서 원하는 작업이 성공하면 즉시 명령이 실행되고 실패하면 명령이 실행되지 않지만 명령은 실행됩니다. 너도 할 수있어.

test && cmd [args]

args가없는 테스트는 실패 할 것이기 때문에 이것은 약간의 추가 키 스트로크입니다. # 방법.


0

제 생각에 당신이 원하는 "키 스트로크"는 Ctrl-U와 Ctr-Y로, 킬 링에 줄을 저장 한 다음 나중에 다시 꺼냅니다. 그것은 역사에 포함되지 않지만, 그렇게하지 않아야한다고 생각합니다.

Readline Killing 명령어

살해와 양킹

나는이 년 전에 배웠고, 그 다음 잊었고, 그 중요한 스트로크를 찾아 갔다.

그것은 또한 여기에서 논의되었습니다. https://unix.stackexchange.com/questions/140741/how-to-save-a-command-youentent-without-executing-it

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