Wie man aus vi Dateiberechtigungen ändern
Frage
Ich öffne manchmal ein Read-Only in vi-Datei, zu vergessen, chmod +w
zu tun, bevor es zu öffnen. Gibt es Möglichkeit, die Datei zu ändern aus vi?
So etwas wie !r chmod +w [filename]
?
Gibt es eine Verknüpfung zu der aktuell geöffneten Datei zu verweisen, ohne es lange Namen zu buchstabieren?
Lösung
Verwenden Sie einfach
:!chmod +w %
im Befehlsmodus. % Wird durch die aktuellen Dateinamen ersetzt werden.
Andere Tipps
Wenn Sie die Rechte haben, in die Datei zu schreiben, dann können Sie nur Ausrufezeichen verwenden zu erzwingen:
:w!
Wenn Sie nicht über die Rechte und Benutzer ändern müssen, wollen aber trotzdem in die Datei schreiben, manchmal können Sie gehen für so etwas wie
:w !sudo tee %
Ich weiß, das ist eine alte Post, aber mit Vim Version8 einer Funktion, mit der aufgenommen wurde, können Sie die Dateiberechtigungen ändern.
Nach der version8.txt-Datei:
setfperm () legen Sie die Berechtigungen einer Datei
Diese Funktion kann dann über den „Ruf“ Befehl in Vim aufgerufen werden.
Dies geschieht wie folgt:
:call setfperm("file name","permissions")
Die Struktur des „Berechtigungen“ string nimmt die gleiche Form wie in der Vim-Dokumentation beschrieben:
getfperm ({fname}) getfperm () Das Ergebnis ist ein String, der die Lese-, Schreib- und Ausführungs Berechtigungen der angegebenen Datei {fname}. Wenn {fname} existiert nicht oder sein Verzeichnis nicht gelesen werden kann, wird eine leere Zeichenkette zurückgegeben. Das Ergebnis ist von der Form „rwxrwxrwx“, wobei jede Gruppe von „Rwx“ Flaggen repräsentieren, die wiederum die Berechtigungen des Eigentümers die Datei, gehört die Gruppe die Datei an, und andere Benutzer. Wenn ein Benutzer nicht über eine gegebene Erlaubnis, die Flagge für diesen „-“ wird mit der Zeichenfolge ersetzt. Beispiel: : Echo getfperm ( "/ etc / passwd") Dies wird hoffentlich (von sicherheitstechnischer Sicht) Anzeige die Zeichenfolge "rw-r - r--" oder sogar "rw -------"
.
Ein minimales Beispiel:
:call setfperm("foo.txt","rwxrwxrwx")
Diese Lese fügt, Schreib- und Ausführungsberechtigungen für die „foo.txt“ Datei im aktuellen Verzeichnis.
Haben Sie versucht,
!chmod +w %
Das% stellt die aktuellen Dateinamen.
Sie können auch einen Schlüssel dazu wie Strg-W Karte.
:map <C-w> :!chmod +w %<CR>
Beachten Sie, dass Sie Strg-V Ctrl-M die <CR>
zu bekommen
Nach dem Bearbeiten Sie Ihre Datei mit vim, drücken Sie „esc“ und dann „:“. Geben Sie dann den folgenden Befehl ein:
w !sudo tee %
Dann drücken Sie "Enter". Geben Sie dann
:q!
erfolgreich Ausstieg aus dem Editor.
:!chmod <perms> <file>
und wenn vi noch nicht will, es schreiben,
:se cpo-=W