문제

한 가지 대답이 받아 들여졌지만 문제가 해결되지 않습니다. 우리는 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와 함께 매우 잘 작동합니다! :-)

그 단계를 확인하십시오 :

  1. DMG 파일을 사용하여 MacPort를 설치하십시오. 표범의 DMG

  2. 시작 a 새로운 터미널 그리고
    $ sudo vi /opt/local/etc/macports/sources.conf
    마지막 으로이 두 줄은 소스에만 남아 있습니다.

    파일 : /// 사용자/xxxxx/포트
    rsync : //rsync.macports.org/release/ports/ [default

  3. $ cd
    $ mkdir -p ports/sysutils/
    ( "화면"디렉토리를 만들지 마십시오, SVN Will)

  4. $ cd ports/sysutils/
    $ svn co -r 45745 http://svn.macports.org/repository/macports/trunk/dports/sysutils/screen

  5. 일단 체크 아웃 :

    $ CD $ 홈/포트
    $ portindex
    /users/keugaerg/포트 추가 포트 Sysutils/Screen에서 소프트웨어 색인 생성

    Total number of ports parsed:   1 
    Ports successfully parsed:  1    
    Ports failed:           0
    
  6. $ 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top