Sao chép nội dung của tệp vào bảng tạm mà không hiển thị nội dung của tệp


67

Cách sao chép nội dung của tệp trong UNIX mà không hiển thị nội dung tệp. Tôi không muốn mèo hoặc vi để xem nội dung.

Tôi muốn sao chép chúng vào clipboard để tôi có thể dán lại vào notepad của windows.

Tôi không thể sao chép tệp từ máy chủ đó sang máy chủ khác do hạn chế truy cập.


Bạn không thể truy cập nội dung của tệp mà không mở tệp ...
123

OK, nếu vậy có một cách dễ dàng để sao chép một tệp rất lớn. Tôi đã nhận được 1000 dòng.
Web Nash

nếu tập tin của bạn quá lớn thì clipboard sẽ thất bại. Khi các hạn chế truy cập nói rằng bạn không thể đọc tệp, bạn sẽ mất tất nhiên. Nếu bạn không thể sao chép tệp vì bạn không thể viết tệp bạn phải tự hỏi, nếu có một điểm đến khác bạn có thể ghi vào.
ikrabbe

Rất lớn. 1000 dòng. Chọn một.
123

2
Có gì một cửa sổ Notepad BTW?
Stéphane Chazelas

Câu trả lời:


77

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 xcliphoặc xseltiện ích.

xclip -sel c < file

Hoặc là:

xsel -b < file

Để lưu trữ nội dung filedướ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ư xtermkhi 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 screenreadbuflệ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 xcliphoặ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 pbcopylệ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 $killringmảng và đỉnh của ngăn xếp trong $CUTBUFFERbiế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-initwidget đặ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.


3
Tôi đang đối mặt với lỗi này:Error: Can't open display: (null)
Marcelo Filho

Vấn đề tương tự ở đây trong fedora 7
Michael Pacheco

@MarceloFilho xclipxsellà các tiện ích X11, chúng thao tác các lựa chọn X11, do đó chỉ có thể được sử dụng trong môi trường X11 $DISPLAYđược đặt.
Stéphane Chazelas

2

Có lẽ bạn muốn hỏi điều này . Nhưng bất kỳ tập tin nào bạn muốn đọc phải được mở bằng một số cuộc gọi hệ thống. Nếu bạn không có quyền truy cập vào một tập tin, bạn không thể đọc nó. Đó là ý tưởng của việc truy cập hạn chế.


Vì vậy, vấn đề thực tế của bạn là gì? Nếu bạn có thể đọc nhưng bạn không thể sao chép, bạn có thể không viết được. Nhưng khi bạn muốn sao chép, bạn cần ghi dữ liệu vào đâu đó.
ikrabbe

cảm ơn bạn!!! bạn đã cứu mạng tôi)
Alena Kastsiukavets

0

Sử dụng X11:

xclip -o > file

Nếu bạn có thể đọc tệp, vấn đề truy cập là về máy chủ đích.

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.