!
명령을 통해 기록 명령을 스크립트 파일로 에코하고 리디렉션 할 수 있습니까 ? 내가 무시한 pipe
, 또는 명령에 변경 사항이 있습니까 redirect
?tee
518 xmodmap -e "keycode 66 = Return"
519 xmodmap -e "keycode 23 = Tab"
535 xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
[Tech_Ministry@localhost ~]$ echo !535 && !518 >> xmodmap_-e.sh
echo xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape' && xmodmap -e "keycode 66 = Return" >> xmodmap_-e.sh
xmodmap -e clear Lock -e keycode 0x42 = Escape
이 글을 읽고 나면우편 엽서나는 노력했다echo !535:p && !518:p >> xmodmap_-e.sh
뭔가 간단한게 빠진거같은데.. 이게 가능할까요? 각 명령을 별도의 줄에 표시할 수 있습니까?
답변1
에서 help history
:
-p perform history expansion on each ARG and display the result
without storing it in the history list
예를 들어, 제가 주로 하는 일은 history -p \!572 >> myfile
기록에서 명령 572를 저장하는 것입니다.
귀하의 예에서는 다음을 사용합니다.
echo "$(history -p '!535') && $(history -p '!518')" >> xmodmap_-e.sh
history
단일 명령을 사용하여 이를 수행하는 방법이 있을 수 있습니다 .
(이렇게 하면 스크립트 파일의 한 줄에 두 명령이 &&
연산자와 연결되어 배치됩니다.)
업데이트: 이 글을 쓰면서 내가 찾고 있는 더 간단한 형식은 다음과 같습니다.
history -p \!535 \!518 >> whatever.sh
답변2
기록 표시를 큰따옴표로 묶으면 확장을 따옴표 붙은 문자열로 캡처할 수 있습니다.
echo "!535 && !518" >> xmodmap_-e.sh
게시된 시도가 실패한 이유는 &&
참조되지 않아 조치가 취해졌기 때문입니다.
echo !535 && !518 >> xmodmap_-e.sh
이는 두 가지 명령으로 확장됩니다.
echo {the expansion of !535}
&&
{run the expansion of !518} >> xmodmap_-e.sh
따라서 첫 번째 확장이 작성됩니다.표준 출력, 해당 작업이 echo
성공하므로 두 번째 작업이 실행되고 이후의 모든 출력이 파일에 추가됩니다 xmodmap_-e.sh
.