bash history를 사용하여 history의 인수를 사용하여 명령을 실행하려면 어떻게해야합니까?


3

bash 기록을 사용하여 기록의 명령에서 인수를 사용하여 명령을 실행하려면 어떻게해야합니까?

내가 사용할 수 있다는 것을 알고 !!마지막 명령을 다시 실행,하지만 어떻게 내가 그 인수와 새 명령을 실행할 수 있습니까?

예를 들어, 나는 먼저 다음을 실행합니다.

~/somefolder/script.sh somefile

나는 빨리 달리고 싶다

~/somefolder/script.sh anotherfile

시도 !! anotherfile했지만 작동하지 않았습니다.

또는 더 나은 방법 !-2 newarguments으로 새로운 인수로 두 번째 마지막 기록 명령을 실행하려면 어떻게해야합니까?

화살표를 사용하여 역사를 스크롤 한 다음 인수 위에 백 스페이스를 사용하고 싶지 않습니다.

답변:


5

명령 이름을 선택하려면 : 0 수정자를 사용하십시오.

$ man bash
$ !!:0 csh
man csh

! *를 사용하여 최신 명령으로 모든 인수를 선택하십시오.

$ man sed awk perl
$ which !*
which sed awk perl
/usr/bin/sed
/usr/bin/awk
/usr/bin/perl

현재 명령과 관련하여 이전에 실행 된 두 번째 명령을 선택하고 다음을 사용하여 모든 인수를 선택하십시오.

$ echo !-2:*
echo sed awk perl
sed awk perl

현재 명령과 관련하여 이전에 실행 된 세 번째 명령을 선택하고 두 번째 인수를 선택하십시오.

$ echo !-3:2
echo awk
awk

"which"로 시작한 마지막 명령을 선택하고 세 번째 인수를 연결하십시오.

$ echo !which:3
echo perl
perl

두 가지 특정 질문에 대한 답변은 다음과 같습니다.

  1. 위의 첫 번째 예를 참조하십시오.
  2. ! -2 : 0 "새로운 인수 목록"

BASh 매뉴얼을 읽으십시오 . ;-) 먼저 행을 선택하고 대체를 수행 한 다음 수정자를 사용하여 세분화 한 다음 결과를 인쇄하십시오 :p. 로 일치하는 줄을 탐색 !?text?하거나 히스토리 명령 줄의 아무 곳에서나 텍스트와 일치하여 줄을 찾습니다. 다른 변종은 단지 라인의 조각을 잡고 있지만, 명령, 즉 실행하기 전에 정규 표현식 교체를 수행하지 마십시오 선을 일치 !wh:gs/sed/tr/, whichSED, TR에 대한 명령 잠수정을.
Billy McCloskey

-1

터미널에서 키보드 단축키 Ctrl-R 을 누르고 명령의 고유 한 부분을 입력하면 역방향 검색을 수행하여 자동으로 검색합니다. 끝까지 스크롤 할 필요가 없습니다.


예, Ctrl-R에 대해 알고 있었지만 여전히 원하지 않는 질문에서 지정한 인수를 제거하려면 백 스페이스를 사용해야합니다. 어쨌든 대답 주셔서 감사합니다. BTW 난 당신을 downvoted 사람이 아니었다.
localhost

@localhost 귀하의 질문에 대한 답변이 도움이되지 않는다면, 하향 투표해야합니다. 이것이 시스템이 작동하는 방식입니다. 변명 할 필요가 없습니다.
slhck

@slhck 법의 서한에 대해서는 사실이지만, 정직한 노력을 기울인 사람을 공감하는 것은 다소 무례한 것 같습니다. 내가 Ctrl-R에 대해 알지 못했다면, 옥로드의 대답은 여전히 ​​어느 정도 도움이되었을 것입니다. 당신의 요점은 잘 잡 힙니다.
localhost

그것은 시작에 대한 대안입니다. 그게 다야. @localhost는 괜찮습니다. 감사합니다.
jadelord
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.