เขียนไฟล์เป็นกลุ่มผู้ใช้ super?


10

นี่เป็นปัญหาการใช้งานที่เกิดขึ้นกับฉันบ่อยครั้ง:

ฉันเปิดไฟล์ระบบแบบอ่านอย่างเดียวที่มีเสียงเรียกเข้าแม้กระทั่งแก้ไขเพราะฉันไม่ใส่ใจพอหรือเพราะเสียงในระบบมีการกำหนดค่าไม่ดี เมื่อการเปลี่ยนแปลงของฉันเสร็จสิ้นฉันก็ยังคงต้องเขียนมันในไฟล์ชั่วคราวหรือทำมันหายเพราะ: w! จะไม่ทำงาน

มีคำสั่ง vim (: W !!!) ที่อนุญาตให้คุณเขียนบัฟเฟอร์ปัจจุบันในฐานะผู้ใช้ระดับสูงหรือไม่? (กลุ่มจะขอรหัสผ่าน sudo หรือ su ของคุณตามธรรมชาติ)


คำถามที่เกี่ยวข้อง (ไม่ซ้ำกันค่อนข้างแน่นอน): superuser.com/questions/23428/vim-sudo-vim-bad-idea .. superuser.com/questions/106865/ … .. และจาก SO, stackoverflow.com/questions/1005 / …
ต้มตุ๋น quixote

1
SO เป็นคู่หูกันอย่างแน่นอนอย่างไรก็ตามคำถาม SU สองข้อนี้แก้ปัญหาแยกกันโดยใช้sudoeditคำสั่ง คำถามนี้เน้นไปที่การลืมพิมพ์ในตอนแรกและยกระดับหลังจากเริ่มแก้ไข
หนัก

สิ่งที่เกี่ยวข้อง: คำสั่ง vim“ write with sudo” ทำงานอย่างไร ที่ SO
kenorb

คำตอบ:


15
:w !sudo tee % >/dev/null`

คำอธิบาย: ด้วย!คุณสามารถรันโปรแกรม โดยการนำหน้าด้วย: w เนื้อหาของไฟล์ (สิ่งที่คุณมีเป็นกลุ่มไม่ใช่ไฟล์ดั้งเดิมและมีความแม่นยำมากขึ้น: บัฟเฟอร์) จะถูกกำหนดให้กับคำสั่งในอินพุตมาตรฐาน %ถูกแทนที่ด้วยชื่อไฟล์และ>/dev/nullหลีกเลี่ยงการพิมพ์เนื้อหาไปยังหน้าจออีกครั้ง (ซึ่งเป็นพฤติกรรมปกติของtee)

ฉันพบวิธีที่สั้นกว่านี้ ddไม่ได้พิมพ์ไปยัง stdout เพื่อให้คุณสามารถบันทึกสิ่งที่เป็นโมฆะ

:w !sudo dd of=%

​‍

Same ใช้สำหรับ:rแทรกผลลัพธ์ของคำสั่งที่กำหนดดังนั้นคุณสามารถใส่วันที่ปัจจุบันลงในไฟล์ของคุณโดยใช้:r !date


ขอบคุณมากคุณทำให้ชีวิตฉันดีขึ้นมาก! (ไบรอันด้วย)
zimbatm

ฉันเพิ่งเพิ่มวิธีที่สอง
แมเรียน

นั่นมันเรียบร้อยจริงๆ!
Anthony Giorgio

ใช้งานไม่ได้กับการปลดล็อค
Christian Brabandt

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.