Блокирует ли vim/vi/nano/etc файлы для записи?
Как и предполагает заголовок, мой коллега утверждает, что использование текстового редактора вместо синтаксического анализатора (например, less) блокирует файл, а в случае файлов журнала делает его таким, что файл журнала не может быть записан.
Я никогда не слышал об этом раньше, и только некоторые первоначальные испытания показывают, что это не так. Кроме того, я не могу найти ничего об этом в поиске Google, чтобы предположить, откуда он мог получить эту идею.
2 ответа
Вим не делает этого, но я не уверен насчет остальных. Однако, есть очень простой способ проверить это:
Откройте два окна терминала (konsole, gnome-терминал и т. Д.) И выполните следующие команды в первой консоли:
touch ~/test.txt
vim ~/test.txt
Теперь во второй консоли введите следующее:
echo "This is a test" >> ~/test.txt
Если файл заблокирован с помощью vim, ваша команда во второй консоли не будет выполнена, так как файл не может быть записан. Это не подведет. Повторите с любым редактором, который вы хотите, как шаг #2 в первой консоли.
Очевидно, что если вы попытаетесь сохранить какие-либо изменения в своей первой консоли, вы заберетесь на неизведанную территорию, но что касается добавления файлов журнала, это безопасно.
Некоторые редакторы, такие как vim, gedit и другие, создают "теневой" файл при открытии файла, чтобы указать, что файл открыт в редакторе. Это не блокировка и ничего не делает с другими приложениями в вашей системе - это просто дает редактору возможность узнать, что файл открыт.
vim
а также vi
do ( пример эффекта). Они не предотвращают запись файлов, но выдают предупреждение, если вы используете другой экземпляр vi
/ vim
редактировать тот же файл. nano
а также emacs
(v24.3.1) нет (по крайней мере по умолчанию). Я должен искать другие редакторы. На самом деле, большинство достойных редакторов действительно способны отслеживать внешние изменения в файле, решительно полагая, что они не могут предотвратить внешние изменения.
Это может быть верно, если приложение использует некоторую функцию блокировки (либо используя O_EXLOCK
в системах, которые его поддерживают, или flock
или что-то еще в Windows).
Думаю, я понимаю вашу проблему. Я сам пытался решить ту же проблему
Если вы создаете документ с помощью команды:
sudo nano nanoCreated.py
Документ создается, но документ заблокирован. Его можно редактировать только в редакторе nano. Это будет проблемой, когда вы попытаетесь отредактировать его в других редакторах.
Однако я не думаю, что у других редакторов, таких как Vim, есть такая же проблема.
Чтобы обойти проблему блокировки файлов:
Создайте файл с помощью команды:
touch nameOfFile.py
или с любым другим расширением. Вы также можете использовать любые другие команды, например:cat>nameOfFile.py
Затем вы можете получить доступ к документу, используя:
sudo nano nameOfFile.py
Затем вы можете отредактировать документ оттуда, и после того, как вы его сохраните, он не будет заблокирован и может быть отредактирован другими текстовыми редакторами.
Если вы посмотрите на загруженное мной изображение. Я создал файлы nameOfFile и nanoCreated.py, используяsudo nano nameOfFile.py
и оба файла были заблокированы, как вы можете видеть значок замка. Эти два файла можно редактировать только в Nano. Однако я создал другие файлы, используя предоставленные мной шаги, и ни один из них не был заблокирован.