Cara menambahkan # Shebang di baris pertama file yang merupakan skrip otomatis dibuat oleh program lain


3

Saya mencari metode untuk menambahkan shebang #! / Bin / csh -f ke baris pertama file saya, yang sebenarnya dibuat oleh satu set program lain, karena skrip ini dibuat secara otomatis, ini harus dijalankan dari bash , ketika pengguna mengklik beberapa tombol di alat saya. Saya mencoba menggunakan sed tetapi tidak berhasil.

sed ' 1 s/.*/\#!/bin/csh -f/' filename.

dan awk

awk 'NR==1{printf "%s %s\n", $0, "#!/bin/csh -f"}' filename

kedua perintah ini kembali mengikuti

/bin/csh is not an event.

Tolong sarankan metode yang lebih baik.

Dan


mencoba melarikan diri ! karakter dalam upaya Anda? seperti dalam \! bukannya polos !
Xen2050

Terima kasih "Xen2050", saya mencoba saran Anda dan ini berfungsi dengan baik. sed '1 i \ # \! \ / bin \ / csh -f' nama file & gt; out.txt
StarCoder17

Saya akan melemparkannya dalam jawaban kalau begitu
Xen2050

Jawaban:


1

Coba lepas ! karakter, dengan menggunakan \! bukannya polos !, harus memberikan hasil yang lebih baik. Jadi cobalah:

sed '1 i\#\!\/bin\/csh -f' filename > out.txt

Jika Anda menempatkan -i dalam sed perintah Anda dapat memodifikasi file sebagai gantinya untuk melakukan pengalihan.
Hastur

1

Alternatif awk

awk 'BEGIN{print "#!/bin/csh -f"} {print}' filename > out.sh

awk 'NR==1{print "#!/bin/csh -f"};{print}' filename > out.sh 

Varian Xen2050 untuk memodifikasi file di dalam alih-alih mengarahkannya ke out.sh

 sed -i '1 i\#\!\/bin\/csh -f' filename
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.