Saya baru menggunakan sed tetapi dengan cepat belajar menyukainya karena fleksibilitas umumnya dalam otomatisasi. Saya ingin menjalankan skrip dengan berbagai kontrol keamanan setiap kali saya menggunakan sistem baru, dan sebagian dari itu mengharuskan saya untuk mengunci GRUB. Saya ingin membuka opsi umum Ubuntu dari menu GRUB sehingga siapa pun dapat menggunakannya setelah itu tanpa kata sandi, sambil menjaga semua yang lain tetap terlindungi kata sandi.
yang sedang berkata, saya mencari untuk mencari file /boot/grub/grub.cfg untuk baris tertentu dan menambahkan –unrestricted ke opsi itu. ( Kami hanya menggunakan 16.04.03 sehingga semua sistem secara teoritis memiliki file yang sama saat diinstal )
Baris dalam file adalah:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {
Dan saya ingin itu terlihat seperti:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {
Saya tahu sed -i adalah untuk pengeditan di tempat dan s/ harus mencari. Tetapi di luar itu saya kehilangan sintaks di sini untuk membuatnya benar-benar melakukan apa yang kita butuhkan. Sejauh yang saya tahu, bahwa penempatan –tidak dibatasi diperlukan karena saya percaya akan lebih mudah jika kita tidak harus melakukan pencarian yang panjang, tetapi sekali lagi saya baru mengenal sed dan tidak yakin. Bisakah seseorang membantu saya dengan penyisipan sed ini? Sebaiknya jelaskan juga kepada saya mengapa sintaks yang berbeda sesuai dengan fungsinya, jadi saya tahu untuk masa depan.
Jawaban yang Diterima:
Ini perintahnya.
sed -i "s/--class os/--class os --unrestricted/" filename
Ini akan menggantikan baris dalam file tanpa memerlukan file temp, karena opsi -i.
Jika tidak masalah di mana di baris "–tidak dibatasi", ini mungkin lebih sederhana.
sed -i "s/'Ubuntu'/'Ubuntu' --unrestricted/" filename