Terkadang saat mengedit file dengan akses root di Linux, kita sering lupa menambahkan perintah sudo, dan kita baru menyadarinya ketika hendak menyimpan perubahan file tersebut.

Ilustrasi: Vim + root
Ilustrasi: Vim + root

Misalnya, saat mengedit file resolv.conf,

vim /etc/resolv.conf
Isi file resolv.conf
Isi file resolv.conf

Simpan perubahan dengan perintah :w

Read only file.
Read only file.

Error di atas menandakan bahwa kita tidak memiliki akses untuk melakukan perubahan pada file tersebut (karena tidak menambahkan perintah sudo saat membuka file).


Solusi

Untungnya Vim memiliki fitur untuk menjalankan perintah shell, sehingga kita tidak perlu keluar dari editor (:q) dan membuka ulang file tersebut dengan akses sudo .

Gunakan perintah berikut untuk menyimpan perubahan,

:w !sudo tee %

Setelah eksekusi, akan muncul prompt password sudo di terminal,

Perintah :w !sudo tee % untuk menyimpan file.
Perintah :w !sudo tee % untuk menyimpan file.

Penjelasan singkatnya adalah sebagai berikut:

:w — Perintah di Vim untuk menyimpan file.

! — Perintah untuk menjalankan shell dari dalam Vim.

sudo — Menjalankan perintah berikutnya dengan akses root.

tee — Perintah Linux untuk menulis data dari stdin (standard input) ke file. Dalam hal ini digunakan untuk menimpa file.

% — Di Vim, tanda % adalah placeholder dari nama file yang sedang dibuka.


Penutup

Hal ini terlihat sederhana, namun sangat bermanfaat. Bayangkan saja jika konfigurasi yang kita lakukan cukup panjang dan kita harus keluar dari editor tanpa boleh menyimpannya, hanya untuk membuka ulang file dengan akses sudo. 😩

Silahkan gunakan trik ini jika anda terjebak pada situasi seperti ini.

Sekian, semoga bermanfaat.

CMIIW.