ตกลงพื้นหลังเล็กน้อย: ฉันใช้ Mac และทำเท่าที่จะทำได้ใน CLI
โดยเฉพาะอย่างยิ่งฉันมักจะปรากฏในแท่ง USB cp
หรือmv
ไฟล์บนแล้วต้องการออกทันที (ยกเลิกการต่อเชื่อมและยกเลิกการเชื่อมต่อ) โดยทั่วไปสามารถทำได้ด้วยการกดแป้นจำนวนหนึ่งยกเว้นการยกเลิกการต่อเชื่อมซึ่งต้องการ (ใน 10.7) ไปที่พื้นที่เดสก์ท็อปที่ว่างเปล่า ตรงไปตรงมาขั้นตอนการยกเลิกการเมานต์นี้เป็นไปตามคำสั่งหลายขนาดซึ่งเป็นส่วนที่ใช้เวลามากที่สุดและน่าเบื่อที่สุดของกระบวนการ
มันจะเป็นธรรมชาติและมีประสิทธิภาพมากขึ้นที่จะพิมพ์พูด:
ej<tab> J<tab>
พูดว่าอุปกรณ์ USB ของฉันติดตั้งที่ / Volumes / Jefferson สิ่งที่ฉันคาดหวังที่จะได้รับจากการกดปุ่ม 6 ครั้งของฉันคือ:
eject /Volumes/Jefferson
สิ่งนี้ควรรันคำสั่ง:
diskutil unmount /Volumes/Jefferson
ดังนั้นฉันจึงเขียนฟังก์ชันเล็ก ๆ ที่ดี:
eject() {
diskutil unmount /Volumes/$1
}
และฟังก์ชั่นเสร็จสมบูรณ์ที่จะไปกับมัน:
compdef '_files -g "/Volumes/*"' eject
อย่างไรก็ตามมีปัญหากับสิ่งนี้ _files
ฟังก์ชั่นสร้างเส้นทางที่สมบูรณ์ ตอนนี้ฉันสามารถเปลี่ยนบรรทัดในฟังก์ชั่น "eject" ของฉันเป็นdiskutil unmount $1
และสิ่งต่าง ๆ จะใช้งานได้ แต่จากนั้นฉันก็ไม่สามารถพิมพ์อักษรตัวแรกของชื่อจุดเมานท์ได้เนื่องจากเส้นทางเริ่มต้นด้วย / Volumes / ตัวอย่างเช่นถ้าฉันพิมพ์J<tab
ฉันจะได้รับการเติมข้อความอัตโนมัติสำหรับไฟล์ใน PWD ฉันจะต้องพิมพ์/Volumes/J<tab>
เพื่อให้ได้ความสมบูรณ์ที่ต้องการ
ดังนั้นมีฟังก์ชั่นเสร็จสมบูรณ์ที่จะคว้าชื่อไฟล์จากตำแหน่งที่กำหนดไว้ล่วงหน้าที่เฉพาะเจาะจงมากกว่าที่จะสร้างเส้นทางที่สมบูรณ์?
ฉันอยากจะกดปุ่มนี้ลงไปถึง 6 ครั้ง