X11
Nếu sử dụng X11 (GUI phổ biến nhất trên các hệ thống dựa trên Unix hoặc Linux truyền thống), để sao chép nội dung của tệp vào lựa chọn X11 CLIPBOARD mà không hiển thị , bạn có thể sử dụng xclip
hoặc xsel
tiện ích.
xclip -sel c < file
Hoặc là:
xsel -b < file
Để lưu trữ nội dung file
dưới dạng lựa chọn CLIPBOARD X11.
Lưu ý rằng nó nên được lưu trữ bằng mã hóa UTF-8 hoặc nếu không dán sẽ không hoạt động đúng. Nếu file
được mã hóa bằng bộ ký tự khác, trước tiên bạn nên chuyển đổi sang UTF-8, như:
iconv -f latin1 -t utf8 | xclip -sel c
Đối với một tệp được mã hóa bằng latin1 / iso8859-1 .
Để lưu trữ dưới dạng CUT_BUFFER (những ứng dụng vẫn bị truy vấn bởi một số ứng dụng như xterm
khi không có gì yêu cầu các lựa chọn CLIPBOARD hoặc PRIMARY X và không cần phải có một quy trình chạy để phục vụ nó như cho các lựa chọn), mặc dù bạn có thể không muốn hoặc cần sử dụng ngày nay:
xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"
(loại bỏ các ký tự dòng mới khỏi file
).
Màn hình GNU
GNU screen
có readbuf
lệnh đưa nội dung của tệp vào bộ đệm sao chép riêng của nó (mà bạn dán ^A]
). Vì thế:
screen -X readbuf file
Hệ điều hành Apple / X
Mặc dù Apple OS / X có thể sử dụng X11. Nó không theo mặc định trừ khi bạn chạy ứng dụng X11. Bạn có thể sử dụng xclip
hoặc xsel
ở đó vì OS / X sẽ đồng bộ hóa lựa chọn X11 CLIPBOARD với bộ đệm bảng điều khiển OS / X, nhưng điều đó sẽ hơi lãng phí khi khởi động máy chủ X11 chỉ vì điều đó.
Trên OS / X, bạn có thể sử dụng pbcopy
lệnh để lưu trữ nội dung tùy ý vào các tông đệm:
pbcopy < file
(mã hóa ký tự của tệp dự kiến là mã địa phương).
Vỏ ốc
Hầu hết các shell đều có bộ đệm sao chép riêng. Trong chế độ emacs, các thao tác cắt và sao chép lưu trữ văn bản đã sao chép / cắt vào một ngăn xếp mà bạn đã kéo / dán Ctrl-Yvà chuyển quaAlt+Y
zsh CUTBUFFER / giết
Trong zsh
, ngăn xếp được lưu trữ trong $killring
mảng và đỉnh của ngăn xếp trong $CUTBUFFER
biến mặc dù các biến đó chỉ có sẵn từ các widget Zsh Line Editor (zle) và một vài widget chuyên dụng là cách ưa thích để thao tác chúng.
Bởi vì những thứ đó chỉ có sẵn thông qua ZLE, nên thực hiện nó bằng các lệnh hơi phức tạp:
zmodload zsh/mapfile
zle-line-init() {
if [ -n "$FILE_TO_COPY" ]; then
zle copy-region-as-kill $mapfile[$FILE_TO_COPY]
unset FILE_TO_COPY
fi
}
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A
Các zle-line-init
widget đặc biệt được thực thi một lần khi bắt đầu mỗi dấu nhắc lệnh mới. Điều đó có nghĩa là tập tin sẽ chỉ được sao chép ở dấu nhắc tiếp theo. Chẳng hạn, nếu bạn làm:
file-copy file; sleep 2
Các tập tin sẽ chỉ được sao chép sau 2 giây.