Je fais des scripts avec Vim et je viens de commencer à utiliser sudoedit
.
Le problème est que lorsque je :w
il écrit dans le fichier temporaire, donc aucun test du script ne peut avoir lieu à moins que je quitte l'éditeur.
Comment puis-je forcer une mise à jour de l'original, ou est-ce que je manque le point de sudoedit
?
Réponse acceptée :
sudoedit
vous permet d'éditer un fichier avec un éditeur s'exécutant sur votre propre ID utilisateur. Il copie le fichier dans un fichier temporaire dans lequel votre éditeur peut ensuite écrire. Dès que l'éditeur est fermé, le fichier modifié est recopié.
Il n'y a pas de possibilité intégrée d'écrire automatiquement les modifications pendant que l'éditeur est toujours en cours d'exécution.
Donc, vous avez besoin soit
- exécutez l'éditeur sur l'autre ID utilisateur (par exemple,
sudo vi /file/to/edit
) - recopiez le fichier manuellement dans un shell (séparé) (
sudo cp /tmp/... /file/to/edit
) ou depuis vim:!sudo cp % /file/to/edit
. Depuis vim, vous pouvez également démarrer un shell avec:sh
ou mettez vim en arrière-plan avec Ctrl+Z et restaurez-le avecfg
. - utilisez https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work
- créez votre propre version de
sudoedit
qui réécrit les modifications dès que les fichiers temporaires sont modifiés. Cela devrait être facilement réalisable avec quelques scripts. Inotify peut vous aider à détecter les changements (voir par exemple Un script bash peut-il être accroché à un fichier ? )