การรวมคำสั่งบนเทอร์มินัลบน Mac OS X


18

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

sudo touch .htaccess
sudo chmod 766 .htaccess

ชื่นชมมาก

คำตอบ:


31

ใช้ '&&' เพื่อเรียกใช้คำสั่งที่สองแบบมีเงื่อนไขหากคำสั่งแรกสำเร็จ

sudo touch .htaccess && sudo chmod 766 .htaccess


2
ฉันชอบโซลูชันนี้ด้วยเหตุผลสองประการ: 1. &&โดยทั่วไปจะดีกว่า;เพื่อหยุดถ้าคำสั่งแรกล้มเหลว 2. โดยทั่วไปจะดีกว่าเฉพาะการเรียกใช้โปรแกรมเฉพาะที่จำเป็นด้วยsudoแทนที่จะพยายามรวมพวกเขาเข้าด้วยกันเป็นการsudoเรียกใช้ครั้งเดียวรหัสเพิ่มเติมพร้อมสิทธิ์ยกระดับเกินความจำเป็น
Chris หน้า

จะทำอย่างไรถ้าฉันต้องการทำscp admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com:file3และฉันได้ตั้งรหัสผ่านในคีย์ SSH ของฉันมันจะขอรหัสผ่านตลอดเวลามีวิธีรวมกันหรือไม่?
Akshay Khale

2

ไม่มันไม่ใช่.

สิ่งเดียวที่คุณสามารถทำให้คุณสามารถรวมสองคำสั่งเหล่านี้ภายในหนึ่งsudo:

sudo sh -c 'touch .htaccess && chmod 766 .htaccess'

โซลูชันอื่น (ไม่รวมสายภายนอกหนึ่งเดียว แต่มีสองคำสั่ง)

sudo sh -c 'umask 011 && touch .htaccess'

1
คำแนะนำที่ดี แต่ผมจะแก้ไขเหล่านี้เพื่อใช้&&แทน;แม้ว่า นอกจากนี้โดยทั่วไปแล้วฉันจะใช้สองsudoคำสั่งเพราะ overkill และเสี่ยงกว่าในการรันเชลล์ทั้งชุดด้วยสิทธิ์ยกระดับแทนที่จะเป็นโปรแกรมที่แน่นอนที่จำเป็นต้องรันด้วย (ในกรณีนี้ touch และ chmod)
Chris หน้า

ใช่คุณพูดถูกจะดีกว่า
อิกอร์ชูบิน

1

อัฒภาคจะช่วยให้คุณพอดีหลายคำสั่งในบรรทัดเดียวเช่นนี้

sudo touch .htaccess; sudo chmod 766 .htaccess


1
นั่นเป็นข้อเสนอแนะที่ดีแม้ว่าจะเป็นความคิดที่ดีที่จะใช้เป็นนิสัยในการใช้&&แทนการ;รันคำสั่งแบบพึ่งพาซึ่งกันและกันเพื่อให้หยุดถ้าคำสั่งล้มเหลว
Chris หน้า

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