題 什麼是OSX的Linux的pbcopy


在OSX的終端中,我可以將輸出傳輸到pbcopy,然後進入Web瀏覽器並粘貼它。我在Linux中用xcopy嘗試了這個,但是當我切換到瀏覽器時,它只是用上次瀏覽器使用時的內容覆蓋剪貼板。什麼在Linux中像pbcopy一樣有效?


132
2018-05-25 09:08


起源


...對於那些不知道pbcopy是什麼的人,這裡是手冊頁 developer.apple.com/library/mac/#documentation/Darwin/Reference/... - Rob Cowell
一個對此有幫助的工具是 ClipIt (和類似的剪貼板管理器)。它不僅可以在終端中很好地播放,還可以保留剪貼板歷史記錄。非常有用。 - brandizzi


答案:


如果你安裝了X,你可以這樣嘗試xsel:

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

或者使用xclip:

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

現在你可以用'em:

echo 'go to my clipboard' | pbcopy

當我沒有X時,我使用GNU Screen功能在會話中使用鍵盤在打開的shell之間進行複制

複印 : 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完成的。


154
2018-05-25 09:33



謝謝,這正是我想要的信息。現在我想知道是否有一種方法可以讓屏幕讓我使用Emacs命令來選擇我要復制的區域... - Noah Sussman
xsel:無法打開顯示:(null):設備的ioctl不合適 - itsazzad
我通過安裝解決了Windows上的“無法打開顯示”問題 Xming的 並設置DISPLAY =:0 - scottgwald
對於tmux用戶來說,更像是 Ctrl-b, [ -> go to position -> Space -> select texts -> Enter 並粘貼 Ctrl-b, ] - elquimista


在bin文件夾中放置一個名為pbcopy的腳本:

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

這會將STDIN放入您的選擇緩衝區和剪貼板中:

echo Hello world |pbcopy

8
2018-01-26 10:20



為什麼會這樣 cat 被需要?在這種情況下它是不是只會將stdin重定向到stdout因此無用的貓虐待或我錯過了什麼? - Hultner
你是對的,看起來好像無用的虐待貓:-) - Erik
如果你(像我一樣)想知道神秘的“無用的貓”在哪裡,它已經被編輯刪除了。 NTS:如果評論混淆,請查看歷史記錄^^' - yaitloutou
使用後如何粘貼內容?只是用 xclip -o ?或者,還有更好的方法? - n1k31t4


擴展@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

4
2018-04-14 18:10



但是為什麼你甚至在OS X上有這個腳本,它是原生用戶區的一部分? - Hultner
*作為類似功能的參考,*跨平台dotfiles: github.com/westurner/dotfiles/blob/develop/scripts/pbcopy - Wes Turner
還是cat虐待,為什麼不檢查xclip是否存在而是分配一個別名,如果有的話?或者檢查pbpaste二進製文件是否存在也是一種選擇。檢查uname似乎是一個奇怪的方法來解決這個問題。 - Hultner
@Hultner“檢查uname似乎是解決這個問題的一個奇怪的方法”你也可以按順序檢查二進製文件,順序是 ${a:-${b:-${c:+${d}}}} 還有一些 type -P/ has 變量賦值和/ bin / test execs。 - Wes Turner


這個答案涉及適用於Windows的Linux子系統。

簡答:使用 clip.exe 好像是的 pbcopy 為了在Windows剪貼板上放置一些東西。這是魔法。例 echo "Hello Windows" | clip.exe 在你的bash或Ubuntu bash終端中,然後在Windows程序中使用`ctrl-v'。

更多背景:

上面的評論 我提到過,在Windows上使用Xming來啟用此功能時,需要設置一個DISPLAY變量(export DISPLAY=:0,在許多情況下)之前 xsel 和 xclip 解決方案有效令人生氣的是,這個解決方案以一種不可靠的隨機方式工作 - 當從Linux粘貼到Windows時,按下 ctrl-v 1到10次之間會導致剪貼板粘貼(一次)(這是在我的Windows 10 Surface Book 2上)。不要浪費你的時間,使用 clip.exe

注意:別忘了 .exe。否則Ubuntu bash會建議您安裝Linux軟件包 geomview,這不是你想要的。


1
2018-01-07 17:18