ฉันจะพิมพ์บรรทัดถัดไปในเทอร์มินัลได้อย่างไร


16

ฉันใช้ Ubuntu 12.10 และต้องการเรียกใช้ชุดคำสั่งในเทอร์มินัลและจากสิ่งที่ฉันเห็นในคำแนะนำคำสั่งเหล่านี้จะเริ่มต้นในบรรทัดใหม่ ฉันไม่รู้จะทำยังไงใน terminal ฉันหาคีย์ที่จะกดเพื่อทำ carriage-return ไปยังบรรทัดถัดไปไม่ได้


4
คุณสามารถแยกคำสั่งโดยใช้เซมิโคลอน ";" เช่น cd home; การทดสอบ mkdir; ls -la
LnxSlck

9
@LnxSlck: แม้ว่าก็มักจะดีกว่าที่จะแยกคำสั่งกับแทน&& ;วิธีนี้หากคำสั่งใดคำสั่งหนึ่งล้มเหลวคำสั่งที่เหลือจะไม่ถูกเรียกใช้ ดังนั้นโดยใช้ตัวอย่างของคุณหากhomeไม่มีอยู่คุณจะไม่สร้างtestไดเรกทอรีในไดเรกทอรีปัจจุบันโดยไม่ตั้งใจ
hammar

คำตอบ:


16

คำสั่งที่คุณเห็นในแต่ละบรรทัดจะถูกดำเนินการทีละรายการ

ดังนั้นหลังจากป้อนบรรทัดกด Enter เพื่อดำเนินการแล้วดำเนินการคำสั่งต่อไป

ตัวอย่าง:

sudo apt-get update
sudo apt-get upgrade

คำสั่งเหล่านี้มีสองคำสั่งที่จะดำเนินการทีละคำ

ในการดำเนินการในครั้งเดียวมันจะเป็นเหมือนsudo apt-get update && sudo apt-get upgrade(มีวิธีอื่นด้วย) แต่สิ่งเหล่านี้ไม่ต้องการโดยทั่วไป ดังนั้นไม่ต้องกังวล พิมพ์หนึ่งบรรทัดแล้วกด Enter มันจะทำงาน


ขอบคุณมากสำหรับคำแนะนำของคุณฉันหวังว่าฉันจะรู้เรื่องนี้ก่อนหน้านี้ !!! ถึงกระนั้นเรายังมีชีวิตอยู่และเรียนรู้ :-)
Debbie Poole

4
@ user113090 หาก Web-E ตอบคำถามของคุณอย่าลืมทำเครื่องหมายคำตอบของเขาว่าเป็นคำตอบที่ยอมรับแล้ว
คณบดี

12

ในขณะที่Web-Eอธิบายวิธีที่ตรงที่สุดในการทำสิ่งที่คุณต้องการด้วยสองคำสั่งที่แตกต่างกันฉันคิดว่าฉันแสดงให้เห็นว่ามีหลายวิธีในการดำเนินการหลายคำสั่งหรือดำเนินการคำสั่งต่อไปอีกบรรทัดหนึ่งโดยไม่ต้องดำเนินการทันที

คำสั่งยาวอย่างต่อเนื่อง:

1) วิธีที่ใช้กันมากที่สุดในการสร้างคำสั่งยาวหนึ่งคำสั่งคือป้อนคำสั่งของคุณจากนั้นใช้แบ็กสแลช\กดย้อนกลับจากนั้น Bash จะให้พรอมต์อื่นให้คุณแทนการรันคำสั่ง พรอมต์รองนี้เรียกว่า PS2 และรอการป้อนข้อมูลของคุณ:

find /home/mike/Downloads -type f -iname '*.jpg' \
> 

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

คุณสามารถยกเลิกพรอมต์นี้กับรองปกติ+CtrlC

2) Bash จดจำคำสั่งบางคำเช่น for loops (for i in .... ) และการแจ้งจะปรากฏขึ้นทันที เช่นเดียวกับถ้าคุณพลาดเครื่องหมายคำพูดออกจากคำสั่ง:

apt-cache search 'libgimp*
> 

คำสั่งหลายรายการ :

