Nano — первый редактор, с которым сталкивается большинство пользователей Linux: он установлен по умолчанию в Ubuntu, Debian и большинстве серверных дистрибутивов. Открыть файл легко. Сохранить — тоже, но только если знаешь нужные сочетания клавиш. Без них можно потерять изменения или намертво застрять в редакторе без понимания как выйти.
Основное сохранение: Ctrl+O
Ctrl+O («Write Out») сохраняет текущий файл не закрывая редактор. После нажатия nano показывает строку в нижней части экрана:
File Name to Write: /etc/nginx/nginx.conf
Здесь можно оставить имя как есть (нажать Enter) — файл сохранится на то же место. Или изменить путь — тогда изменения запишутся в новый файл, оригинал останется нетронутым.
После сохранения nano продолжает работу — можно продолжать редактировать.
Сохранить и выйти: Ctrl+X
Ctrl+X закрывает редактор. Если в файле есть несохранённые изменения, nano спросит:
Save modified buffer? (Answering "No" will DISCARD changes.)
Y Yes
N No ^C Cancel
Y — сохранить и выйти. N — выйти без сохранения (все изменения потеряны). Ctrl+C — отмена, вернуться к редактированию.
После нажатия Y появится запрос имени файла — такой же как при Ctrl+O. Нажать Enter для подтверждения.
Сохранить файл без прав: sudo
Частая ситуация на сервере: открыл системный конфиг обычным nano, поредактировал, нажал Ctrl+O — и получил:
Error writing /etc/nginx/nginx.conf: Permission denied
Права на файл есть только у root. Два варианта решения.
Вариант 1 — закрыть и переоткрыть с sudo:
nano /etc/nginx/nginx.conf # открыли без sudo
# редактировали...
# Ctrl+O → Permission denied
# Ctrl+X → выходим без сохранения
sudo nano /etc/nginx/nginx.conf # открываем правильно
Минус: нужно заново вносить изменения.
Вариант 2 — сохранить копию в доступное место:
Не выходя из редактора, при запросе имени файла изменить путь на домашнюю директорию:
File Name to Write: /tmp/nginx.conf
Сохранить туда, затем скопировать с sudo:
sudo cp /tmp/nginx.conf /etc/nginx/nginx.conf
Вариант 3 — записать через tee прямо из nano:
Нажать Ctrl+O, в строке имени файла ввести:
File Name to Write: | sudo tee /etc/nginx/nginx.conf
Символ | активирует pipe-запись — nano передаст содержимое команде tee, которая запишет файл с правами sudo. Работает не во всех конфигурациях nano, но часто выручает.
Сохранить резервную копию перед изменениями
Хорошая привычка при редактировании системных файлов — создать копию до правок. Прямо из командной строки перед открытием:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config
Если что-то пойдёт не так — cp sshd_config.bak sshd_config вернёт рабочий вариант.
Почему не удаётся сохранить: диагностика
Permission denied Файл принадлежит root или другому пользователю. Решение — sudo nano при открытии или pipe через tee как описано выше.
No space left on device Диск заполнен. Проверить:
df -h
Если свободного места нет — освободить место (очистить логи, временные файлы) и повторить сохранение.
Файл открыт в другом процессе Некоторые файлы блокируются другими программами. Убедиться что файл не открыт параллельно:
lsof /etc/nginx/nginx.conf
Конфигурация nano повреждена Редкая ситуация. Проверить или сбросить конфиг:
nano ~/.nanorc
Или переименовать чтобы nano запустился с дефолтными настройками:
mv ~/.nanorc ~/.nanorc.bak
Шпаргалка по горячим клавишам nano
| Действие | Клавиши |
|---|---|
| Сохранить (без выхода) | Ctrl+O → Enter |
| Сохранить в другой файл | Ctrl+O → изменить имя → Enter |
| Выйти | Ctrl+X |
| Сохранить и выйти | Ctrl+X → Y → Enter |
| Выйти без сохранения | Ctrl+X → N |
| Отменить выход | Ctrl+X → Ctrl+C |
| Открыть с правами root | sudo nano filename |