화면 내부에 pbcopy -Clipboard를 가질 수 없습니다
-
03-07-2019 - |
문제
한 가지 대답이 받아 들여졌지만 문제가 해결되지 않습니다. 우리는 Jonah의 코드가 작동하기 위해 노력하고 있습니다.
문제: (1) ~ (2)의 코드를 변경하려면
나는 알고있다 실. 화면 내부에서 다음 코드를 실행할 수 있기를 원합니다.
코드 (1)
cat ~/.vimrc | pbcopy (1)
코드 (2)
cat ~/.vimrc > /tmp/pbcopy.pipe (2)
문제를 해결하려는 나의 시도 :다음 코드를 .zshrc에 넣습니다
function pbcopy() { "(cat \"$1\")" > /tmp/pbcopy.pipe }
나는 얻다
cat masi | pbcopy
pbcopy: command not found: (cat "")
cat: masi: No such file or directory
화면 내부에서 PBCopy를 어떻게 사용할 수 있습니까?
해결책
알겠습니다. 이름 지정된 파이프를 만들 수 있습니다 mkfifo
, 그런 다음 명명 된 파이프에서 파일을 읽고 파이프를 pbcopy
(또는 xsel
, xclip
, 등.).
1. 화면 세션에없는 터미널에서 (한 번만 실행) :
/usr/bin/mkfifo /tmp/pbcopy.pipe
while true; do /bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy; done
당신은 이것을 쉘 스크립트로 바꾸고 싶을 수도 있습니다 (아마도 더 강력 할 것입니다).
#!/bin/bash
if [[ -e /tmp/pbcopy.pipe ]]; then
echo "it looks like I am already running"
echo "remove /tmp/pbcopy.pipe if you are certain I am not"
exit 1
fi
while true; do
/bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy
done
이름을 지정할 수 있습니다 pbcopy_server.sh
, 제조 실행 (chmod a+x pbcopy_server.sh
) 그리고 당신의 길에 어딘가에 놓아서 말할 수 있습니다 nohup pbcopy_server.sh &
컴퓨터를 처음 시작할 때.
2. 다른 터미널 (화면 세션 포함)에서는 이제 CAT 파일 (또는 프로그램 출력을 /tmp/pbcopy.pipe로 리디렉션 할 수 있으며 텍스트가 클립 보드에 나타납니다.
cat file > /tmp/pbcopy.pipe
df -h > /tmp/pbcopy.pipe
3. 당신이 진짜라고 부르고있는 것처럼 보이기 위해 pbcopy
당신은 무언가를 사용하여 고양이를 할 수 있습니다 /tmp/pbcopy.pipe
당신을 위한.
3A. a zsh
기능:
function pbcopy() { cat > /tmp/pbcopy.pipe }
3B. 또는 이름이 지정된 Perl 스크립트를 만듭니다 pbcopy
그리고 당신의 초기에 디렉토리에 넣습니다 PATH
~보다 /usr/bin
:
#!/usr/bin/perl
use strict;
use warnings;
open my $out, ">", "/tmp/pbcopy.pipe"
or die "could not open pipe to pbcopy: $!\n";
print $out $_ while <>;
다른 팁
OSASCRIPT 만 사용하는 것이 훨씬 쉬운 솔루션이 있습니다. http://www.samsarin.com/blog/2008/10/18/copying-gnu-screen-buffer-to-leopard-clipboard/
의견에서 Andrew Wason 은이 솔루션을 제공하여 화면 버퍼를 복사합니다.
.screenrc의 코드
# binds C-a b to copy the contents of your last screen copy to the MacOSX pasteboard
bind b eval "writebuf /tmp/screen-pbcopy" "exec /usr/bin/osascript -e 'tell application \"System Events\"' -e 'set the clipboard to (read posix file \"/tmp/screen-pbcopy\" as text)' -e 'end tell'"
또한 osaScript를 사용하여 화면 내에서 pbcopy의 동작을 모방하는 Bash 스크립트가 있습니다. 이 스크립트 개선을 환영합니다.
이 코드를 경로 어딘가에 배쉬 스크립트로 저장하십시오. 예 : ~/bin/pbcopyscreen.bash
#!/bin/bash
# saves all standard input to a file
cat > /tmp/screen_pbcopy_kludge_buffer
# uses osascript to set the MacOSX pastebaord to the contents of the file
/usr/bin/osascript -e 'tell application "System Events"' -e 'set the clipboard to (read posix file "/tmp/screen_pbcopy_kludge_buffer" as text)' -e 'end tell'
rm /tmp/screen_pbcopy_kludge_buffer
이 기사의 의견에 명시된 대로이 문제를 해결하는 것처럼 보이는 Macport 화면의 이전 버전을 설치할 수 있습니다.
수행 방법을 설명하는 마지막 의견에 연결됩니다
나는 나 자신을 시도했고 화면은 지금 PBCopy와 함께 매우 잘 작동합니다! :-)
그 단계를 확인하십시오 :
DMG 파일을 사용하여 MacPort를 설치하십시오. 표범의 DMG
시작 a 새로운 터미널 그리고
$ sudo vi /opt/local/etc/macports/sources.conf
마지막 으로이 두 줄은 소스에만 남아 있습니다.파일 : /// 사용자/xxxxx/포트
rsync : //rsync.macports.org/release/ports/ [default$ cd
( "화면"디렉토리를 만들지 마십시오, SVN Will)
$ mkdir -p ports/sysutils/$ cd ports/sysutils/
$ svn co -r 45745 http://svn.macports.org/repository/macports/trunk/dports/sysutils/screen일단 체크 아웃 :
$ CD $ 홈/포트
$ portindex
/users/keugaerg/포트 추가 포트 Sysutils/Screen에서 소프트웨어 색인 생성Total number of ports parsed: 1 Ports successfully parsed: 1 Ports failed: 0
$ sudo port install screen
(화면을 다운로드하고 부드럽게하는 데 시간이 걸릴 수 있습니다)
그런 다음 완료되면/opt/local/bin/screen을 시작해야합니다.
동일한 버전 번호 4.00.03 (FAU) 23-OCT-06을 유지하더라도 Snow Leopard의 GNU 화면 버전에서 고정 된 것으로 보입니다.
또는 스크린 버전 4.01로 업데이트 할 수 있습니다.
git clone git://git.savannah.gnu.org/screen.git