터미널에서 실행되지 않도록 "클립보드"에서 후행 새 줄을 제거하시겠습니까?

터미널에서 실행되지 않도록 "클립보드"에서 후행 새 줄을 제거하시겠습니까?

일종의 필터를 통해 "클립보드"에 복사한 항목을 실행하는 방법이 있습니까? 이상적으로는 복사한 내용에서 후행 개행 문자를 제거하여 터미널에서 자동으로 실행되지 않도록 하시겠습니까?

관련 테스트를 복사하면 이런 모습인데, 가끔 새 줄이라는 것을 잊어버릴 때도 있습니다.
여기에 이미지 설명을 입력하세요.

답변1

좋은 최신 터미널 지원괄호 안에 붙여넣기: 터미널의 붙여넣기 명령을 사용하면 클립보드 내용 주위에 특수 이스케이프 시퀀스가 ​​전송됩니다. 쉘이 대괄호 붙여넣기를 지원하는 경우 제어 문자를 포함하여 클립보드 내용을 있는 그대로 붙여넣고 특히 후행 줄 바꿈은 명령 실행을 트리거하지 않습니다.

Zsh ≥5.1은 대괄호 붙여넣기를 지원하며 기본적으로 켜져 있습니다. 구 버전가르칠 수 있다. Bash ≥4.4는 추가하는 경우 대괄호 붙여넣기를 지원합니다.set enable-bracketed-paste on도착하다 ~/.inputrc.

터미널이나 셸이 대괄호 붙여넣기를 지원하지 않는 경우 후행 줄 바꿈 없이 붙여넣는 셸 함수를 정의할 수 있습니다.

zsh에서 다음 명령은 후행 개행 문자를 뺀 클립보드의 내용을 가져와 편집할 수 있도록 표시합니다(여러 줄이 있는 경우에도).

print -z -- "`xsel -b`"

Bash에서는 클립보드의 내용에서 후행 개행 문자를 뺀 내용을 기록 스택에 푸시할 수 있습니다. 그런 다음 Up불러오기 명령을 눌러 편집하세요.

history -s -- "`xsel -b`"

답변2

예, cat파일에 붙여넣으려면 원하는 대로 수행한 다음 실행하세요.

이 예의 경우:

$ cat > tmp
[paste][Ctrl+D]
$ tr -d '\n' <tmp | xclip # this remove all "new line" characters 
                          #  and copy back to clipboard

답변3

버전 0.13(2016-09년 출시)부터 정확히 필요한 작업을 수행하는 xclip문서화되지 않은 옵션이 있는 것 같습니다 . 즉, 텍스트에서 마지막 개행 문자를 제거하는 것입니다. -r바라보다https://github.com/astrand/xclip/issues/7. 적어도 Ubuntu 22.04에서는 작동합니다.

답변4

@RSFalcon7 답변에서 영감을 받아 한 줄로 할 수 있다는 것을 깨달았습니다.

다음을 사용하여 xsel기본 선택 항목으로 복사

cat | tr -d '\n' | xsel

[paste], 2 times[Ctrl-D]

관련 정보