J'essaie d'éditer sources.list à l'aide de l'éditeur vi, mais l'erreur suivante s'affiche lors de l'enregistrement du fichier:
/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 a un système d’aide intégré. Je viens de citer ce qu'il dit de :h E212
.
Vous voudrez peut-être modifier le fichier en tant que superutilisateur en tant que Sudo vim FILE
. Ou, si vous ne souhaitez pas quitter votre session vim existante (et que vous disposez maintenant des droits Sudo appropriés), vous pouvez émettre:
:w !Sudo tee % > /dev/null
Ce qui sauvera le fichier.
HTH
Au lieu de perdre tous vos changements et de rouvrir avec Sudo. Voir cette démo pour savoir comment enregistrer ces modifications:
Une démo d'installation vous permettant de créer un fichier en lecture seule appartenant à la racine pour un utilisateur inférieur:
Sudo touch temp.txt
Sudo chown root:root temp.txt
Sudo chmod 775 temp.txt
whoami
el
Commencez par ouvrir le fichier en tant qu'utilisateur normal:
vi temp.txt
Ensuite, apportez quelques modifications au fichier, il vous avertit qu'il est en lecture seule. Utilisez cette commande.
:w !chmod 777 %
Ensuite, écrivez le fichier:
:wq!
Les autorisations sont développées et le fichier est enregistré. Vous avez besoin du point d'exclamation, car vous modifiez un fichier racine en tant qu'utilisateur moins important.
Explication de ce que fait cette commande:
Le: w signifie écrire le fichier. Le bang signifie commencer à interpréter comme Shell. chmod signifie changer les autorisations, 777 signifie les autorisations complètes partout. Le pourcentage signifie le nom du fichier actuel.
Il applique le changement. Et il demande si vous voulez recharger. Appuyez sur "O" pour "Ok". Ne rechargez pas ou vous perdrez vos modifications.
Ou peut-être êtes-vous sur un fs monté en lecture seule
Pour moi, la solution était simple. J'essayais de éditer/créer un fichier dans un dossier qui n'existait pas. Comme j'étais déjà dans le dossier, j'essayais de éditer/créer un fichier dans.
i.e. pwd folder/file
et tapait
Sudo vim folder/file
et plutôt évidemment, il cherchait le dossier dans le dossier et n'a pas pu enregistrer.
pour moi a travaillé à changer le système de fichiers à partir de lecture seule avant d'exécuter vim:
bash-3.2# mount -o remount rw /
J'ai référencé à Zsolt au niveau 2, j'ai entré:
:w !Sudo tee % > /dev/null
et puis dans ma situation, je ne peux toujours pas modifier le fichier, donc il a été demandé d'ajouter "!" donc je saisis
:q!
alors ça marche
Il est possible que le fichier auquel vous accédez ait déjà une copie (ou une version) de swap dans le même répertoire.
Par conséquent, vérifiez d’abord si un fichier caché existe ou non.
Par exemple, voir pour le type de fichiers suivant
.system.conf.swp
En utilisant la commande
ls -a
Et ensuite, supprimez-le en utilisant ...
rm .system.conf.swp
D'habitude, je recommande de commencer à utiliser les privilèges de super utilisateur en utilisant ...
Sudo su
Essayez de vous connecter en tant que root, puis éditez le fichier. Ça marche pour moi
J'ai eu cette erreur quand j'ai utilisé git rm
sur un fichier dans un répertoire.
J'étais dans quelque chose comme ~/gitRepo/code/newFeature
Dans newFeature, il n'y avait qu'un seul fichier. J'ai fait un git rm
sur ce fichier puis j'ai essayé de créer un nouveau fichier myNewFile en utilisant vi.
Ubuntu m'a montré que j'étais toujours dans le répertoire newFeature mais que git rm
avait supprimé tout le répertoire.
J'ai dû quitter vi, naviguer dans un répertoire, puis recréer le répertoire newFeature.