ฉันจะส่ง stdin ไปยังคลิปบอร์ดได้อย่างไร


44

มีฟังก์ชั่นในระบบยูนิกซ์ที่อนุญาตให้ทำสิ่งต่อไปนี้

echo "Some Text" | copy-to-clipboard

คุณต้องหมายถึง stdout?
phunehehe

3
จริงๆมันขึ้นอยู่ที่ด้านข้างของท่อยืนของคุณใน: P stdinเพื่อคำสั่งที่ส่งไปยังคลิปบอร์ดของมัน
สเตฟาน

2
คนที่ใช้ Unix มานานจะบอกคุณได้ว่าควรเขียน<longTextFile straightToClipboardไว้ดีกว่า มันเป็นเช่นเดียวแต่ทำงานไม่จำเป็นต้องมีcat longTextFile straightToClipboard catเพียงแค่การสังเกต อย่าลังเลที่จะเพิกเฉย ดูการใช้ประโยชน์จากรางวัล Catสำหรับพื้นหลังและตัวอย่างถ้าคุณสนใจ
Mikel

คำตอบ:


34

มีเครื่องมือสองสามตัวที่สามารถเขียนไปยังคลิปบอร์ดได้ xselฉันใช้ ใช้ธงเพื่อเขียนไปยังการเลือก X หลัก ( -p), การเลือกรอง ( -s) หรือคลิปบอร์ด ( -b) ผ่านมัน-iจะบอกให้อ่านจาก stdin ดังนั้นคุณต้องการ:

$ echo "Some Text" | xsel -i -b

4
อีกอันหนึ่งคือ xclip; มันยอมรับจาก stdin โดยค่าเริ่มต้น ฉันใช้มันเพียงเพราะเป็นเครื่องมือแรกที่ฉันได้เรียนรู้
Shawn J. Goff

@Shawn โพสต์เป็นคำตอบที่แยกจากกัน :)
Michael Mrozek

ฉันคิดว่า-iไม่จำเป็นในกรณีนี้: man xsel1.2.0 พูดว่า:and the selection is set from standard input if standard input is not a terminal (tty)
Ciro Santilli 新疆改造中心法轮功六四事件

xsel ไม่ได้ผลสำหรับฉัน (ฉันไม่รู้ว่าทำไม) แต่ xclip (ต่อคำตอบอื่น ๆ ) ก็ทำได้
markrian

11

การใช้xclipตามที่ @Nicolas แนะนำหากคุณต้องการวางเนื้อหาของคลิปบอร์ดในภายหลังเช่นใช้ Ctrl + V คุณสามารถใช้วิธีนี้ได้:

$ echo "Some Text" | xclip -selection clipboard

1
ไม่พยายามฟื้นฟูคำถามเก่า แต่ถ้าคุณขี้เกียจก็ใช้echo "Some Text" | xclip -sel cงานได้เช่นกัน
ปิดบัง

9

คุณสามารถใช้xsel

xsel < file 

10
คำถามคือคลิปบอร์ดใด เซิร์ฟเวอร์ Linux X มี 3 (โดยทั่วไปใช้เพียง 2 ตัวเท่านั้น) ... xsel ใช้คลิปบอร์ดหลักตามค่าเริ่มต้นคลิปบอร์ดหลักจะเริ่มโดยอัตโนมัติทุกครั้งที่คุณเลือกสิ่งต่างๆ คุณวางถ้าโดยการกดปุ่มกลางของเมาส์ .. คลิปบอร์ดชนิด Ctrl + C / Crtr + V เรียกว่าคลิปบอร์ด CLIPBOARD :) .. ดังนั้นหากคุณต้องการใช้คลิปบอร์ด Ctrl + C / Ctrl + V ด้วย 'xsel' คำสั่งคือ: xsel -ib <file-long-or-short("ดู ma, no cat!" :) ... หรือหากคุณต้องการ<file-long-or-short xsel -ib.. -i เป็นค่าเริ่มต้น -b สำหรับคลิปบอร์ดแบบ
Peter.O

คำพังเพยขั้ว แก้ไข @jamespo - ดูเหมือนจะไม่ทำงาน
ripper234

ใช้ได้กับฉันใน gnome-terminal ใน Ubuntu 10.04 โดยใช้ xsel ใน repo (วางด้วยปุ่มกลาง)
jamespo


0

ที่ง่ายที่สุดน่าจะเป็นxclip:

$ echo "Some Text" | xclip

จากนั้นวางโดยใช้ปุ่มกลางของเมาส์

ชอบxselก็มักจะไม่ได้ติดตั้งโดยค่าเริ่มต้นดังนั้นคุณอาจจำเป็นต้องติดตั้ง ( sudo apt-get install xclipบน Debian / Ubuntu)


2
xclipต้องการ-selection clipboardตัวเลือก การเลือกค่าเริ่มต้นสำหรับแต่ละเพจเป็นอย่างอื่น
คิวเมนตัส

0

xclipเป็นวิธีที่ดีในการตอบกลับโดย @Nicolas Raoul แต่เมื่อวางสิ่งใดก็ตามที่มีการขึ้นบรรทัดใหม่ไปยังคลิปบอร์ดเช่นpwdการขึ้นบรรทัดใหม่จะถูกคัดลอกด้วยเช่นกัน ในบางสถานการณ์อาจต้องการ แต่ส่วนใหญ่ไม่ต้องการขึ้นบรรทัดใหม่

การแก้ปัญหาคือ:

echo -n $(pwd) | xclip -selection clipboard

(การ-nลบ newline ออกจากอาร์กิวเมนต์ที่สะท้อน)

หรือ:

printf %s $(pwd) | xclip -selection clipboard

""รอบ$(pwd)อาจจะต้อง แต่การทำงานที่มีและไม่มีในอูบุนตูกับทุบตี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.