ฉันต้องการเขียนข้อความต่อไปนี้บนหนึ่งบรรทัดในเทอร์มินัลหรือหากมีวิธีที่สั้นกว่าในการสร้างไฟล์และตั้งค่าการอนุญาตจากนั้นโปรดแสดงความคิดเห็น
sudo touch .htaccess
sudo chmod 766 .htaccess
ชื่นชมมาก
ฉันต้องการเขียนข้อความต่อไปนี้บนหนึ่งบรรทัดในเทอร์มินัลหรือหากมีวิธีที่สั้นกว่าในการสร้างไฟล์และตั้งค่าการอนุญาตจากนั้นโปรดแสดงความคิดเห็น
sudo touch .htaccess
sudo chmod 766 .htaccess
ชื่นชมมาก
คำตอบ:
ใช้ '&&' เพื่อเรียกใช้คำสั่งที่สองแบบมีเงื่อนไขหากคำสั่งแรกสำเร็จ
sudo touch .htaccess && sudo chmod 766 .htaccess
scp admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com:file3
และฉันได้ตั้งรหัสผ่านในคีย์ SSH ของฉันมันจะขอรหัสผ่านตลอดเวลามีวิธีรวมกันหรือไม่?
ไม่มันไม่ใช่.
สิ่งเดียวที่คุณสามารถทำให้คุณสามารถรวมสองคำสั่งเหล่านี้ภายในหนึ่งsudo
:
sudo sh -c 'touch .htaccess && chmod 766 .htaccess'
โซลูชันอื่น (ไม่รวมสายภายนอกหนึ่งเดียว แต่มีสองคำสั่ง)
sudo sh -c 'umask 011 && touch .htaccess'
&&
แทน;
แม้ว่า นอกจากนี้โดยทั่วไปแล้วฉันจะใช้สองsudo
คำสั่งเพราะ overkill และเสี่ยงกว่าในการรันเชลล์ทั้งชุดด้วยสิทธิ์ยกระดับแทนที่จะเป็นโปรแกรมที่แน่นอนที่จำเป็นต้องรันด้วย (ในกรณีนี้ touch และ chmod)
อัฒภาคจะช่วยให้คุณพอดีหลายคำสั่งในบรรทัดเดียวเช่นนี้
sudo touch .htaccess; sudo chmod 766 .htaccess
&&
แทนการ;
รันคำสั่งแบบพึ่งพาซึ่งกันและกันเพื่อให้หยุดถ้าคำสั่งล้มเหลว
แยกคำสั่งด้วยเครื่องหมายอัฒภาค (;)
ตัวอย่าง
echo firstname; echo lastname;
&&
โดยทั่วไปจะดีกว่า;
เพื่อหยุดถ้าคำสั่งแรกล้มเหลว 2. โดยทั่วไปจะดีกว่าเฉพาะการเรียกใช้โปรแกรมเฉพาะที่จำเป็นด้วยsudo
แทนที่จะพยายามรวมพวกเขาเข้าด้วยกันเป็นการsudo
เรียกใช้ครั้งเดียวรหัสเพิ่มเติมพร้อมสิทธิ์ยกระดับเกินความจำเป็น