ฉันพยายามแก้ไขแหล่งที่มารายการใช้ตัวแก้ไข vi แต่ได้รับข้อผิดพลาดต่อไปนี้ในขณะที่บันทึกไฟล์:
/etc/apt/sources.list" E212: Can't open file for writing
ฉันพยายามแก้ไขแหล่งที่มารายการใช้ตัวแก้ไข vi แต่ได้รับข้อผิดพลาดต่อไปนี้ในขณะที่บันทึกไฟล์:
/etc/apt/sources.list" E212: Can't open file for writing
คำตอบ:
For some reason the file you are writing to cannot be created or overwritten.
The reason could be that you do not have permission to write in the directory
or the file name is not valid.
Vim มีระบบช่วยเหลือในตัว :h E212
ฉันเพียงแค่ยกสิ่งที่กล่าวไป
คุณอาจต้องการแก้ไขไฟล์เป็น superuser sudo vim FILE
เป็น หรือถ้าคุณไม่ต้องการออกจากเซสชัน vim ที่มีอยู่ (และตอนนี้มีสิทธิ์ sudo ที่เหมาะสม) คุณสามารถออก:
:w !sudo tee % > /dev/null
ซึ่งจะบันทึกไฟล์
HTH
แทนที่จะเสียการเปลี่ยนแปลงทั้งหมดและเปิดใหม่ด้วย sudo ดูตัวอย่างของวิธีบันทึกการเปลี่ยนแปลงเหล่านี้:
การสาธิตการตั้งค่าครั้งเดียวเพื่อสร้างไฟล์อ่านอย่างเดียวที่เป็นเจ้าของรูทสำหรับผู้ใช้ที่ต่ำกว่า:
sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el
ก่อนเปิดไฟล์ในฐานะผู้ใช้ปกติ:
vi temp.txt
จากนั้นทำการเปลี่ยนแปลงบางอย่างกับไฟล์มันจะเตือนให้คุณอ่านเท่านั้น ใช้คำสั่งนี้
:w !chmod 777 %
จากนั้นเขียนไฟล์:
:wq!
สิทธิ์จะถูกขยายและไฟล์จะถูกบันทึก คุณต้องมีเครื่องหมายอัศเจรีย์เนื่องจากคุณกำลังแก้ไขไฟล์รูทในฐานะผู้ใช้น้อย
คำอธิบายว่าคำสั่งนั้นทำอะไร:
กระบวนการ: w หมายถึงเขียนไฟล์ ปังหมายถึงเริ่มตีความเป็นเปลือก chmod หมายถึงสิทธิ์การเปลี่ยนแปลง 777 หมายถึงการอนุญาตแบบเต็มทุกที่ เปอร์เซ็นต์หมายถึงชื่อไฟล์ปัจจุบัน
มันใช้การเปลี่ยนแปลง และมันถามว่าคุณต้องการโหลดซ้ำหรือไม่ กด "O" สำหรับ "Ok" อย่าโหลดซ้ำไม่เช่นนั้นคุณจะสูญเสียการเปลี่ยนแปลง
สำหรับฉันมีวิธีแก้ปัญหาค่อนข้างง่าย ฉันพยายามแก้ไข / สร้างไฟล์ในโฟลเดอร์ที่ไม่มีอยู่ เนื่องจากฉันอยู่ในโฟลเดอร์ฉันจึงพยายามแก้ไข / สร้างไฟล์
กล่าวคือ pwd folder/file
และกำลังพิมพ์
sudo vim folder/file
และค่อนข้างชัดเจนว่ามันกำลังมองหาโฟลเดอร์ในโฟลเดอร์และล้มเหลวในการบันทึก
หรือบางทีคุณอยู่ใน fs ที่ติดตั้งแบบอ่านอย่างเดียว
ฉันอ้างอิงถึง Zsolt ในระดับ 2 ฉันป้อน:
:w !sudo tee % > /dev/null
และในสถานการณ์ของฉันฉันยังคงไม่สามารถแก้ไขไฟล์ได้ดังนั้นจึงแจ้งให้เพิ่ม "!" ดังนั้นฉันจึงใส่
:q!
จากนั้นก็ใช้งานได้
สำหรับฉันทำงานเปลี่ยนระบบไฟล์จากอ่านอย่างเดียวก่อนที่จะทำงานเป็นกลุ่ม:
bash-3.2# mount -o remount rw /
ลองเชื่อมต่อเป็นรูทแล้วแก้ไขไฟล์ มันใช้งานได้สำหรับฉัน
เมื่อคุณเปิดไฟล์ในกลุ่มให้ใช้ sudo ie: sudo vim textfile จะเป็นการแก้ไขปัญหา
เปลี่ยนผู้ใช้เป็นรูท
sodu su -
เรียกดูเป็นต้น
vi sudoers
ค้นหาผู้ใช้รูทในส่วนของผู้ใช้ส่วนตัว คุณจะได้รับเช่น
root ALL=(ALL:ALL) ALL
ทำรายการเดียวกันสำหรับชื่อผู้ใช้ของคุณ หากชื่อผู้ใช้ของคุณคือ 'myuser' ให้เพิ่ม
myuser ALL=(ALL:ALL) ALL
มันจะดูเหมือน
root ALL=(ALL:ALL) ALL
myuser ALL=(ALL:ALL) ALL
บันทึกไว้ เปลี่ยนผู้ใช้รูทเป็นผู้ใช้ของคุณ ตอนนี้ลองทำเช่นเดียวกันกับที่คุณได้รับปัญหา sudoers
อาจเป็นไปได้ว่าไฟล์ที่คุณกำลังเข้าถึงมีสำเนาการแลกเปลี่ยน (หรือรุ่น swap) ที่มีอยู่แล้วในไดเรกทอรีเดียวกัน
ดังนั้นก่อนดูว่ามีไฟล์ที่ซ่อนอยู่หรือไม่
ตัวอย่างเช่นดูไฟล์ประเภทต่อไปนี้
.system.conf.swp
โดยใช้คำสั่ง
ls -a
จากนั้นลบโดยใช้ ...
rm .system.conf.swp
โดยปกติฉันแนะนำให้เริ่มใช้สิทธิ์ผู้ใช้ขั้นสูงโดยใช้ ...
sudo su
ฉันได้รับข้อผิดพลาดนี้เมื่อฉันใช้git rm
กับไฟล์ในไดเรกทอรี
ฉันอยู่ในบางสิ่งเช่น ~ / gitRepo / code / newFeature
ในใหม่คุณสมบัติมีไฟล์เดียวเท่านั้น ฉันทำgit rm
ไฟล์นั้นแล้วพยายามสร้างไฟล์ใหม่ myNewFile โดยใช้ vi
อูบุนตูแสดงให้ฉันเห็นว่ายังคงอยู่ในไดเรกทอรีใหม่คุณสมบัติ แต่จริง ๆ แล้วgit rm
ลบไดเรกทอรีทั้งหมด
ฉันต้องออกจาก vi นำทางหนึ่งไดเรกทอรีจากนั้นสร้างไดเรกทอรีใหม่คุณสมบัติ
คุณเพียงแค่ต้องเข้าถึง Gemfile ด้วยการเข้าถึงรูท ก่อนvi
:
คำสั่ง:
sudo su -
แล้ว:
vi ~/...