รหัสของฉันเพื่อสร้างสคริปต์ที่ปฏิบัติการได้
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
รหัสของฉันเพื่อสร้างสคริปต์ที่ปฏิบัติการได้
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
คำตอบ:
คุณสามารถออกจากทั้งคำสั่งและไม่มีความจำเป็นต้องใช้touch
sudo
หากต้องการย่อบรรทัดคำสั่งให้สั้นลงคุณสามารถใช้bash
การขยายประวัติเพื่อบันทึกชื่อไฟล์ในครั้งที่สองและเว้นช่องว่างที่ไม่จำเป็น:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
ขยายประวัติศาสตร์แทนที่ด้วยคำที่สี่จากบรรทัดคำสั่งในปัจจุบันซึ่งในกรณีของคุณเป็นชื่อไฟล์!#:3
script.sh
แน่นอนว่าต้องมีการปรับเปลี่ยนในกรณีที่คุณแก้ไขคำสั่งแรกเช่น:
>script.sh echo "echo 'Hello World'"&&chmod +x !#:1
โปรดทราบว่าสคริปต์ที่ถูกต้องความต้องการshebang :
>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1
หากคุณต้องการคำสั่งกลุ่มคำสั่งนี้บ่อยขึ้นฉันขอแนะนำให้กำหนดฟังก์ชั่นด้วยวิธีนี้คุณเพียงแค่ต้องพิมพ์ชื่อฟังก์ชั่น วิธีที่ปรับเปลี่ยนได้ในทำนองเดียวกัน - ยาวกว่า - คือการใช้ตัวแปรที่เก็บชื่อไฟล์:
f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f
install
คำสั่ง (ส่วนหนึ่งของ GNU coreutils พร้อมกับcp
, mv
, rm
ฯลฯ ) สามารถคัดลอกไฟล์ในขณะที่ยังมีการตั้งค่าความเป็นเจ้าของและการอนุญาตและการสร้างไดเรกทอรีผู้ปกครองได้ตามความจำเป็น โดยค่าเริ่มต้นมันจะทำให้ไฟล์ใหม่ที่ปฏิบัติการได้ ไม่เข้าใจ ' -
' แต่/dev/stdin
สามารถใช้แทน:
install /dev/stdin script.sh <<< "echo Hello World"
ด้านบนใช้สตริง ' here here ' เพื่อจัดเตรียมข้อความบน stdin ซึ่งสั้นกว่าการไพพ์เล็กน้อยข้อโต้แย้งที่echo
ไม่จำเป็นต้องมีการอ้างอิงถ้าไม่มีอักขระที่มีความหมายพิเศษ
install <(echo echo Hello World) script.sh
ฉันชอบที่จะใช้cat
สำหรับงานเช่นนี้:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'
Enter
Ctrl+D
sudo
น้อยที่สุด การติดนิสัยการขว้างปาไปรอบ ๆ อาจเป็นอันตรายได้ ในกรณีนี้คุณเป็นเจ้าของสคริปต์ที่คุณสร้างขึ้นเพื่อให้คุณสามารถทำสิ่งที่คุณพอใจได้ด้วยการอนุญาตไม่จำเป็นต้องใช้ sudo