명령 출력을 새 명령으로 편집합니다.

명령 출력을 새 명령으로 편집합니다.

편집하고 명령으로 실행하려는 문자열을 출력하는 스크립트가 있습니다.

예를 들어, 나는

cat ... | xsel -p

그런 다음 "xsel -op"의 출력을 편집하고 편집된 문자열을 새 명령으로 실행하려고 합니다.

그래서 나는 노력하고 있습니다 :

cat ... | xsel -p
$(xsel -op) TAB

하지만 당연히 실패했습니다.

xsel -op그렇다면 (이 경우) 내용을 명령줄에 출력하고 새 명령을 편집한 다음 해당 명령을 실행하려면 어떻게 해야 합니까 ?

감사해요

답변1

~에서zsh 내장 함수:

-z 공백으로 구분된 인수를 편집 버퍼 스택에 푸시합니다.

xsel의 내용을 명령줄에 출력하려면:

print -z $(xsel -op)

답변2

다음을 수행하여 기록에 추가할 수 있습니다(적어도 bash에서는, zsh에서는 잘 모르겠습니다).

history -s $(xsel -op)

그런 다음 검색하여 편집하세요.

그 이후로 나는 발견했다.

print -s $(xsel -op)

zsh에서도 유효합니다.

답변3

기록에 수동으로 추가할 필요 없이 bash shell-expand-line키( M-C-e)를 누르기만 하면 됩니다.

   shell-expand-line (M-C-e)
          Expand the line as the shell does.  This performs alias and his‐
          tory expansion as well as all of the shell word expansions.  See
          HISTORY EXPANSION below for a description of history expansion.

답변4

나는 당신이 무엇을 원하는지 완전히 확신하지 못하지만 다음과 같이 작동해야 합니다.

`xsel -op | sed 'do something'`

백틱을 사용하면 BASH가 실행됩니다. 이 경우 방금 sed로 편집한 X의 기본 선택 버퍼에 저장된 모든 항목이 실행됩니다. 예를 들어:

echo "find . -name foo" | xsel -p
`xsel -op | sed 's/foo/bar/`

위 명령을 find실행하면 "bar"라는 파일이나 폴더에 대한 검색이 실행됩니다.

관련 정보