특수 문자가 포함된 문자열(예: HG@eg3,l'{TT\"C!
다른 명령(termux 클립보드 세트) 및 read
절차. 임시 변수(예: )를 만든 다음 이를 다른 명령(예: )에 전달 read
하도록 설계된 것 같습니다 .read temp
termux-clipboard-set $temp
파이프를 사용하여 이 작업을 수행하는 더 빠른 방법이 있는지 궁금합니다. 예를 들면 다음과 같습니다 read | termux-clipboard-set
.
업데이트: 죄송합니다. bash(termux)에서 실행될 것을 찾고 있다는 것을 언급하는 것을 잊어버렸습니다.
답변1
의 경우 bash
프로그램 read
이 아닙니다. read
내장되어 있습니다. 단순화한 후 입력을 read
읽고 stdin
변수에 할당합니다. 내장 read
함수는 에서 출력을 생성하지 않으므로 stdout
파이프를 시도하면 stdout
결과가 생성되지 않습니다.
문제는 이유입니다. man
페이지 표시 에 따르면 ,
용법
termux-clipboard-set [text]
표준 입력 또는 명령줄 인수에서 텍스트를 읽습니다.
에서 텍스트를 읽으면 stdin
앞에 뭔가를 넣을 이유가 무엇입니까? 물론 할 수 있지만 cat | termux-clipboard-set
그냥 termux-clipboard-set
하세요.
답변2
에는 cho 옵션 이 zsh
기본적으로 지원됩니다 .read
-e
e
termux-clipboard-set "$(IFS= read -re)"
시스템에 여전히 line
명령이 있고(아직 하나 있지만 util-linux
요즘에는 일반적으로 포함되지 않음) POSIX와 유사한 셸을 사용하는 경우:
termux-clipboard-set "$(line)"
이 line
명령은 다음과 같이 sh 함수로 작성할 수 있습니다.
line() (
IFS= read -r line; ret=$?
printf '%s\n' "$line"
exit "$ret"
)
head -n 1
터미널에서 읽지 않을 때를 제외하면 비슷한 작업을 수행합니다. 대부분의 구현에서는 한 줄만 출력하더라도 입력에서 한 줄 이상을 읽을 수 있습니다. read
그리고 그렇지 않다는 것이 보장됩니다(비록 옵션을 line
사용해야 하지만 ).-r
read
터미널로부터의 입력으로,
termux-clipboard-set "$(head -n1)"
하지만 작동해야합니다. 대부분의 head
구현은 여전히 더 이상 사용되지 않는(그러나 더 짧은) 버전을 지원합니다 head -1
.
tcsh의 경우 다음과 같습니다.
termux-clipboard-set $<:q
1 또한 터미널 장치에서 청크로 읽지만 read()
모드의 터미널 장치에서는 icanon
한 줄 이상을 반환하지 않습니다.