Dòng lệnh tương đương với việc sao chép một tập tin vào clipboard là gì?


89

Dòng lệnh tương đương với việc nhấn CTRL + C trên một tệp trong trình quản lý tệp để tệp (không phải tên tệp) được sao chép vào bảng tạm?

Ví dụ, một tình huống có thể hữu ích và nhanh chóng là khi bạn muốn sao chép vào bảng tạm một tệp từ thư mục bạn đang ở trong thiết bị đầu cuối để nhanh chóng dán tệp vào thư mục bạn đang ở trong trình quản lý tệp. Co nhung nguoi khac.


Điều này thực sự không giống như một bản sao với tôi. Một câu trả lời là về dán sao chép chung nói chung và câu trả lời này là về sao chép một chủ đề cụ thể của tệp
Ulysse BN

Câu trả lời:


104

Khi bạn nhấn Ctrl-C trên một tệp trong trình quản lý tệp, nội dung của tệp KHÔNG được sao chép vào bảng tạm. Một thử nghiệm đơn giản: chọn một tệp trong trình quản lý tệp, nhấn Ctrl-C, mở trình soạn thảo văn bản, nhấn Ctrl-V. Kết quả không phải là nội dung của tệp mà là đường dẫn đầy đủ của nó.

Trong thực tế, tình hình phức tạp hơn một chút vì bạn không thể làm ngược lại - sao chép danh sách tên tệp từ trình soạn thảo văn bản và dán chúng vào trình quản lý tệp.

Để sao chép một số dữ liệu từ dòng lệnh vào bảng tạm X11, bạn có thể sử dụng xcliplệnh, có thể được cài đặt với

sudo apt-get install xclip

để sao chép nội dung của một tập tin hoặc đầu ra của một số lệnh vào clipboard sử dụng

cat ./myfile.txt|xclip -i

văn bản sau đó có thể được dán ở đâu đó bằng nút chuột giữa (đây được gọi là "bộ đệm lựa chọn chính").

Nếu bạn muốn sao chép dữ liệu vào lựa chọn "clipboard", để nó có thể được dán vào một ứng dụng bằng Ctrl-V, bạn có thể làm

cat ./myfile.txt|xclip -i -selection clipboard

Để có thể sao chép tệp từ dòng lệnh và dán chúng vào trình quản lý tệp, bạn cần chỉ định một "nguyên tử đích" chính xác để trình quản lý tệp nhận ra dữ liệu trong bảng tạm và cũng cung cấp dữ liệu ở định dạng chính xác - may mắn thay, trong trường hợp sao chép tệp trong trình quản lý tệp, nó chỉ là một danh sách các tên tệp tuyệt đối, mỗi tên trên một dòng mới, một thứ dễ tạo bằng cách sử dụng findlệnh:

find ${PWD} -name "*.pdf"| xclip -i -selection clipboard -t text/uri-list

(ít nhất điều này hoạt động với tôi trong KDE). Bây giờ bạn có thể gói thành một tập lệnh nhỏ mà bạn có thể gọi, nói cb:

#!/bin/sh
xclip -i -selection clipboard -t text/uri-list

sau đó bạn đặt nó vào ~/bin, đặt bit thực thi trên nó và sử dụng nó như thế này:

find ${PWD} -name "*.txt"| cb

Đẹp phải không?


Đẹp, nhưng chỉ hoạt động cho văn bản và nó không thực sự là tập tin, chỉ là văn bản. Giả sử bạn có một tập tin jpg?
Straakowsky

Có, tôi biết hiệu ứng này là nếu bạn sao chép tệp từ trình quản lý tệp nếu bạn dán nó vào thư mục khác, bạn dán tệp đó, nhưng nếu bạn dán vào trình chỉnh sửa văn bản, bạn sẽ nhận được đường dẫn tệp.
Straakowsky

Trong trường hợp các tệp nhị phân (jpg, v.v.), mọi thứ phức tạp hơn nhiều. Ở đây tôi hỏi một câu hỏi lấy cảm hứng từ bạn - unix.stackexchange.com/questions/53503/... - có đọc về "nguyên tử mục tiêu" và các công cụ
Sergey

1
Tôi nghe nói rằng xclip cũng hỗ trợ sao chép tập tin với xclip-copyfilexclip-pastefile. Tôi chưa thực sự sử dụng nó, nhưng nó có thể là một giải pháp.
Gladen

Wow, @Gladen, tôi nghĩ bạn cần đăng nó dưới dạng một câu trả lời riêng biệt. Mặc dù nó hoạt động khi sử dụng xclip-copyfilevà sau đó xclip-pastefile, nhưng dường như không hoạt động với trình quản lý tệp Ubuntu ...
Serge

9

Tôi nghe nói rằng xclip cũng hỗ trợ sao chép tập tin với xclip-copyfilexclip-pastefile. Tôi chưa thực sự sử dụng nó, nhưng nó có thể là một giải pháp.


Điều đó chỉ sao chép tên tệp, không phải nội dung của tệp. Chỉ cần xem các ví dụ về trang người đàn ông, tức là$ man xclip-copyfile
Craig

0

Mac OS có pbcopycú pháp dễ dàng hơn:

pbcopy < ~/.ssh/id_rsa.pub 

hoặc là

cat ~/.ssh/id_rsa.pub  | pbcopy

Để mô phỏng pbcopytrên Ubuntu với xclip(cài đặt qua sudo apt install xclip):

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
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.