วิธีใช้ - เป็นนามแฝง


11

เมื่อฉันใช้ openSUSE 11.3 มันมาพร้อมกับชื่อแทนหลายรายการที่ตั้งค่าไว้แล้ว สองที่ผมใช้มากเป็น+สำหรับpushd .และสำหรับ- popdตอนนี้ที่ Debian ฉันไม่สามารถหาวิธีสร้างอันที่สองได้ alias -=popdพยายามที่จะอ่าน-=เป็นตัวเลือกคำสั่งเพื่อนามแฝง ฉันได้ลองใส่เครื่องหมายคำพูด (ทั้งเดี่ยวและคู่) รอบ ๆ มันและนำหน้าด้วยเครื่องหมายทับขวา แต่ฉันเพิ่งได้รับข้อความแสดงข้อผิดพลาด ข้อเสนอแนะใด ๆ

ขอบคุณ

คำตอบ:


12

ลองนี้:

alias -- -=popd

ทำงานอย่างน้อยสำหรับฉัน:

usr@srv % alias -- -=echo
usr@srv % - test
test

ขอบคุณทำงานได้อย่างสมบูรณ์ อะไร--ทำว่า?
Wolf

4
@ Wolf: สำหรับคำสั่งส่วนใหญ่ให้--ทำเครื่องหมายที่ตัวเลือกสุดท้าย; ทุกอย่างหลังจากที่มันเป็นข้อโต้แย้ง ตัวอย่างเช่นlogger foo -x barจะบันทึก "foo bar" และ-xถือเป็นตัวเลือกในขณะที่logger -- foo -x barจะถือว่าเป็นคำธรรมดาในข้อความ "foo -x bar"
user1686

1
--แสดงให้เห็นว่าไม่มีตัวเลือกมากขึ้นตามบนบรรทัดคำสั่งดังต่อไปนี้-'s ไม่ได้ตีความว่าเป็นตัวเลือก ดังนั้นสิ่งนี้จะช่วยให้คุณสามารถใช้catไฟล์ที่ขึ้นต้นด้วย-;-)
binfalse

@grawity และ @binfalse: ขอบคุณสำหรับคำอธิบายนั่นเป็นประโยชน์มาก! ดีมากที่จะรู้
Wolf

7

ในbashคุณสามารถสร้างฟังก์ชั่นชื่อเช่น:

+() { pushd "$@"; }
-() { popd "$@"; }

คือ$@อะไร
Lazer

2
@Lazer: ใน sh และ bash ให้$@ขยายอาร์กิวเมนต์ทั้งหมดที่กำหนดให้กับฟังก์ชันหรือสคริปต์ unquoted $*มันทำงานแบบเดียวกับ เมื่ออยู่ในเครื่องหมายอย่างไรก็ตามมันขยายไปว่าคำเดียวกันตามที่กำหนดเดิมโดยไม่ต้องแยกใด ๆ เพิ่มเติม
user1686

@Lazer: $@ขยายพารามิเตอร์ทั้งหมดที่ส่งผ่านไปยังฟังก์ชัน (เทียบเท่า"$1" "$2" ...) สำหรับข้อมูลเพิ่มเติมให้ทำman bashและค้นหาพารามิเตอร์พิเศษ
AndréParamés
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.