OSX'in Linux için pbcopy'sı nasıl


141

OSX’de bir terminalde çıktıları pbcopy’ya yönlendirebilir ve bir web tarayıcısına gidip yapıştırabilirim. Bunu Linux'ta xcopy ile denedim, ancak tarayıcıya geçtiğimde, tarayıcı en son ne zaman kullanılacağı ile birlikte panonun üzerine yazıyor. Linux'ta pbcopy gibi neler işe yarar?


2
... ve pbcopy'nin ne olduğunu bilmeyenler için, işte man page developer.apple.com/library/mac/#documentation/Darwin/Reference/…
Rob Cowell 9

Bu konuda yardımcı olabilecek bir araç ClipIt (ve benzer pano yöneticileri) 'dir. Sadece terminalde güzel oynar, pano geçmişini de korur. Gayet yararlı.
brandizzi

Yanıtlar:


162

Eğer X kurulu ise, xsel'i bu şekilde deneyebilirsiniz:

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

veya xclip ile:

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

şimdi 'em kullanabilirsiniz:

echo 'go to my clipboard' | pbcopy

XI sahip olmadığımda, klavyeyi kullanarak bir oturumda açık mermiler arasında kopyalamak için GNU Ekran işlevini kullanın.

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

yapıştırmak : Ctrl-a + ]

* Hareketler vim benzeri anahtar bağları (j, k, l & m) ile yapılır.


1
Teşekkürler bu tam olarak istediğim bilgi. Şimdi, merak ediyorum ki, Ekran yapmamın bir yolu olup olmadığını kopyalamak istediğim alanı seçmek için Emacs komutlarını kullanmama izin verin ...
Noah Sussman,

8
xsel: Ekran açılamıyor: (null): Cihaz için uygun olmayan ioctl
itsazzad

Ben yükleyerek Windows üzerinde "açılamıyor ekran" sorununu çözdü Xming 0: = DISPLAY ve ayar
scottgwald

1
Tmux kullanıcıları için daha çok benziyor Ctrl-b, [ -> go to position -> Space -> select texts -> Enterve yapıştırıyorCtrl-b, ]
el que m'est

Mümkün olduğunda - eğer istediğiniz kalıcı bir şeyse, elbette - ad alanınızı profilinizde takma adla karmaşıklaştırmak yerine , bunun için temel bir komut dosyası oluşturmak daha iyi olacaktır /bin/. Özellikle, macOS ve linux makineleri arasında profilinizi paylaşıyorsanız.
Benjamin R,

9

Bin klasörünüze pbcopy adı verilen bir script yazın:

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

Bu, STDIN'i hem seçim tamponunuza hem de panoya yerleştirir:

echo Hello world |pbcopy

Neden catihtiyaç duyulacak? Bu durumda stdin'i stdout'a yönlendirmek, böylece işe yaramaz kedi küfür etmek istemez mi, yoksa bir şey mi eksik?
Hultner,

2
Haklısın kedi kötüye kullanımı gibi görünüyor doğru değil :-)
Erik

2
(benim gibi) gizemli "işe yaramaz kedi" nin nerede olduğunu merak ediyorsanız, düzenleme tarafından kaldırılmıştır. NTS: Yorumların
karışması

Bunu kullandıktan sonra içeriği nasıl yapıştırırsınız? Sadece kullanıyor xclip -omusun? Yoksa daha iyi bir yolu var mı?
n1k31t4

@ n1k31t4 Yaptığım şey xclip -sel c -obir komut dosyası kullanarak eşdeğer bir komut dosyası yapmaktı /bin/pbpaste.
Benjamin R,

5

@Erik ve @xpixelz çözümlerini genişletmek; bu iki komut her iki platformda da çalışmalıdır:

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

Ama neden OS X üzerinde bu senaryoyu kullandın?
Hultner

* benzer işlevsellik için referans olarak * platformlar arası dotfiles: github.com/westurner/dotfiles/blob/develop/scripts/pbcopy
Wes Turner

Yine de kedi kötüye kullanımı ve bunun yerine xclip'in var olup olmadığını kontrol etmeyin ve varsa bir takma ad atayın mı? Veya pbpaste binary'in var olup olmadığını da kontrol edip edemeyeceğinizi kontrol edin. Uname'yi kontrol etmek, soruna garip bir yaklaşım gibi görünüyor.
Hultner

2
@Hultner "Denetleme'uname sorununa garip bir yaklaşım gibi görünüyor" Ayrıca ile istisna, sırayla, tercihli, ikili için kontrol edebilir ${a:-${b:-${c:+${d}}}}ve bazı type -P/ hasdeğişken atamaları ve / bin / test execs.
Wes Turner

2

Bu cevap, Windows için Linux Alt Sistemini ifade eder.

Kısa cevap: Windows panosuna bir şey koymak clip.exegibi kullanın pbcopy. Bu sihirdir. Örnek echo "Hello Windows" | clip.exeBir Windows programına bash veya Ubuntu bash terminali ve ardından `ctrl-v' de.

Daha fazla içerik:

Gelen bir yorum üstünde ben bu işlevi etkinleştirmek için Windows üzerinde Xming kullanırken, (bir EKRAN değişkeni ayarlamak gerekir ki söz export DISPLAY=:0önce birçok durumda,) xselve xclipçözümleri çalışması. Çıldırtıcı bir şekilde, bu çözüm güvenilir olmayan, stokastik bir şekilde çalışır - Linux'tan Windows'a yapıştırırken, ctrl-vbir ila on kez basmak, panonun yapıştırılmasına neden olur (bir kez) (bu, Windows 10 Yüzey Kitabım 2'dedir ). Vaktini boşa harcama, kullan clip.exe.

NOT: Unutma .exe. Aksi takdirde Ubuntu bash, geomviewistediğinizi olmayan Linux paketini kurmanızı önerecektir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.