Kode saya untuk membuat skrip yang dapat dieksekusi
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Kode saya untuk membuat skrip yang dapat dieksekusi
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Jawaban:
Anda dapat meninggalkan seluruh touch
perintah dan tidak perlu digunakan sudo
. Untuk mempersingkat baris perintah lebih lanjut, Anda dapat menggunakan bash
History Expansion untuk menyimpan nama file yang kedua kalinya, dan menghilangkan spasi yang tidak perlu:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
Ekspansi Sejarah menggantikan !#:3
dengan kata keempat dari baris perintah saat ini, yang dalam kasus Anda adalah nama file script.sh
. Tentu saja ini perlu disesuaikan jika Anda memodifikasi perintah pertama, misalnya:
>script.sh echo "echo 'Hello World'"&&chmod +x !#:1
Perhatikan bahwa skrip yang valid membutuhkan shebang :
>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1
Jika Anda perlu rantai perintah ini lebih sering saya sarankan mendefinisikan fungsi , dengan cara ini Anda hanya perlu mengetikkan nama fungsi. Cara yang serupa - meskipun lebih panjang - adalah penggunaan variabel yang menyimpan nama file:
f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f
Jika nama file Anda mengandung karakter khusus, jangan lupa mengutipnya dengan benar .
The install
perintah (bagian dari GNU coreutils bersama dengan cp
, mv
, rm
, dll) dapat menyalin file sementara juga pengaturan kepemilikan dan hak akses dan menciptakan direktori induk yang diperlukan. Secara default itu akan membuat file baru dapat dieksekusi. Itu tidak mengerti ' -
' tetapi /dev/stdin
dapat digunakan sebagai gantinya:
install /dev/stdin script.sh <<< "echo Hello World"
Di atas menggunakan 'di sini string ' untuk memberikan teks pada stdin, yang sedikit lebih pendek dari pipa itu. Argumen untuk echo
tidak perlu mengutip kecuali mereka mengandung karakter dengan makna khusus.
install <(echo echo Hello World) script.sh
Saya lebih suka menggunakan cat
untuk tugas-tugas seperti ini:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'
Enter
Ctrl+D
Anda juga bisa meninggalkan seluruh chmod dan menggunakan umask sebagai gantinya sebelum gema. Harus menghemat beberapa byte. Shebang adalah opsional selama Anda menggunakan perintah yang dipahami oleh setiap shell (terutama bourne dan C).
umask
pengaturan bit yang dapat dieksekusi secara default ...
sudo
sangat hemat. Memasuki kebiasaan membuangnya bisa berbahaya. Dalam hal ini Anda memiliki skrip yang Anda buat sehingga Anda dapat melakukan apa pun yang Anda inginkan dengan izin, tidak perlu sudo.