<,> Dan >> digunakan untuk pengalihan input / output untuk perintah - yang merupakan fitur yang disediakan oleh shell (misalnya, bash). Jadi, jika Anda mengetik perintah seperti sudo cat > /var/www/info.phpmaka shell yang menerima ini sebagai input mencoba untuk membuka file /var/www/info.phpdan menyediakan file itu sebagai output standar untuk sudoperintah. The sudoperintah bahkan tidak menyadari apakah outputnya akan konsol atau diarahkan ke file, karena ini diasuh oleh shell yang memanggil itu.
Jika shell yang Anda ketikkan perintah Anda adalah shell login Anda atau shell lain yang berjalan di terminal dengan id pengguna Anda, maka ia memiliki hak istimewa yang sama dengan id pengguna Anda - bukan milik root.
Jadi dalam kasus Anda, sedangkan perintah cat dieksekusi sebagai root, penyalinan outputnya /var/www/info.phpdiupayakan oleh shell yang berjalan sebagai pengguna normal, yang, seperti yang diharapkan, gagal.
Solusi untuk situasi seperti itu adalah menggunakan teeperintah:
sudo tee /var/www/info.php
Itu akan memiliki efek yang dimaksudkan menempatkan semua teks yang dimasukkan di konsol hingga ^ D ke dalam file yang ditentukan sebagai parameter.
Salah satu efek samping yang mungkin tidak diinginkan adalah itu teejuga akan menggemakan output ke stdout, jadi setelah Anda mengetik setiap baris dan tekan enter teeakan menampilkan salinannya kembali. Untuk menghindari ini, Anda dapat menggunakan varian berikut.
sudo tee /var/www/info.php > /dev/null
Rincian tentang teedapat diperoleh melalui info teedi terminal.