Saya seorang pemula dalam skrip bash. Saya ingin membuat skrip bash untuk menginstal menginstal dan mengkonfigurasi barang-barang di kotak linux saya dengan cara otomatis.
Misalkan saya ingin mengedit
/etc/yum.repos.d/epel.repo
oleh skrip bash
Yang ingin saya lakukan adalah sebagai berikut
- Buka file /etc/yum.repos.d/epel.repo
- Temukan bagian [epel]
- Tambahkan prioritas baris = 10 setelah baris diaktifkan = 1 di bagian epel
Untuk bagian pertama saya menambahkan
yum install nano
nano /etc/yum.repos.d/epel.repo
Pertanyaan saya adalah bagaimana melakukan bagian 2 dan 3 dengan skrip bash menggunakan nano (jika mungkin, kalau-kalau tidak mungkin tunjukkan dengan sed)
Juga di beberapa titik saya harus memodifikasi variabel dalam file Untuk misalnya
- aktifkan = 0 untuk mengaktifkan = 1
- Menguji = "1" ke Menguji = "0"
- Tambahkan teks dalam satu baris. functions = to function = "text1", "text2"
- Tambahkan beberapa teks ke file dan simpan (dengan nano)
Saya tahu ini menuntut tetapi saya harus membuat ini untuk seorang teman yang noob di manajemen server. Sayangnya saya tidak punya waktu untuk mempelajari skrip bash dari awal karena ujian saya sudah dekat. Saya akan menggunakan contoh Anda untuk menulis skrip.
Guys terima kasih untuk semua balasan saya telah berhasil melakukan sebagian besar skrip bash
Namun saya telah masalah lain Mari kira saya ingin memodifikasi nginx.conf menggunakan sed Kami akan berurusan dengan worker_processes
Sekarang saya ingin menggunakan sed melakukan 1.Find mengikuti terjadinya PERTAMA dari worker_processes
di conf itu dan mengganti teks denganworker_processes 4;
Catatan Khusus Di Sini: Ini hanya sebuah contoh. Ini mungkin terjadi bahwa conf berisi pekerja_proses 1; . Ini bagian yang sulit. Saya ingin perintah sed yang menemukan kasus pertandingan WHOLE PERTAMA dari kata worker_processes , hapus baris teks di mana kata itu ditemukan dan dan tempel di worker_processes 4;
sana kemudian simpan file. Ini adalah metode yang paling dapat diandalkan saat mengedit file (tanpa risiko melanggar conf
Satu saran terakhir saya menggunakan sed - i 's / enabled = 0 / enabled = 1 / g' /etc/yum.repos.d/remi.repo untuk mengubah diaktifkan = 0 menjadi diaktifkan = 1 di bawah bagian [remi] di remi .repo .Namun saya punya perasaan bahwa itu dapat memodifikasi semua diaktifkan = 0 dalam file itu, yang akan mendatangkan server. Bisakah ada yang menyarankan kode yang lebih baik.
Hal lain yang saya tidak yakin: PI ingin mengedit file yang memiliki ini sebagai Pengujian Teks = "0" (Ya itu memiliki tanda kutip dan saya harus menyimpannya) Itu harus dimodifikasi dari Pengujian = "0" untuk Pengujian = " 1 "(dengan kutipan)
Juga saya perlu menambahkan beberapa teks dengan tanda kutip di akhir file dengan sed Seperti "Terima kasih Quanta" (dengan kutipan) Untuk php Anda meletakkan \ dengan tanda kutip bergema, tidak tahu bagaimana hal itu dilakukan untuk bash
Hal lain yang
perlu saya modifikasi adalah baris dalam conf tetapi saya tidak ingat apa yang harus diganti seluruh teks
Suka mendengarkannya = sesuatu; , saya ingin memodifikasinya untuk mendengarkan = /tmp/php5-fpm.sock;
Jempol besar untuk kuanta
Terima kasih untuk dukungan kalian yang luar biasa
-i
bukan opsi standar untuksed
.ed
Namun, menawarkan cara yang sesuai standar untuk mengedit file dengan sintaksis yang sangat mirip dengan sed.Seperti kata ptman, Augeas dapat menyelamatkan Anda dari menggunakan
sed
/awk
:akan mengatur prioritas
epel
repositori ke 10. Jikapriority
kunci sudah ada, ia akan menetapkan nilainya, jika tidak maka akan menambahpriority
entri setelah entri terakhir di bagian tersebut.Hal yang sama berlaku untuk nilai-nilai lain yang mungkin ingin Anda ubah.
Jika Anda ingin mengubah beberapa nilai, Anda bahkan dapat menggunakan
augtool
sebagai juru bahasa:Jika Anda ingin menyimpannya di skrip bash Anda, Anda dapat menyalurkan perintah ke
augtool
:Lihat
man augtool
opsi lainnya.Ada beberapa keuntungan menggunakan Augeas vs
sed
/awk
:yum.repo
sintaks). Anda tidak akan mengambil risiko melanggar sintaksis file jika regex Anda salah;yum.repo
bagian, sehingga Anda tahu bahwa Anda mengedit bagian yang benar;sumber
Anda mungkin juga ingin memeriksa Augeas , alat untuk memodifikasi file konfigurasi secara terprogram. Ini sangat kuat dalam kombinasi dengan Puppet (sistem manajemen konfigurasi), tetapi juga dapat digunakan dengan sendirinya.
sumber