사용해도 되나요 '!!' 별명이나 스크립트에서?


10

터미널에서 !!이전 명령을 참조 할 수 있습니다 .
별칭으로 이것을 사용할 수 있습니까? 나는 그것을 시도했지만 이중 느낌표는 문자 그대로 해석됩니다.

내가 원하는 것은 다음과 같습니다.

  1. 나는 몇 가지 명령을 입력
  2. 1 단계에서 입력 한 내용을 포함 할 별명을 입력합니다.

허용되는 스크립트를 사용하는 솔루션이있는 경우.


당신의 주요 목표는 무엇입니까? 마지막 명령에 더 많은 옵션을 추가 하시겠습니까?
Sergiy Kolodyazhnyy

내 목표는 내가 자주 사용하는 긴 명령을 빠르게 입력하는 것입니다. 그것의 중간에 종종 이전의 명령입니다 긴 문자열입니다
루드비히 그누

fc긴 명령을 편집하는 가장 쉬운 방법이기 때문에 명령을 원하므로 텍스트 편집기를 여는 것 같습니다 . 내 게시물에 추가하겠습니다. 또한, 당신은 명령의 예를 제공 할 수 있습니까?
Sergiy Kolodyazhnyy

내 게시물에 수정 사항 추가
Sergiy Kolodyazhnyy

답변:


11

마지막으로 실행 된 명령을 나열하는 명령은 fc -nl -1입니다. 출력 대체를 사용하여 동일한 컨텐츠에 더 많은 매개 변수를 추가 할 수 있습니다

$> ls /etc/passwd
/etc/passwd
$> $(fc -nl -1)  /etc/group                                                     
/etc/group  /etc/passwd
$> 

그러나 인용은이 접근법에서 문제가 될 수 있습니다.

아주 좋은 기능은 명령을 단독으로 fc실행하면 변수에 fc지정된 텍스트 편집기 FCEDIT( ~/.bashrc)에 저장하려는 텍스트 편집기가 열리고 행의 내용이 마지막 명령이된다는 것입니다. 편의 nano를 위해 텍스트 편집기로 사용 하는 것이 좋지만 잘 알고 있다면 vim 더 좋습니다.

예를 들어, qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindowHuge line 을 편집해야한다면 어떻게해야 합니까? 그러나을 사용 fc하면 열고 vim편집 /org/ayatana/bamf/matcher하고 저장하고 종료 할 수 있습니다.


9

사용할 수는 !!없지만 ...

로부터 수동 :

fc 명령과 함께 사용할 유용한 별명은입니다 r='fc -s'. 'r cc'를 입력하면 cc로 시작하는 마지막 명령이 실행되고 'r'을 입력하면 마지막 명령이 다시 실행됩니다.


이를 통해 마지막 명령의 시작 부분에 무언가를 추가 할 수 있습니다. 중간에 어떻습니까?
Ludwig Magnusson

8

(이미 언급 된) !!대신 히스토리 확장 구문 사용을 고집하는 경우 fc방법이 있습니다.

기본적으로 history비 대화식 셸 세션 (예 : 스크립트) 에서는 확장이 비활성화되어 있습니다.

스크립트에서 히스토리 확장을 사용하려면 먼저 관련 쉘 옵션을 사용하십시오.

set -o history 
set -o histexpand

set -o histexpandset -H너무 쓸 수 있습니다 .

이제 히스토리 확장 조작 !!은 스크립트 내에서 작동합니다.

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