ฉันจะลบคำสั่งของฉันอย่างรวดเร็วได้อย่างไร


168

ฉันใช้เทอร์มินัลสำหรับงานเกือบทั้งหมด สมมติว่าฉันได้ป้อนคำสั่งขนาดใหญ่เช่นนี้:

sudo a-huge-command

วิธีที่ง่ายที่สุดในการลบคำสั่งทั้งหมดด้วยทางลัดเดียวแทนที่จะกดปุ่มbackspaceค้างไว้คืออะไร?

ฉันเป็นมือใหม่ของ Ubuntu ที่ต้องการใช้ Ubuntu อย่างมืออาชีพ


13
นอกจากนี้ยังคุ้มค่าที่จะทราบว่าคุณสามารถตั้งค่าbash(และหอยอื่น ๆ อีกหลาย) เพื่อทำความเข้าใจ vi set -o viคีย์: จากนั้นคุณสามารถทำesc, dd(หรือมิฉะนั้นแก้ไข / เปลี่ยนตามที่คุณสามารถทำใน vi [M])
Wayne Werner

6
หน้าแรก '#', ป้อน
Alistair Buxton

5
นี่เป็นแฮ็คราคาถูก แต่สำหรับสิ่งที่คุ้มค่าฉันมักจะกดลูกศรขึ้นจนกว่าฉันจะได้รับคำสั่งสั้น ๆ (เช่นls) จากนั้นย้อนกลับ - มันมักจะเป็นเพียงแค่สองสามครั้งของคีย์หลักดังนั้นมันจึงไม่ใหญ่ 'จัดการ
KennyPeanuts

CTRL <- เคาะสองสามครั้งมักจะให้ฉันกลับไปที่จุดเริ่มต้นของแบบสอบถามของฉัน .. นี่คือสิ่งที่คุณหมายถึงอะไร
marc-andre benoit

คำตอบ:


177

ใช้Ctrl+ Uเพื่อตัดข้อความจากตำแหน่งเคอร์เซอร์ไปยังจุดเริ่มต้นของบรรทัดคำสั่ง หลังจากนั้นหากคุณต้องการให้ใช้Ctrl+ Yเพื่อวางข้อความที่ตัด

ถ้าคุณเพียงต้องการที่จะทิ้งบรรทัดคำสั่งในปัจจุบันและได้รับใหม่สะอาดพร้อมท์ตี+CtrlC

สำหรับการอ้างอิงเพิ่มเติมโปรดตรวจสอบเอกสารของ Ubuntu เกี่ยวกับการใช้งาน


คำตอบนี้ใช้ได้ทั้ง bash (ค่าเริ่มต้นของ Ubuntu) และ tsch
Nick

ฉันคิดว่า dash เป็นค่าเริ่มต้นของ Ubuntu หรือไม่
คริส

15
dashเป็นล่ามเริ่มต้นสำหรับ/bin/shคำสั่ง bashคือการเข้าสู่ระบบเริ่มต้นและ TTY เชลล์
darvids0n

9
ฉันพบว่าCtrl + Cเป็นนิสัยที่ไม่ดีเนื่องจากฉันมักจะส่งสัญญาณไปยังโปรแกรมโดยไม่ได้ตั้งใจทำให้พวกเขาเสียชีวิตและสูญเสียความก้าวหน้าและ / หรือโมเมนตัม
606723

111

Ctrl+ Uควรช่วยคุณ

ด้านล่างเป็นตัวเลือกที่เหลือ คว้าจากที่นี่

UNIX เข้าใจคำสั่งควบคุมคีย์หลายคำสั่งที่คุณป้อนโดยกดปุ่มควบคุม (ctrl) ค้างไว้ขณะที่กดคีย์ที่สอง

CTRL+ S- หยุดหน้าจอและหยุดการแสดงผลใด ๆ บนหน้าจอจากการดำเนินการต่อ (เทียบเท่ากับปุ่มไม่เลื่อน) (บางครั้งใช้เวลาสักครู่ในการทำงาน)

CTRL+ Q- ยกเลิกการตรึงหน้าจอและให้การแสดงหน้าจอดำเนินการต่อ

CTRL+ C- ขัดจังหวะโปรแกรมที่กำลังทำงานอยู่

CTRL+ \- เหมือนกับ CTRL - C แต่แรงกว่า (ใช้เมื่อเทอร์มินัลไม่ตอบสนอง)

