클립보드에 포함된 텍스트의 서식을 제거하고 일부 요소는 유지해야 합니다. 가장 중요한 것은 "New Line" 문자입니다. 간단한 스크립트에서 효과는 다음과 같습니다
variable=$(xsel --clipboard)
문제는 텍스트가 모두 같은 줄에 있는 것처럼 보이므로 "개행" 문자가 모두 손실된다는 것입니다.
1) 이것을 피할 수 있는 방법이 있나요? 때로는 Windows 형식(따라서 개행 문자는 "\r\n")에서 텍스트를 복사하고 때로는 *nix(따라서 개행 문자는 "\n")에서 텍스트를 복사합니다.
2) 이전 질문이 가장 중요합니다. 그러나 "굵게", "기울임꼴" 및 "밑줄" 서식 요소를 유지하는 방법도 있습니까? 이러한 쉘 명령도 손실되기 때문입니다.
아무튼 감사 해요!
답변1
예. 명령 대체는 모든 후행 개행 문자 1 을 제거합니다 .
이 문제를 해결하려면:
var=$(xsel --clipboard; echo .)
var=${var%?}
.\n
해당 출력에 추가됩니다 . 그런 다음 ${var%?}
( \n
명령 대체에 의해 처리됨)을 사용하여 점을 삭제하십시오 .
을 제외하고 zsh
쉘 변수는 NUL 바이트를 포함할 수 없습니다.
종료 상태를 유지하려면 다음을 수행하십시오.
var=$(xsel --clipboard; ret=$?; echo .; exit "$ret")
ret=$?
var=${var%?}
$var
확장할 때 인용하는 것을 잊지 마세요:
printf %s "$var"
도우미 기능:
cmdsubst() {
_var=$1; shift
eval "$_var="'$("$@"; ret=$?; echo .; exit "$ret")
_ret=$?
'"$_var=\${$_var%?}"
return "$_ret"
}
다음과 같이 사용됩니다:
cmdsubst var xsel --clipboard
"굵게"를 유지하기 위해... 일부 도구는 UTF8 문자열 외에 CLIPBOARD 선택 항목을 text/html로 내보냅니다. 이 경우(최신 버전 사용 xclip
) 다음을 수행할 수 있습니다.
cmdsubst html xclip -sel c -o -t text/html
xclip -sel c -o -t TARGETS
CLIPBOARD 선택의 현재 소유자가 제공한 선택 대상을 보려면 출력을 봅니다 .
위의 iceweasel에 있는 Mikel의 게시물에 내 댓글의 일부를 복사한 후의 예:
$ xclip -sel c -o -t TARGETS
TIMESTAMP
TARGETS
MULTIPLE
SAVE_TARGETS
text/html
text/_moz_htmlcontext
text/_moz_htmlinfo
UTF8_STRING
COMPOUND_TEXT
TEXT
STRING
text/x-moz-url-priv
$ xclip -sel c -o -t text/html
<span class="comment-copy"><i>should</i> remove <i>only one</i> trailing newline</span>
$ xclip -sel c -o -t TEXT
should remove only one trailing newline
1한 가지 예외는 이 쉘 제품군으로, 이 구문을 사용하여 사후 처리를 수행하고 rc
싶지 않다고 말할 수 있습니다 .var = ``(){xsel --clipboard}