Linux 용 OSX의 pbcopy는 무엇입니까


141

OSX의 터미널에서 출력을 pbcopy로 파이프 한 다음 웹 브라우저로 이동하여 붙여 넣을 수 있습니다. xcopy를 사용하여 Linux에서 이것을 시도했지만 브라우저로 전환하면 브라우저를 마지막으로 사용했을 때 클립 보드를 덮어 씁니다. Linux에서 pbcopy와 같은 기능은 무엇입니까?


2
... pbcopy가 무엇인지 모르는 사용자를위한 여기 developer.apple.com/library/mac/#documentation/Darwin/Reference/
Rob Cowell

이에 도움이되는 도구는 ClipIt (및 유사한 클립 보드 관리자)입니다. 터미널에서 잘 재생 될뿐만 아니라 클립 보드 기록도 보존합니다. 매우 유용합니다.
brandizzi

답변:


162

X가 설치되어 있다면 다음과 같이 xsel을 시도 할 수 있습니다.

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'

또는 xclip으로 :

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'

이제 당신은 사용할 수 있습니다 :

echo 'go to my clipboard' | pbcopy

XI가 GNU 화면 기능을 사용하지 않고 키보드를 사용하여 세션에서 열린 쉘간에 복사하는 경우

복사 : Ctrl-a -> Esc -> go to wanted position * -> Space (to begin selecting) -> press k to go forward mark text -> Enter

붙여 넣기 : Ctrl-a + ]

* 키 바인딩 (j, k, l & m)과 같은 vim을 사용하여 이동합니다.


1
감사합니다. 이것이 바로 내가 원하는 정보입니다. 이제 Screen에서 Emacs 명령을 사용하여 복사 할 영역을 선택할 수있는 방법이 있는지 궁금합니다.
Noah Sussman

8
xsel : 디스플레이를 열 수 없습니다 : (null) : 장치에 적합하지 않은 ioctl
itsazzad 10

나는 설치하여 Windows에서 "열 수 없습니다 디스플레이"문제를 해결 Xming을 0 : = DISPLAY 및 설정
scottgwald

1
TMUX 사용자의 경우 더 많은처럼 Ctrl-b, [ -> go to position -> Space -> select texts -> Enter붙여 넣기로Ctrl-b, ]
엘 케 m'est

네임 스페이스를 프로파일의 앨리어싱과 복잡하게 만드는 것이 아니라 가능하면 영구적 일 경우에는에 대한 기본 스크립트를 작성하는 것이 좋습니다 /bin/. 특히 macOS와 Linux 시스템간에 프로파일을 공유하는 경우.
Benjamin R

9

bin 폴더에 다음과 같은 pbcopy 스크립트를 넣으십시오.

#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p

STDIN을 선택 버퍼와 클립 보드에 넣습니다.

echo Hello world |pbcopy

cat필요한가? 이 경우 stdin을 stdout으로 리디렉션하지 않으므로 쓸모없는 고양이 학대 또는 뭔가 빠졌습니까?
Hultner

2
당신은 맞아 그것은 쓸모없는 고양이 학대처럼 보인다 :-)
Erik

2
당신이 (나 같은) 신비한 "무용 한 고양이"가 어디에 있는지 궁금하다면 편집에 의해 제거되었습니다. NTS : 혼란스러운 의견이있는 경우 역사를 확인하십시오 ^^ '
yaitloutou

이것을 사용한 후 내용을 어떻게 붙여 넣습니까? 그냥 사용 xclip -o합니까? 아니면 더 좋은 방법이 있습니까?
n1k31t4

@이 n1k31t4 내가 한 일은 사용하여 해당 스크립트를 만들이었다 xclip -sel c -o에서 스크립트를 /bin/pbpaste.
Benjamin R

5

@Erik 및 @xpixelz의 솔루션을 확장하려면; 이 두 스크립트는 두 플랫폼 모두에서 작동해야합니다.

pbcopy :

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  cat | /usr/bin/pbcopy
else
  # copy to selection buffer AND clipboard
  cat | xclip -i -sel c -f | xclip -i -sel p
fi

pbpaste :

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  /usr/bin/pbpaste
else
  xclip -selection clipboard -o
fi

그러나 왜 OS X에서이 스크립트를 네이티브 사용자 영역의 일부로 사용합니까?
Hultner

* 유사한 기능 * 크로스 플랫폼 dotfiles에 대한 참조로 : github.com/westurner/dotfiles/blob/develop/scripts/pbcopy
웨스 터너

여전히 고양이 남용과 왜 xclip이 있는지 확인하고 별명을 지정하십시오. 또는 pbpaste 바이너리가 존재하는지 확인하십시오. uname을 확인하는 것은 문제에 대한 이상한 접근법처럼 보입니다.
Hultner

2
@Hultner "비대칭을 검사하는 것은 문제에 대한 이상한 접근법처럼 보인다"또한 a / ${a:-${b:-${c:+${d}}}}일부 type -P/ has변수 할당과 / bin / test execs 를 제외하고 순서대로 이진을 순서대로 확인할 수 있습니다 .
웨스 터너

2

이 답변은 Windows 용 Linux 하위 시스템을 나타냅니다.

짧은 답변 : 사용 clip.exe이 것처럼 pbcopyWindows 클립 보드에 뭔가를 넣어하기 위해. 마법이다. echo "Hello Windows" | clip.exebash 또는 Ubuntu bash 터미널의 예제 와 Windows 프로그램의`ctrl-v '.

더 많은 맥락 :

의 의견 에서 Windows에서 Xming을 사용 하여이 기능을 활성화 할 export DISPLAY=:0xselxclip솔루션이 작동 하기 전에 DISPLAY 변수 ( 대부분의 경우) 를 설정해야한다고 언급했습니다 . 불행히도이 솔루션은 신뢰할 수없고 확률 론적으로 작동합니다. Linux에서 Windows ctrl-v로 붙여 넣을 때 1-10 번 누르면 클립 보드가 붙여집니다 (한 번) (이것은 Windows 10 Surface Book 2에 있습니다). 시간을 낭비하지 마십시오 clip.exe.

참고 :를 잊지 마십시오 .exe. 그렇지 않으면 우분투 bash는 Linux 패키지를 설치하도록 제안합니다 geomview.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.