CTRL+ Z- หยุดโปรแกรมที่กำลังทำงานอยู่ชั่วคราว (ใช้คำสั่ง fg เพื่อดำเนินการโปรแกรมต่อไปดู s $

CTRL+ H- ลบอักขระตัวสุดท้ายที่พิมพ์

CTRL+ W- ลบคำสุดท้ายที่พิมพ์

CTRL+ U- ลบบรรทัดสุดท้ายที่พิมพ์

CTRL+ R- ค้นหาข้อความจากประวัติ

CTRL+ D- สิ้นสุดการป้อนข้อความสำหรับโปรแกรม UNIX จำนวนมากรวมถึงเมลและการเขียน

บันทึก:

เมื่อเราลบโดยใช้CTRL+ WหรือCTRL+ Uเราจะทำการดำเนินการ (แก้ไข) "ตัด" (งัดนิ้วเข้า) (ลบและเก็บไว้ในบัฟเฟอร์ / คลิปบอร์ด) ในการวาง (งัดออก) สตริงในบัฟเฟอร์ / คลิปบอร์ดใช้+CTRLY


7
ctrl-r จริงค้นหาข้อความจากประวัติ
Eric Carvalho

@EricCarvalho คุณพูดถูก การลบตัวเลือกนั้นออกจากคำตอบ
devav2

2
นี่คือรหัสควบคุม UNIX ทั่วไป เทอร์มินัลอูบุนตูดีฟอลต์คือ bash-based ซึ่งแตกต่างกัน
OrangeDog

Ctrl-U ลบจากเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัด ฉันมักจะใช้มันโดยการวางเคอร์เซอร์ก่อนที่อาร์กิวเมนต์จะไปยังคำสั่งจากประวัติ ด้วยวิธีนี้ฉันสามารถพิมพ์คำสั่งใหม่โดยใช้อาร์กิวเมนต์เดียวกัน - เช่นการเปลี่ยนไฟล์ให้เป็นไฟล์ kate น้อยลงดังนั้นฉันจึงสามารถแก้ไขไฟล์ได้หลังจากที่ฉันดูที่มันเพื่อดูว่ามีการแก้ไขใด ๆ ที่จำเป็นหรือไม่
Joe

1
@ OrangeDog - สิ่งเหล่านี้ใช้ได้ - ฉันใช้ทั้งหมดนี้ในเทอร์มินัลทุบตี bash-bashed ของ Ubuntu ยกเว้น CTR- \ one
belacqua

61

ฉันมักจะใช้+Alt Backspaceหากคุณกำลังใช้bashนี้จะช่วยให้คุณลบจนกว่าอักขระพิเศษก่อนหน้า ( /, ;, ฯลฯ ) หากคุณใช้zshงานมันจะลบเครื่องหมายสแลชและเครื่องหมายอัฒภาคด้วย มันเร็วกว่าการกดปุ่มBackspaceมาก

ในbashนี้จะแตกต่างจากCtrl+ wในแง่ที่ว่าCtrl+ wลบคำก่อนหน้านี้ที่ wheres Alt+ Backspaceลบจนกว่าจะพบตัวอักษรพิเศษก่อนหน้านี้ ในการzshผสมคีย์ทั้งสองทำสิ่งเดียวกัน


8
Ctrl + W ทำสิ่งเดียวกัน
hytromo

จะไม่ทำงานกับเทอร์มินัลเช่น rxvt
sqram

1
@lyrae สำหรับฉันมันทำงานได้อย่างสมบูรณ์แบบใน rxvt แม้ว่าจะไม่ได้อยู่ใน xterm และใช้งานได้ก็ต่อเมื่อset -o emacsมีการตั้งค่าไว้
มาร์โก

ฉันจะใช้เช่นเดียวกับALT+Backspace CTRL+Cใช้งานได้กับ linux ใด ๆ :)
tftd

@hakermania: ไม่ต่างกัน Ctrl + W ลบคำและ Alt + Backspace ลบจนตัวอักษรพิเศษก่อนหน้า ( /, ;`` ฯลฯ )
jobin

35

นี่คือรายการของแป้นพิมพ์ลัดที่สามารถใช้กับbashเชลล์ได้

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L    Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Lets you search through previously used commands
Ctrl + C    Kill whatever you are running or start a new prompt
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab         Auto-complete files and folder names

สิ่งที่คุณต้องการทำคือทำได้ทั้งโดยCtrl+ CหรือCtrl+ Uที่ท้ายบรรทัด


นี่คือรายการที่สมบูรณ์แบบที่สุดแม้ว่าคำตอบที่ดีที่สุดคือCtrl+Cหรือ ( Ctrl+E Ctrl+U)
New Alexandria

มีจำนวนเท่าใดในรายการที่สามารถใช้ได้กับ tcsh ซึ่งฉันสนใจ
TCSGrad

@ shan23 อ่านส่วน "คำสั่ง Editor" ของหรือการใช้งานman tcsh bindkey -lดูเหมือนว่าจะแตกต่างกันมาก
OrangeDog

โปรดทราบว่าสิ่งเหล่านี้บางอย่างจะล้มเหลวหากคุณใช้การผูก vi สำหรับ Readline ของ bash (หรือเชลล์อื่น) สิ่งเหล่านี้ส่วนใหญ่ควรใช้กับ tcsh เช่นกัน ทุบตีก่อนวันเหล่านี้ bash ยังรวมเอาช็อตคัตประวัติศาสตร์ที่ดีมากมายจาก csh / tcsh
belacqua

