เมื่อเรียกใช้คำสั่งบางครั้งคุณอาจต้องเรียกใช้คำสั่งด้วยอาร์กิวเมนต์จากคำสั่งสุดท้าย คุณจะทำสิ่งนี้ได้อย่างไร
แน่นอนยกเว้นการใช้ปุ่มลูกศรและDelปุ่ม: ↑←←←... ...←→→DelDelDelDel<new_command>
เมื่อเรียกใช้คำสั่งบางครั้งคุณอาจต้องเรียกใช้คำสั่งด้วยอาร์กิวเมนต์จากคำสั่งสุดท้าย คุณจะทำสิ่งนี้ได้อย่างไร
แน่นอนยกเว้นการใช้ปุ่มลูกศรและDelปุ่ม: ↑←←←... ...←→→DelDelDelDel<new_command>
คำตอบ:
ตัวอย่างเช่นหากคุณรันคำสั่งนี้:
mkdir long_path_here/new_dir
เป็นไปได้มากว่าคุณต้องการไปในสารบบที่เพิ่งสร้างขึ้น คุณสามารถทำได้โดยใช้ "ทางลัด" ถัดไป:
cd
Esc.- พิมพ์cd
และหลังจากกดEscตามด้วย.(ไม่ใช่ในเวลาเดียวกัน) หากคำสั่งก่อนหน้าไม่มีข้อโต้แย้งคุณจะได้รับคำสั่งก่อนหน้านี้เองcd !*
- ในกรณีนี้คุณจะได้รับข้อโต้แย้งทั้งหมดจากคำสั่ง previuos หากคำสั่งก่อนหน้าไม่มีข้อโต้แย้งคุณจะไม่ได้รับอะไรเลยcd
Alt+ .- พิมพ์cd
และหลังจากกดAltและ.(ในเวลาเดียวกัน) ในความเป็นจริงการใช้วิธีนี้และกด.(โดยไม่ปล่อยAlt) ต่อไปคุณจะได้รับอาร์กิวเมนต์สุดท้ายสำหรับทุกคำสั่งจากประวัติ หากคำสั่งไม่มีข้อโต้แย้งคุณจะได้รับคำสั่งนั้นเองโดยทั่วไป: <command>
Esc.หรือ<command> !*
หรือ+<command>
Alt.
มีช็อตคัตบางอย่างหากคุณต้องการอาร์กิวเมนต์ทั้งหมดจากคำสั่งก่อนหน้าหรือเพียงแค่อาร์กิวเมนต์สุดท้าย
<command> !*
<command> !$
ตัวอย่าง:
ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/
ls foo/ bar/
ls !$ # Gives the results of ls bar/
หากคุณต้องการอาร์กิวเมนต์เดียวจากรายการอาร์กิวเมนต์จากคำสั่งก่อนหน้าคุณสามารถใช้ <command> !!:<argNumber>
ตัวอย่าง:
ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/
!
เวอร์ชันในเวอร์ชัน ARG เดียวเช่น!:2
. สมมติว่าทุบตีเริ่มต้น
!^
!:1
กล่าวถึง!*
และ!$
เป็นสิ่งที่ดี แต่เมื่อคุณต้องแก้ไขทางลัด readline เล็ก ๆ น้อย ๆ มาช่วย!
ตัวอย่างเช่นแทนที่จะนับไม่ถ้วน↑←←←... ←→→DelDelDel... Delคุณสามารถกด↑ Ctrl-a(ข้ามไปยังจุดเริ่มต้นของบรรทัด) Alt+d(ลบไปยังท้ายคำ)
สำหรับข้อมูลเพิ่มเติมและการค้นหาสำหรับman readline
Default key bindings
เพื่อที่จะใช้n
อาร์กิวเมนต์ TH จากคำสั่งก่อนหน้าของคุณชนิดAlt+ +n
Alt_ตัวอย่างเช่นหลังจาก:
$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
การพิมพ์echo
ตามด้วยAlt2Alt_จะให้สิ่งนี้แก่คุณในการแจ้งครั้งต่อไป:
$ echo 2
"ภาพหน้าจอ" หลังจากที่คุณชมAlt2คือ:
(arg: 2) echo
คุณสามารถทำซ้ำAlt_หลาย ๆ ครั้งเพื่อรับn
อาร์กิวเมนต์ th ของคำสั่งก่อนหน้าอย่างต่อเนื่อง
r="fc -s"
อีกหนึ่งความคิดที่มีประโยชน์คือการกำหนดชื่อแทน จากนั้นคุณสามารถทำการแทนที่คำสั่ง:
$ echo 1
1
$ r echo=history
history 1
27755 history 1