วิธีการรวมหลายคำสั่งใน terminal?


25

ฉันมีคำสั่งดังต่อไปนี้

cd import
zcat urls1.sql.gz | mysql -u root -p urls
cd /var/www/project1/
nano 1.php

ณ ตอนนี้ฉันกำลังดำเนินการทีละหนึ่ง

มีวิธีรวมคำสั่งเหล่านั้นในหนึ่งบรรทัดหรือไม่?


3
คุณทำการวิจัยสำหรับคำถามนี้หรือไม่?
don.joey

นั่นไม่ใช่คำถามของฉัน เพียงครึ่งนาทีของ Google ก็จะให้คำตอบแก่คุณ ดังนั้นฉันสงสัยในสิ่งที่คุณค้นพบแล้วถ้ามีอะไร
don.joey

อะไรทำให้คุณคิดว่าฉันลงคะแนนคำถามของคุณ ฉันจะเพิกเฉยต่อความโกรธของคุณ ในฐานะที่เป็นหมายเหตุด้านข้างคำถาม"อันไหนดีกว่า: การใช้;หรือ&&รันคำสั่งหลายคำสั่งในหนึ่งบรรทัด"นั้นดีกว่ามากมีการวิจัยมากกว่าและน่าจะดึงดูดผู้อัปโหลดจำนวนมาก
don.joey

มีความแตกต่างจากทั่วไปมากขึ้นของคำถามนี้สามารถใช้ได้ที่เป็นaskubuntu.com/questions/334994/... มันจัดการกับคำถามที่ฉันพูดถึงในความคิดเห็นก่อนหน้า
don.joey

ไม่ต้องห่วง Giri สาระสำคัญของคำถามน่าสนใจ ฉันใช้ความพยายามในการสร้างตัวแปรทั่วไป
don.joey

คำตอบ:


33

ใช่คั่นด้วยเครื่องหมายอัฒภาค:

dir; ls -l

Lanugauges / shells ส่วนใหญ่ใช้เซมิโคลอนเพื่อบ่งบอกถึงการสิ้นสุดของคำสั่งและเพื่อเริ่มต้นใหม่ขณะประเมินจากซ้ายไปขวา

หรือตามที่ @RobieBasak แนะนำให้ใช้ && แทน เพื่อป้องกันการเกิดอุบัติเหตุการเข้ารหัส

dir && ls -l

23
มันเป็นความคิดที่ดีที่จะใช้แทน&& ;สิ่งนี้ทำให้มั่นใจได้ว่าคำสั่งที่ตามมาจะดำเนินการก็ต่อเมื่อคำสั่งก่อนหน้านี้ไม่ได้ล้มเหลว นี่เป็นการหลีกเลี่ยงผลกระทบที่น่าอึดอัดใจบางอย่าง ตัวอย่างเช่น: cd /somewhere_else; rm -Rf *สามารถทำสิ่งที่น่าเสียหายได้หาก/somewhere_elseไม่มีอยู่หรือคุณสะกดผิด cd /somewhere_else && rm -Rf *ปกป้องคุณจากสิ่งนี้
Robie Basak

2
โซลูชัน '&&' ดีมากควรเป็นคำแนะนำแรกในคำตอบนี้ โปรดแก้ไขคำตอบของคุณและส่งเสริมคำตอบที่ดีกว่าให้เป็นที่หนึ่ง
Kerem Baydoğan

3

สิ่งนี้แสดงให้เห็นเพิ่มเติม:

  1. A; B - เรียกใช้ A และ B โดยไม่คำนึงถึงความสำเร็จหรือความล้มเหลวของ A

  2. A&& - รัน B เฉพาะเมื่อ A ประสบความสำเร็จ

  3. A | | B - รัน B เฉพาะในกรณีที่ A ล้มเหลว

แหล่งที่มา: https://www.howtogeek.com/269509/how-to-run-two-or-more-terminal-commands-at-once-in-linux/

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