25

Alt+ #(เช่นAlt+ Shift+ 3) จะแสดงความคิดเห็นคำสั่งปัจจุบันและดำเนินการต่อในบรรทัดถัดไป

ตัวอย่างเช่นถ้าคุณพิมพ์t, e, s, t, Alt+ #คุณจะได้รับ:

you@computer$ #test
you@computer$ 

หากคุณต้องการที่จะได้รับคำสั่งเก่าของคุณกลับมาคุณสามารถกดปุ่มลูกศรขึ้นและลบตัวอักษรกัญชา ( Up, Home, DeleteหรือUp, Ctrl+ A, Delete)

ฉันคิดว่ามันเป็นคุณสมบัติของGNU Readlineเนื่องจากทำงานใน Bash, Python และ MySQL


22

Ctrl+ C- นอกเหนือจากการขัดจังหวะการเรียกใช้คำสั่งอาจใช้เพื่อ "ขัดจังหวะ" อินพุตบรรทัดคำสั่งของคุณเช่นกัน

ตรงกันข้ามกับ Ctrl+ Uคุณจะยังคงเห็นสิ่งที่คุณพิมพ์ แต่เคอร์เซอร์ของคุณจะข้ามไปที่บรรทัดใหม่และคุณจะได้รับพรอมต์บรรทัดคำสั่งที่ว่างเปล่า


4
ฉันชอบสิ่งนี้เพราะหน่วยความจำของกล้ามเนื้อและคุณยังสามารถคัดลอก / วางสิ่งที่สำคัญเนื่องจากบรรทัดคำสั่งที่ถูกยกเลิกอยู่ที่นั่น
ish

8

Bash readlineทางลัดCtrl+ X+ Eมีประโยชน์มากแน่นอนเมื่อคุณทำงานกับบรรทัดคำสั่ง หากคุณอยู่ในกระบวนการป้อนคำสั่งแบบยาวและตัดสินใจว่าคุณต้องการเปิดในตัวแก้ไขข้อความเริ่มต้นแทนสิ่งที่คุณต้องทำคือใช้ทางลัด

ทำให้การใช้ทุบตีของห้องสมุดและทางลัดนี้โดยเฉพาะที่เรียกว่าreadline edit-and-execute-commandคุณสามารถตั้งค่าแก้ไขเริ่มต้นของคุณโดยการวางexport EDITOR="/usr/bin/vi"ในหรือ~/.bashrc~/.bash_aliases

เข้าbind -Pสู่เพื่อดูreadlineการเชื่อมโยงปัจจุบันของคุณและอ้างถึงman readlineหรือmanpages Ubuntu ออนไลน์สำหรับข้อมูลเพิ่มเติม


7

ฉันยังใช้Esc+ Backspaceเพื่อลบอักขระก่อนหน้าทั้งหมดจนกว่าจะมีอักขระพิเศษ นี่คือเดียวกัน+Alt Backspaceมีประโยชน์ถ้าคุณเพิ่งลบคำไม่กี่คำในแต่ละครั้ง


3

สำหรับviการผูกกุญแจ

เมื่อใช้viแผนที่สำคัญเช่นเดียวbashกับset -o viหรือzshด้วยbindkey -v:

โหมดแทรก

มันเป็นเพียงการกดแป้นเดียวกับในโหมดเริ่มต้น / emacs:

Ctrl+U

การลบแบบฟอร์มตำแหน่งปัจจุบันถึงจุดเริ่มต้นของบรรทัด ดังนั้นมันจะลบทั้งบรรทัดหากเคอร์เซอร์อยู่ท้ายสุด

โหมดปกติ

มีหลายวิธีในการลบบรรทัดในการกดแป้นสองครั้ง:

ลบ linewise ddด้วยจำนวนเริ่มต้นของหนึ่งบรรทัด:

dd

ซึ่งเป็นปุ่มที่สัมผัสได้ง่ายที่สุด

อีกวิธีคือ: ไปที่จุดเริ่มต้นของบรรทัดด้วย^และลบไปที่ท้ายบรรทัดด้วยD:

^D

ทั้งสองนี้ลบทั้งบรรทัดไม่เพียง แต่ทางซ้ายเช่นCtrl+ Uในโหมดแทรกหรือตัวแปรแปรปรวน

หากคุณอยู่ท้ายบรรทัดดังนั้นคุณไม่จำเป็นต้องลบสิ่งใด ๆ ไปทางขวาสิ่งนี้จะทำดังนี้:

ลบจากที่นี่dเพื่อเริ่มต้นบรรทัด^:

d^

คุณสามารถใช้สิ่งเหล่านี้ทั้งหมดจากโหมดแทรกคุณต้องหลบหนีตามปกติก่อนเพื่อเข้าสู่โหมดปกติ ตัวอย่างเช่นในการลบทั้งบรรทัดออกจากโหมดแทรกให้ใช้:

Escdd

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