当前位置:  开发笔记 > 编程语言 > 正文

无法在屏幕内部使用pbcopy -clipboard

如何解决《无法在屏幕内部使用pbcopy-clipboard》经验,为你挑选了1个好方法。

问题尽管有一个答案被接受但未解决:我们正努力让Jonah的代码起作用.

问题:将(1)的代码更改为(2)

我知道线程.我希望能够在Screen中运行以下代码

代码(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?



1> Chas. Owens..:

好吧,这是一个棘手的答案,但它也是一个棘手的问题,所以至少他们匹配.您可以创建一个命名管道mkfifo,然后建立一个无限循环读取命名管道文件和管道他们pbcopy(或xsel,xclip等等).

1.在不在屏幕会话中的终端(仅运行一次):

/usr/bin/mkfifo /tmp/pbcopy.pipe
while true; do /bin/cat /tmp/pbcopy.pipe | /usr/bin/pbcopy; done

您可能希望将其转换为shell脚本(这可能应该更强大)

#!/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.使用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 <>;

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有