Saya tahu kita bisa menggunakan format di bawah ini untuk mengarahkan output layar ke file:
$ your_program > /tmp/output.txt
Namun ketika saya menggunakan perintah di bawah ini, tertulis "-bash: /home/user/errors.txt: Izin ditolak"
sudo tail /var/log/apache2/error.log > ~/errors.txt
Bolehkah saya tahu cara membuat output ini berfungsi? The ~ / errors.txt tidak ada. Apakah saya harus membuat file txt ini terlebih dahulu sebelum saya menggunakan perintah redirect?
permissions
sudo
io-redirection
output
Xianlin
sumber
sumber
echo hi > ~/errors.txt
? Apakah/home/user
direktori home Anda yang benar (atau apakah bash entah bagaimana bingung tentang di mana direktori home Anda)?user
pengguna yang menjalankan perintah?sudo
.sudo
tidak memungkinkan pengalihan. terlalu banyak cara bagi orang untuk dapat menggunakannya untuk melakukan hal-hal nakal yang tidak tercakup dalamsudoers.conf
file. Sebagai alternatif, Anda bisa menjalankansudo bash -c "tail /var/log/apache2/error.log > ~/errors.txt"
untuk mengikis akhir kesalahan.log ke file di dir rumah Anda.Jawaban:
Di belakang pipa, sudo tidak berfungsi. Saya tidak tahu mengapa Anda tidak bisa menulis ke rumah - mungkin file tersebut milik root?
Mungkin Anda membutuhkan pengguna lain di belakang pipa. Yang pasti, Anda tidak perlu file yang sudah ada sebelumnya.
sumber
Saat Anda menulis
sudo somecommand > ~/errors.txt
, shell yang memanggilsudo
(dan berjalan seperti Anda) adalah yang melakukan pengalihan dan pembukaan~/errors.txt
. Lihat Mengarahkan stdout ke file yang Anda tidak memiliki izin menulis . Biasanya masalah dalam hal ini adalah Anda ingin root untuk menulis ke file; lihat pertanyaan terkait untuk cara melakukan ini.Di sini, aneh bahwa Anda tidak dapat menulis ke file di direktori home Anda. Kemungkinannya adalah sebelumnya Anda menyimpan beberapa output sebagai root
/home/user/errors.txt
, dan file itu sekarang ada dan menjadi milik root. Hapus file (Anda dapat melakukannya selama Anda memiliki izin menulis/home/user
, dan kemudian Anda akan dapat membuatnya sebagai pengguna Anda.Jika file tersebut benar-benar tidak ada, maka Anda tidak memiliki izin menulis di direktori home Anda. Meskipun secara teknis memungkinkan, dan sebenarnya sesekali bermanfaat bagi beberapa pengguna terbatas, ini sangat tidak biasa.
sumber