Những gì giống như pbcopy của OSX cho Linux


141

Trong một thiết bị đầu cuối trong OSX tôi có thể chuyển đầu ra sang pbcopy và sau đó vào trình duyệt web và dán nó. Tôi đã thử điều này trong Linux với xcopy nhưng khi tôi chuyển sang trình duyệt thì nó chỉ ghi đè lên bảng tạm với bất cứ thứ gì có trong đó lần cuối trình duyệt được sử dụng. Những gì hoạt động như pbcopy trong Linux?


2
... và cho những người không biết những gì pbcopy là, đây là người đàn ông trang developer.apple.com/library/mac/#documentation/Darwin/Reference/...
Rob Cowell

Một công cụ có thể hữu ích với điều này là ClipIt (và các trình quản lý clipboard tương tự). Nó không chỉ chơi độc đáo trong thiết bị đầu cuối, nó còn lưu giữ lịch sử clipboard. Khá hữu dụng.
brandizzi

Câu trả lời:


162

nếu bạn đã cài đặt X, bạn có thể thử xsel theo cách này:

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

hoặc với xclip:

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

bây giờ bạn có thể sử dụng'em:

echo 'go to my clipboard' | pbcopy

khi tôi không có XI, hãy sử dụng chức năng GNU Screen để sao chép giữa các shell mở trong một phiên bằng bàn phím

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

dán : Ctrl-a + ]

* chuyển động được thực hiện với vim như các ràng buộc chính (j, k, l & m).


1
Cảm ơn đây là chính xác thông tin tôi muốn. Bây giờ tôi tự hỏi liệu có cách nào tôi có thể tạo Màn hình cho phép tôi sử dụng các lệnh Emacs để chọn khu vực tôi muốn sao chép không ...
Noah Sussman

8
xsel: Không thể mở màn hình: (null): ioctl không phù hợp cho thiết bị
itazzad

Tôi đã giải quyết vấn đề "Không thể mở màn hình" trên Windows bằng cách cài đặt Xming và đặt HIỂN THỊ =: 0
scottgwald

1
Đối với người dùng tmux, nó thích Ctrl-b, [ -> go to position -> Space -> select texts -> Entervà dán hơnCtrl-b, ]
el que m'est

Bất cứ khi nào có thể, nếu đây là thứ gì đó vĩnh viễn bạn muốn, dĩ nhiên là thay vì làm phức tạp không gian tên của bạn với bí danh trong hồ sơ của bạn, sẽ tốt hơn nếu tạo một tập lệnh cơ bản cho việc này /bin/. Đặc biệt nếu bạn chia sẻ hồ sơ của bạn giữa các máy macOS và linux.
Benjamin R

9

Đặt một tập lệnh như thế này được gọi là pbcopy trong thư mục bin của bạn:

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

Điều này sẽ đặt STDIN trong cả bộ đệm lựa chọn và bảng tạm của bạn:

echo Hello world |pbcopy

Tại sao catcần thiết? Không phải nó sẽ chuyển hướng stdin đến stdout trong trường hợp này vì vậy lạm dụng mèo vô dụng hay tôi đang thiếu thứ gì đó?
Hultner

2
Bạn nói đúng, có vẻ như lạm dụng mèo vô dụng :-)
Erik

2
nếu bạn (như tôi) tự hỏi về "con mèo vô dụng" bí ẩn ở đâu, thì nó đã bị xóa bởi bản chỉnh sửa. NTS: trong trường hợp có những bình luận khó hiểu, hãy kiểm tra lịch sử ^^ '
yaitloutou

Làm thế nào để bạn dán nội dung sau khi sử dụng này? Chỉ sử dụng xclip -o? đây có phải là cách tốt hơn không?
n1k31t4

@ n1k31t4 Những gì tôi đã làm là tạo một tập lệnh tương đương bằng cách sử dụng xclip -sel c -ocho một tập lệnh tại /bin/pbpaste.
Benjamin R

5

Để mở rộng các giải pháp của @Erik và @xpixelz; hai tập lệnh này sẽ hoạt động trên cả hai nền tảng:

nội soi:

#!/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

Nhưng tại sao bạn thậm chí sẽ có tập lệnh này trên OS X, nơi nó là một phần của vùng người dùng bản địa?
Hultner

* làm tài liệu tham khảo cho chức năng tương tự, * dotfiles đa nền tảng: github.com/westurner/dotfiles/blob/develop/scripts/pbcopy
Wes Turner

Vẫn lạm dụng mèo và tại sao không kiểm tra xem xclip có tồn tại hay không và gán bí danh nếu có? Hoặc kiểm tra xem nhị phân pbpaste tồn tại cũng sẽ là một tùy chọn. Kiểm tra uname có vẻ như là một cách tiếp cận kỳ lạ cho vấn đề.
Hultner

2
@Hultner "Kiểm tra uname có vẻ như là một cách tiếp cận vấn đề kỳ quặc" Bạn cũng có thể kiểm tra các nhị phân, tốt nhất là, theo thứ tự, ngoại trừ với một ${a:-${b:-${c:+${d}}}}và một số type -P/ hasbài tập biến và / bin / kiểm tra thực thi.
Wes Turner

2

Câu trả lời này đề cập đến Hệ thống con Linux cho Windows.

Câu trả lời ngắn: sử dụng clip.exenhư thể nó pbcopyđể đặt một cái gì đó vào bảng tạm của Windows. Đó là phép màu. Ví dụ echo "Hello Windows" | clip.exetrong thiết bị đầu cuối bash hoặc Ubuntu bash của bạn, rồi `ctrl-v 'trong chương trình Windows.

Thêm ngữ cảnh:

Trong một nhận xét ở trên tôi đã đề cập rằng, khi sử dụng Xming trên Windows để kích hoạt chức năng này, cần phải đặt biến HIỂN THỊ ( export DISPLAY=:0trong nhiều trường hợp) trước khi các giải pháp xselxcliphoạt động. Đáng sợ thay, giải pháp này hoạt động theo cách không đáng tin cậy, ngẫu nhiên - khi dán từ Linux sang Windows, nhấn ctrl-vtừ một đến mười lần khiến bảng tạm bị dán (một lần) (đây là trên Windows 10 Surface Book 2 của tôi). Đừng lãng phí thời gian của bạn, sử dụng clip.exe.

LƯU Ý: Đừng quên .exe. Nếu không, bash Ubuntu sẽ đề nghị bạn cài đặt gói Linux geomview, đây không phải là điều bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.