ตัด newline ต่อท้ายในนามแฝงทุบตีซับ


7

ฉันกำลังพยายามเขียนนามแฝงง่ายๆบนเทอร์มินัล Mac OS X ของฉันเพื่อคัดลอกไดเรกทอรีการทำงานปัจจุบัน ฉันมีสิ่งนี้:

alias cpwd="echo \`pwd\` | pbcopy; echo \"Copied \`pwd\`\""

จากนั้นฉันสามารถเรียกใช้สิ่งต่อไปนี้เพื่อคัดลอก:

$ cpwd

ปัญหาคือecho pwdมีการขึ้นบรรทัดใหม่ในตอนท้าย ดังนั้นเมื่อฉันวางมันจะทำงานทันที (ถ้าวางในเทอร์มินัล)

สิ่งที่ฉันต้องการทำคือตัดการขึ้นบรรทัดใหม่ของการทดลอง แต่ไม่มีสิ่งใดที่ฉันพบบนอินเทอร์เน็ตดูเหมือนจะเหมาะกับฉัน เห็นวิธีการแก้ปัญหาต่าง ๆ ที่เกี่ยวข้องกับการsed, awkและcutแต่ฉันไม่สามารถค่อนข้างได้รับมัน ดูเหมือนว่ามันจะง่ายที่จะทำ


หมายเหตุด้านข้างสำหรับทุกคนที่เห็นโพสต์นี้ก่อนหน้านี้ฉันต้องหลบหนีเห็บหลังในนามแฝงเพราะpwdจริงๆแล้วถูกเรียกใช้เมื่อนามแฝงถูกเริ่มต้น
Sean Adkinson

คำตอบ:


4

ฉันเชื่อว่าสิ่งนี้ควรจะได้ผล:

alias cwd="echo -n `pwd` | pbcopy; echo \"Copied `pwd`\""

ข้อความแจ้ง-nว่า "ไม่มีบรรทัดใหม่" ไม่ว่าจะเป็นหรือคุณสามารถส่งออกผ่านtrและลบอักขระบรรทัดใหม่เช่น:

alias cwd="echo `pwd` | tr -d "\n" | pbcopy; echo \"Copied `pwd`\""

ฉันไม่แน่ใจว่าคุณต้องการลบอักขระบรรทัดใหม่ที่ต่อท้ายออกจากเสียงสะท้อนแรกหรือทั้งสองอย่าง - แต่ฉันเดาว่าคุณสามารถเข้าใจได้ว่ามันจะใช้ได้ผลกับอันแรกหรือไม่;


หรือecho $(pwd)'\c' | pbcopy; echo \"Copied $(pwd)\"ที่ใดที่$(cmd)(ปกติ) เทียบเท่ากับ`cmd`หรือpwd | tr -d "\n" | pbcopy; echo …เนื่องจากecho `xyz`(หรือecho $(xyz)) โดยทั่วไปสวยมากเหมือนกับที่เป็นแค่ธรรมดาxyz(สมมติว่าxyzสร้างผลลัพธ์หนึ่งบรรทัด )
สกอตต์

ฮาผมกำลังมองหาในสถานที่ไม่ถูกต้องสำหรับคำตอบ - man pwdไม่ได้คิดเกี่ยวกับ ขอบคุณ!
Sean Adkinson

ที่จริง ... เพิ่งสังเกตว่ามันไม่ได้อยู่ในฉันman pwdดังนั้นฉันจึงไม่มีโอกาส :-)
Sean Adkinson

1
printf "%s" "$(pwd)"ก็จะทำงานเช่นกัน
เกล็นแจ็

ในกรณีที่คุณเพิ่มนามแฝงนี้ด้วยตัวคุณเองให้ดูความคิดเห็นของฉันในคำถามเดิม คุณต้องหลบหนีจากเห็บหลัง ขอบคุณสำหรับความช่วยเหลือ!
Sean Adkinson

0

ฉันไม่แน่ใจเกี่ยวกับคำสั่ง echo ของ Mac OS X แต่หากมีการระบุอาร์กิวเมนต์ -n echo จะไม่แสดงบรรทัดขึ้นบรรทัดใหม่:

-n ไม่ส่งออกบรรทัดใหม่ต่อท้าย

ความนับถือ...

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