bash 히스토리를 사용하여 이전 명령을 가져오고 복사 한 다음 '실행'하지만 명령이 주석 처리됨
내 bash
기술 을 향상시키기위한 질문 입니다. 나는 항상 소유한다 :
$ history | grep some_long_command
...
...
123 some_long_command1.........
124 some_long_command2.........
...
그런 다음 다음을 수행하여 언어 명령을 사용할 수 있습니다.
!123
그러나 나는 종종 이것을 가지고 싶다.
some_long_command1foobar
즉, 실행하기 전에 명령을 변경하십시오. 대신 bash를 사용 하여이 명령을 사용합니까?
#some_long_command1
그래서 그것은 주석을받습니다.
그런 다음 마우스를 사용하여 명령을 강조 표시하고 편집 한 다음 사용할 필요가 없습니다 (키보드를 더 빨리 사용할 수 있음).
펼쳐져있을 수 있습니다.하지만 이미 어딘가에 기능이 내장되어있을 가능성이 있습니다. ....?
감사합니다.
역사을 사용하는 명령 대신 ctrl+r
해당 명령 을 사용 하고 입력 입력하는 것이 좋습니다 . 수정하러가는 것처럼 화살표 키를 표시하는 자동 완성 인식에서 나가고 실행하기 전에 찾을 수 있습니다.
업데이트 : 또한 이전 입력 한 주문을 계속 구매 ctrl+r
실제로 :p
명령에 추가 하여 실행하지 않고 인쇄 할 수 있습니다. 예를 들면 :
$ ls -la
$ !!:p
ls -la
실행하지 않고 이전 명령으로 인쇄 하고 ↑(위로)를 누르고 검색 하고 편집 할 수 있습니다.
당신은 또한 할 수 있습니다
!123:p
123rd 명령을 이전 명령으로 인쇄합니다.
fc
명령을 사용하여 기록에서 명령을 편집 할 수도 있습니다 .
FC는 목록 또는 편집 및 재실행이 명령은 이전에 대화 형 쉘에 입력 한 유닉스의 표준 프로그램입니다. fc 는 bash 쉘 에 내장 된 명령입니다 . 도움말 fc 는 사용 정보를 표시합니다.
역 증분 검색 (Ctrl+R)외에도 떠들썩한 파티 단축키가더 있습니다.
에서 man bash
:
이전 기록 (Cp) 히스토리 목록에서 이전 명령을 가져와 목록에서 뒤로 이동합니다. 다음 역사 (Cn) 목록에서 앞으로 이동하여 내역 목록에서 다음 명령을 가져옵니다. 역사의 시작 (M- <) 기록의 첫 번째 줄로 이동합니다. 기록 끝 (M->) 입력 이력의 끝, 즉 현재 입력중인 줄로 이동합니다. 역 검색 기록 (Cr) 현재 줄에서 시작하여 필요에 따라 기록에서 '위로'이동하여 뒤로 검색합니다. 이것은 증분 검색입니다. 전면 검색 기록 (Cs) 현재 줄에서 시작하여 필요에 따라 기록에서 '아래로'이동하여 앞으로 검색합니다. 이것은 증분 검색입니다. 비 증분 역 검색 기록 (Mp) 사용자가 제공 한 많이에 대한 비 증분 검색을 사용하여 현재 행에서 시작하는 히스토리를 뒤로 검색합니다. 비 증분 순방향 검색 기록 (Mn) 사용자가 제공 한 손님들에 대한 비 증분 검색을 사용하여 기록을 앞으로 검색합니다. yank-nth-arg (MCy) 첫 번째 인수를 이전 명령 (일반적으로 이전 줄의 두 번째 단어)에 삽입합니다. 인수 n을 사용하여 이전 명령의 n 번째 단어를 삽입합니다 (이전 명령의 단어는 단어 0으로 시작). 음수 인수는 이전 명령의 끝에서 n 단어를 삽입합니다. 인수 n이 계산되면 "! n"히스토리 확장이 지정된 것처럼 인수가 추출됩니다. yank-last-arg (M-., M-_) 이전 명령 (이전 기록 항목의 마지막 단어)에 마지막 인수를 삽입합니다. 인수를 사용하면 yank-nth-arg와 똑같이 동작합니다. yank-last-arg에 대한 연속적인 호출은 기록 목록을 통해 다시 이동하여 각 줄의 마지막 인수를 삽입합니다. 히스토리 확장 기능은 "! $"히스토리 확장이 지정된 것처럼 마지막 인수를 추출하는 데 사용됩니다. MCE (쉘 확장 라인) 셸처럼 줄을 확장합니다. 이것은 모든 쉘 단어 확장 아니라 별명 및 히스토리 확장을 수행합니다. 역사 확장에 대한 설명은 아래의 역사 확장을 참조하십시오. 히스토리 확장 라인 (M- ^) 현재 행에서 히스토리 확장을 수행합니다. 역사 확장에 대한 설명은 아래의 역사 확장을 참조하십시오. 마지막 인수 삽입 (M-., M-_) yank-last-arg의 동의어입니다. 운영 및 다음 금액 (Co) 실행을 위해 현재 행을 승인하고 편집을 위해 히스토리에서 현재 행에 최다 인 다음 행을 가져옵니다. 모든 인수는 무시됩니다. 편집 및 실행 명령 (C-xC-e) 현재 명령 줄에서 편집기를 호출하고 결과를 셸 명령으로 실행합니다.
!123:gs/old/new/
'old'문자열을 'new'문자열로 바꾸는 명령 123을 실행합니다.
M- ^ (Mac의 경우 option-shift-6)을 계속 편집 모드로 실행할 수 있습니다.
제출 입력하십시오 :
! 1 억 3 천만-^
그리고 명령 # 123을 편집 할 것입니다. ctrl-r을 사용하는 것과 비슷하지만 느낌표 구문으로 시작합니다.
history
명령 을 사용하는 대신 history-search-backward
/ history-search-forward
를 사용하여 쉽게 기억할 수있는 키 단축키에 바인딩합니다 (PgUp / PgDown 선호). 그렇게 생각한 다음을 .inputrc
파일에 기재하십시오 .
"<key code>": history-search-backward
"<key code>": history-search-forward
를 얻으려면 셸을 <key code>
입력 Ctrl-V <key>
하고 출력 된 내용에서 시작 ^[
을 \e
로 바꿉니다.
이 설정이 끝나면 입력 some
하고 PgUp을 눌러 some_long_command
. 필요 some_long_command with_some_arg
하지만 some_long_command with_some_other_arg
나중에 비슷한 명령 이있는 경우 입력 some
한 다음 PgUp을 반복해서 눌러 도달 할 때까지 순환 하거나를 입력 하고 PgUp을 누르고 some
두 명령이 다른 위치로 커서를 이동합니다. 몇 개의 문자를 입력하고 PgUp을 한 번 더 누르십시오. 유사한 명령을 빠르게 페이지를 넘기거나 구별 할 수있는이 기능은 제 생각에 Ctrl-R
.
당신은 또한 넣을 수 있습니다
shopt -s histverify
에서 .bash_profile
실행하지 않고 히스토리 확장이 명령 줄에 나타나므로 편집하기 전에 편집 할 수 있습니다.
"제안 상자"와 같은 기록 https://github.com/dvorka/hstr 을 시도해 볼 수 있습니다. Bash 기록을 읽고 빠른 탐색이 가능합니다.
마지막 명령을 얻으려면 hh를 입력하고 명령으로 이동 한 다음 오른쪽 화살표를 사용하여 명령 줄 (편집 및 / 또는 주석 추가 가능)에서 가져옵니다.
유닉스 / 솔라리스에서 마지막으로 입력 한 명령을 얻으려면 ^ p
놓다
별칭 r = 'fc -s'
당신에 .bashrc
(홈 디렉토리) 다음은 입력 할 수 있습니다
r <whatever>
명령 프롬프트 <whatever>
에서 히스토리 에있는 마지막 명령 (동일한 매개 변수) 의 복사본을 실행합니다 . 당신이 필요하다고 느끼면 당신이 무엇을 실행했는지 보려면 위쪽 화살표를 누르십시오.
'ProgramingTip' 카테고리의 다른 글
프레임 워크를 사용할 수 없음 GoogleToolboxForMac (0) | 2020.10.15 |
---|---|
생성자가 최종적이 될 수없는 이유 (0) | 2020.10.15 |
rails- 콘솔 출력을 파일로 리디렉션 (0) | 2020.10.15 |
파일을 업로드하기 전에 파일 확인 확인 (0) | 2020.10.15 |
MySQL에서는 어디에서나 주석을 어떻게 제거 할 수 있습니까? (0) | 2020.10.15 |