ฉันจะไพพ์เอาต์พุตมาตรฐานของเทอร์มินัล (stdout) ไปยังคลิปบอร์ดได้อย่างไร


106

ตัวอย่างเช่น,

สมมติว่าฉันต้องการแสดงรายการเนื้อหาของโฟลเดอร์และวางลงในหน้าต่างแชทโดยตรงเพื่อให้เพื่อนเห็น

ฉันรู้ว่าฉันสามารถทำได้ls > filename.txtเพื่อสร้างไฟล์ (filename.txt) พร้อมเนื้อหาเหล่านั้น ฉันจะต้องเปิดหรือพิมพ์ไฟล์และเลือกและคัดลอกบล็อกข้อความด้วยตนเอง ( ซึ่งน่ารำคาญ / น่าเบื่อ ) ฉันสามารถเลือกและคัดลอกผลลัพธ์lsโดยตรงจากภายในหน้าต่างเทอร์มินัลได้อย่างชัดเจน

มันจะได้เร็วขึ้นมาก / ง่ายเพียงแค่ออกมาตรฐานท่อไปยังคลิปบอร์ด

คำสั่งเทอร์มินัลอนุญาตให้ฉันทำอะไรได้บ้าง?


คำตอบ:


122

ซึ่งสามารถทำได้ด้วย ยูทิลิตี้บรรทัดคำสั่งxsel หรือ xclip เนื่องจากไม่มีโปรแกรมมาพร้อมกับ Ubuntu โดยค่าเริ่มต้นคุณจะต้องติดตั้งผ่านซอฟต์แวร์ Ubuntu หรือเทอร์มินัลก่อน นี่เป็นวิธีในเทอร์มินัล (แต่จำไว้ว่าคุณต้องการเพียงหนึ่งในสองสิ่งนี้)

sudo apt install xsel
sudo apt install xclip

ตอนนี้ตัวอย่างบางส่วน หากคุณต้องการคัดลอกผลลัพธ์lsไปยังคลิปบอร์ดนี่คือสิ่งที่คุณต้องการ:

ด้วย xsel:

ls | xsel -ib

ด้วย xclip:

ls | xclip -sel clip

สามารถของหลักสูตรนี้จะใช้สำหรับคำสั่งสถานีอื่น ๆ เช่นกัน สมมติว่าคุณต้องการวางข้อมูลเครือข่ายของคุณในฟอรัมช่วยเหลือ

ด้วย xsel:

sudo lshw -C network | xsel -ib

ด้วย xclip:

sudo lshw -C network | xclip -sel clip

ทำให้สิ่งนี้ง่ายยิ่งขึ้นด้วยนามแฝงทุบตีใหม่!

แก้ไข~/.bash_aliasesไฟล์ของคุณ(หากยังไม่มีไฟล์ให้สร้างก่อนtouch ~/.bash_aliases)

จากนั้นเพิ่มหนึ่งรายการ (ขึ้นอยู่กับโปรแกรมที่คุณตัดสินใจไปด้วย) ของรายการต่อไปนี้:

alias copy='xclip -sel clip'

หรือ

alias copy='xsel -ib'

จากนั้นบันทึกและปิด

ตอนนี้ (หลังจากรีสตาร์ทเครื่องของคุณ) คุณสามารถส่งออกมาตรฐานไปยังคลิปบอร์ดเพียงแค่ท่อไปที่ 'คัดลอก' (หรือสิ่งที่คุณตัดสินใจที่จะตั้งชื่อนามแฝงใหม่ของคุณ)

ตัวอย่างเช่น:

ls | copy

1
ด้วยรุ่นใหม่ Ubuntu aptคุณควรใช้ ดังนั้นหรือsudo apt install xsel sudo apt install xclip
wisbucky

1
ขอบคุณสำหรับคำตอบ แต่คุณรู้หรือไม่ว่าอะไรก็ตามที่มีเฉพาะกับสถานี Linux
Mohamad

1
@jpaugh เปรียบเทียบเอกสาร Ubuntu จัดการแพ็กเกจสำหรับ16.04เทียบกับ14.04 ใน 16.04 ก็เพียงกล่าวและไม่ได้apt apt-getคุณยังสามารถใช้แต่พวกเขากำลังพยายามที่จะส่งเสริมให้คนที่จะใช้apt-get apt
wisbucky

2
คุณไม่ต้องรีสตาร์ทเครื่อง คุณสามารถทำได้source ~/.bash_aliases
Rob K

1
@Mohamad เหล่านี้ใช้สำหรับการทำงานภายในเซิร์ฟเวอร์ X (เพราะมีฟังก์ชั่นคลิปบอร์ด) หากคุณไม่มีสิ่งนั้นคุณต้องทำในโปรแกรมจำลองเทอร์มินัลของคุณ วิธีการทำนั้นขึ้นอยู่กับซอฟต์แวร์จริงที่คุณใช้เนื่องจากไม่มีมาตรฐานที่แท้จริงสำหรับสิ่งนั้น
Thorbjørn Ravn Andersen

2

หากคุณพยายามที่จะคัดลอกไปยังคลิปบอร์ดโดยใช้ Ubuntu ในระบบย่อย Windows สำหรับ Linux (WSL) xsel หรือ xclip จะไม่ทำงานจนกว่าคุณจะใช้ X Windows เนื่องจากคลิปบอร์ดมีไว้สำหรับ grahpical เท่านั้น อย่างไรก็ตามเพื่อให้ท่อส่งออกขั้วมาตรฐานไปยังคลิปบอร์ดใน WSL Ubuntu clip.exeคุณสามารถใช้ จากนั้นคุณสามารถวางลงในเทอร์มินัล WSL Ubuntu ด้วยคำสั่งวางมาตรฐานและข้อความที่คัดลอกจะมีอยู่ใน Windows เช่นกัน ตัวอย่างเช่น,

pwd | clip.exe 

จะคัดลอกไดเรกทอรีการทำงานปัจจุบันไปยังคลิปบอร์ด (Windows)

ผลการค้นหานี้จะปรากฏขึ้นที่ด้านบนเมื่อมองหาวิธีการที่จะคัดลอก / วางข้อความใน WSL ดังนั้นฉันคิดว่ามันคุ้มค่าที่จะกล่าวถึงนี้เพื่อที่ผู้อ่านไม่จำเป็นต้องติดตั้งหรือ xsel xclip ใน Ubuntu clip.exeและใช้แทน

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