Aku ingin melakukan:
echo "something" >> /etc/config_file
Tapi, karena hanya pengguna root yang menulis izin untuk file ini, saya tidak bisa melakukan itu. Tetapi yang berikut ini juga tidak berhasil.
sudo echo "something" >> /etc/config_file
Apakah ada cara untuk menambahkan file dalam situasi itu tanpa harus membukanya terlebih dahulu dengan sudo
editor dan kemudian menambahkan konten baru dengan tangan?
linux
command-line
sudo
hsribei
sumber
sumber
ls
dengan jalur direktori menunjukkan file, tetapils
dengan pola file tidak?Jawaban:
Gunakan
tee -a
(atautee --append
) dengansudo
Jadi perintahmu menjadi
Keuntungan dari
tee
mengeksekusi Bash dengan izin administratif adalahsumber
tee
memiliki-a
bendera tambahan.echo "output" | sudo tee -a file > /dev/null
jika Anda ingin melewatkan output konsol.Pengalihan dijalankan di shell saat ini. Untuk melakukan pengalihan dengan privilege yang ditinggikan, Anda harus menjalankan shell itu sendiri dengan privilege yang ditinggikan:
sumber
Minta sudo membuat sub-shell:
Dalam contoh ini, sudo menjalankan "sh" dengan sisanya sebagai argumen.
(ini ditampilkan sebagai contoh di halaman sudo man)
sumber
Saya biasanya menggunakan dokumen shell DI SINI dengan sudo tee -a . Sesuatu di sepanjang garis:
sumber
Menurut pendapat saya, yang terbaik dalam hal ini adalah dd:
sumber
Mungkin ada masalah dengan sudo di sini dan pengarahan ulang. Gunakan tekseditor pilihan Anda sebagai gantinya untuk menambahkan baris.
Atau, Anda bisa mencoba su sebagai gantinya
sumber
su -c 'echo "JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile'
harus bekerja. karena tidak ada shell yang dapat berkembang secara keliru dalam arg untuk echo, kutip-tunggal perintah keseluruhan.Ini tidak akan berhasil jika Anda mencoba mengarahkan (menggunakan
>>
) output sudo. Apa yang benar-benar ingin Anda lakukan adalah mengarahkan ulang output dariecho
. Saya sarankan Anda cukup menggunakan editor favorit Anda dan menambahkan baris itu secara manual/etc/profile
. Ini memiliki manfaat tambahan yang dapat Anda periksa apakah/etc/profile
sudah disetelJAVA_HOME
.sumber
Gunakan ex -way:
dan ganti
FOO
dengan variabel Anda untuk ditambahkan.Di beberapa sistem (seperti OS X),
/etc/profile
file memiliki 444 izin, jadi jika Anda masih mendapatkan izin , periksa dan perbaiki izin terlebih dahulu:lalu coba lagi.
sumber