กด alt + numeric ใน bash แล้วคุณจะได้ (arg [numeric]) นั่นคืออะไร?


101

กด alt + numeric ใน bash แล้วคุณจะได้ (arg [numeric]) นั่นคืออะไร?

(คำถามประเภทนี้เหมาะกว่าสำหรับการถามมนุษย์แทนที่จะพยายาม "เดา" คำศัพท์ที่ถูกต้องเพื่อค้นหาในเอกสารทางอินเทอร์เน็ต)


หากคุณมีset keymap viในการ~/.inputrcกดปุ่มEsc + Digitจะนำคุณไปสู่โหมดเดียวกันราวกับว่ากำลังเตรียมพร้อมสำหรับการทำซ้ำคำสั่ง vi (แต่คุณไม่สามารถใช้การเชื่อมโยง vi จากบนได้มีเพียงอีแมคที่น่าเกลียดเท่านั้น :-()
Ciro Santilli 郝海东冠状病六四事件法轮功

วลีค้นหาของฉันคือalt number terminal linux , alt + 1-9 terminalและในที่สุดshell alt + 1ซึ่งนำฉันมาที่นี่
sshow

คำตอบ:


62

คำที่คุณต้องการใช้กับ Google คือ:

"readline arguments"

สิ่งนี้จะนำไปสู่ตัวอย่างเช่นบทนี้จากคู่มืออ้างอิง bash :

คุณสามารถส่งอาร์กิวเมนต์ตัวเลขไปยังคำสั่ง Readline บางครั้งอาร์กิวเมนต์ทำหน้าที่นับซ้ำบางครั้งก็เป็นสัญญาณของการโต้แย้งที่มีนัยสำคัญ หากคุณส่งอาร์กิวเมนต์เชิงลบไปยังคำสั่งซึ่งโดยปกติจะทำหน้าที่ในทิศทางไปข้างหน้าคำสั่งนั้นจะทำงานในทิศทางย้อนกลับ ตัวอย่างเช่นหากต้องการฆ่าข้อความกลับไปที่จุดเริ่มต้นของบรรทัดคุณอาจพิมพ์ 'M-- C-k'

วิธีทั่วไปในการส่งอาร์กิวเมนต์ตัวเลขไปยังคำสั่งคือการพิมพ์เมตาหลักก่อนคำสั่ง หาก 'หลัก' ตัวแรกที่พิมพ์เป็นเครื่องหมายลบ ('-') เครื่องหมายของอาร์กิวเมนต์จะเป็นลบ เมื่อคุณพิมพ์เมตาหลักหนึ่งตัวเพื่อเริ่มต้นอาร์กิวเมนต์คุณสามารถพิมพ์ส่วนที่เหลือของตัวเลขจากนั้นจึงพิมพ์คำสั่ง ตัวอย่างเช่นหากต้องการให้คำสั่ง Cd อาร์กิวเมนต์เป็น 10 คุณสามารถพิมพ์ 'M-1 0 C-d' ซึ่งจะลบอักขระสิบตัวถัดไปในบรรทัดอินพุต

เพื่อให้ใช้งานได้คุณต้องรู้ว่ามีการแมปคีย์ Meta ไว้ที่ใด: บางครั้งก็เป็นAltบางครั้งEscคอมพิวเตอร์ที่ยอดเยี่ยมก็มีคีย์ Meta เฉพาะ;)

สำหรับผู้ที่ไม่คุ้นเคยกับไวยากรณ์ 'M-- Ck' เทียบเท่าของMeta_key+ +- Ctrl k"M" เป็นชวเลขสำหรับคีย์ Meta ซึ่งตามที่ระบุไว้จะแตกต่างกันไปตามระบบ "C" คือชวเลขสำหรับคีย์ Ctrl "-" หลังอักขระ (เช่น "M-") ไม่ใช่สิ่งที่คุณพิมพ์ แต่เป็นวิธีระบุการกดแป้นพร้อมกัน


2
มีวิธีทำซ้ำอักขระตัวเลขโดยใช้อาร์กิวเมนต์ตัวเลขหรือไม่? ตัวอย่างเช่นพูดว่าฉันต้องการเขียน 128 ศูนย์ ('0') ฉันคิดว่าฉันสามารถเขียน Alt + 128 แล้วก็ 0 แต่นั่นก็ทำให้ฉัน(arg: 1280(แม้ว่าฉันจะปล่อยปุ่ม Alt ไป) ฉันจะทำซ้ำตัวเลขโดยใช้กลไกนี้ได้อย่างไร
Victor Zamanian

1
@ วิกเตอร์: คำถามที่น่าสนใจ ฉันคิดวิธีทำกับ readline ไม่ได้ คุณน่าจะดีกว่ากับสิ่งที่ชอบ$(perl -e 'print "0" x 128')


28

ในการทำซ้ำอักขระตัวเลขเช่น 128 ศูนย์ให้กดดังต่อไปนี้:

Meta-key + 1 2 8 Ctrl + v 0


โอ้โหมันก็เหมือนกับvim(อาจจะเป็น emac ด้วยฉันจำไม่ได้)
Sridhar Sarnobat

12

ลองทำตามนี้ ประเภทAlt 4แล้วพิมพ์แล้วกดTEnter

แก้ไขเพื่อใช้ HTML ที่น่าสนใจยิ่งขึ้น


9
จะเกิดอะไรขึ้นสำหรับคุณ? ฉันไม่ได้รับอะไรเลย
Mortimer McMire

1
tแทรกอักขระสี่ตัว
Wesley Baugh

4
ในเวอร์ชัน Bash ของฉัน (4.4) ไม่จำเป็นต้องกด ENTER
luca76

9

มันทำซ้ำคำสั่งถัดไปเนื่องจากหลาย ๆ ครั้งเช่นเดียวกับใน Emacs เช่นM-1-0 C-pย้ายรายการย้อนหลัง 10 รายการ M-4 C-hเว้นวรรคสี่อักขระM-3 M-tย้ายคำก่อนหน้าไปข้างหน้าสามครั้งและอื่น ๆ ที่นี่ฉันใช้M-ความหมาย "เมตา" สำหรับปุ่ม Alt เช่นเดียวกับที่กำหนดเองใน Bash


9

ฉันรู้ว่านี่เป็นคำตอบที่ยอมรับแล้ว แต่ฉันพบตัวอย่างที่มีประโยชน์ซึ่งแสดงให้เห็นถึงการใช้งานเพิ่มเติมนอกเหนือจากการใช้อักขระซ้ำ ๆ อาร์กิวเมนต์หลักสามารถใช้กับสิ่งต่างๆได้ทุกประเภท ตัวอย่างเช่นลำดับ "Alt + 3, Escape, Backspace" จะลบย้อนหลัง 3 คำ


4

ฉันไม่รู้ แต่เมื่อคุณทำ alt + numeric แล้วคุณกดอักขระคุณจะได้รับเครื่องหมายตัวเลข: (arg: 123) + a -> 123 ครั้ง "a"


8
คุณไม่รู้ แต่คุณรู้หรือไม่? % - |

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