3) ในฐานะที่เป็นLxnslckคุณสามารถแยกคำสั่งด้วยเครื่องหมายอัฒภาค:

which vlc; whereis vlc

/usr/bin/vlc
vlc: /usr/bin/vlc /etc/vlc /usr/lib/vlc /usr/bin/X11/vlc /usr/share/vlc /usr/share/man/man1/vlc.1.gz

4) หรือคุณสามารถใช้เครื่องหมายและ&&เพื่อเข้าร่วมสองคำสั่ง:

./configure && make

4

คุณสามารถกดปุ่ม ENTER หลังจากแต่ละบรรทัดและหากคำสั่งไม่ถูกยกเลิก (เช่นคำสั่ง mutiline เช่นforลูป) เทอร์มินัลจะรอให้คุณป้อนคำสั่งที่เหลือ หากคำสั่งถูกยกเลิกคำสั่งจะถูกดำเนินการและคุณป้อนคำสั่งถัดไปหลังจากนั้นจะไม่มีปัญหา

หากคุณกำลังคัดลอกคำสั่งจากบทช่วยสอนคุณสามารถคัดลอกกลุ่มคำสั่งทั้งหมดแล้ววางลงในเทอร์มินัลได้โดยตรงและจะใช้งานได้


1

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

xrandr --newmode "1280x960_80.00" 139.25  1280 1368 1504 1728  960 963 967 1008 -hsync +vsync
xrandr --verbose --addmode VGA1 "1280x960_80.00"
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 1280x512 --rotate normal --output DP1 --off --output VGA1 --mode "1280x960_80.00" --pos 0x0 --rotate normal
sleep 3
xfce4-panel -r

ไม่มีอะไรที่คุณต้องการพิมพ์อีกครั้ง แต่ฉันต้องการลำดับของคำสั่งนี้บ่อยครั้งมาก ดังนั้นมันจะไปในไฟล์ที่เรียกว่า1280x980-2head.shคุณสามารถสร้างมันขึ้นมาด้วยเอดิเตอร์ที่คุณเลือก เพื่อให้ว่าสคริปต์ปฏิบัติการที่คุณใส่บรรทัด#!/bin/bashในด้านหน้าของทุกอย่าง (กshebang ) chmod +x 1280x980-2head.shและตั้งค่าการดำเนินการอนุญาต: จากนั้นเพียงพิมพ์./128<tab>(เติมข้อความอัตโนมัติ) และ<enter>ดำเนินการคำสั่งทั้งหมด


0

คุณสามารถใส่ทุกอย่างไว้ในวงเล็บ ตัวอย่างเช่น:

(sudo add-apt-repository ppa:foo/bar
sudo apt-get update
sudo apt-get install my-package)

คำสั่งจะถูกดำเนินการหนึ่งหลังจากที่อื่น ๆ ใน sub-shell

หากคุณไม่ต้องการให้เรียกใช้งานในเชลล์ย่อยคุณสามารถใส่เครื่องหมายอัฒภาคระหว่างคำสั่งกับอีกคำสั่งหนึ่ง ตัวอย่างเช่น:

sudo add-apt-repository ppa:foo/bar; sudo apt-get update; sudo apt-get install my-package

หากคุณใส่ "&&" ระหว่างแต่ละคำสั่งคำสั่งที่ตามหลัง "&&" จะถูกดำเนินการเฉพาะเมื่อคำสั่งก่อนหน้านี้เสร็จสิ้นโดยไม่มีข้อผิดพลาดดังนั้นคุณไม่ต้องใช้คำสั่งเพื่อเชื่อมคำสั่ง ใช้เครื่องหมายอัฒภาคแทน ในทางกลับกันถ้าคุณใส่ "||" คำสั่งต่อไปนี้จะถูกดำเนินการหากคำสั่งแรกออกจากข้อผิดพลาด ตัวอย่าง: (คำสั่ง "ซึ่ง" ตรวจสอบว่ามีโปรแกรมอยู่หรือไม่และไม่ออกจากข้อผิดพลาด)

which apt-get && echo "No error" || echo "Error"    # Will print "No error"
which jdhdsd && echo "No error" || echo "Error"  # Will print "Error"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.