Kode saya untuk membuat skrip yang dapat dieksekusi
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
command-line
scripts
Sham Fiorin
sumber
sumber
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.Jawaban:
Anda dapat meninggalkan seluruh
touch
perintah dan tidak perlu digunakansudo
. Untuk mempersingkat baris perintah lebih lanjut, Anda dapat menggunakanbash
History Expansion untuk menyimpan nama file yang kedua kalinya, dan menghilangkan spasi yang tidak perlu:Ekspansi Sejarah menggantikan
!#:3
dengan kata keempat dari baris perintah saat ini, yang dalam kasus Anda adalah nama filescript.sh
. Tentu saja ini perlu disesuaikan jika Anda memodifikasi perintah pertama, misalnya:Perhatikan bahwa skrip yang valid membutuhkan shebang :
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:
Jika nama file Anda mengandung karakter khusus, jangan lupa mengutipnya dengan benar .
sumber
The
install
perintah (bagian dari GNU coreutils bersama dengancp
,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: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.sumber
install <(echo echo Hello World) script.sh
Saya lebih suka menggunakan
cat
untuk tugas-tugas seperti ini:sumber
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).
sumber
umask
pengaturan bit yang dapat dieksekusi secara default ...