Разбор ошибок
❌ Ошибка 1. «Я застрял в vi и не могу выйти»
vi /tmp/file
# ...понажимали клавиш, на экране непонятное, ничего не выходит...
Почему ошибка: vi стартует в командном режиме, и случайные клавиши выполняются как команды; паническое нажатие всего подряд только усугубляет картину.
✅ Как правильно: универсальный выход: Esc (можно дважды — хуже не будет), затем :q! и Enter — выход без сохранения. Если изменения нужны — Esc, затем :wq.
❌ Ошибка 2. Печатать текст, не войдя в режим вставки
vi /tmp/file
Hello # H, e, l, l, o ушли КОМАНДАМИ, а не текстом
Почему ошибка: в командном режиме каждая буква — команда. Часть нажатий «съестся» молча, а что-то может удалить или перемешать текст (например, dd в середине слова «add…» снесёт строку).
✅ Как правильно: сначала i — внизу слева индикатор сменится с - на I, — и только потом печатать. Испортили файл — Esc, u (отмена) или :q! (выйти, не сохраняя).
❌ Ошибка 3. Набирать :wq, не выйдя из вставки
# в режиме вставки:
:wq # строка «:wq» просто напечаталась в файл!
Почему ошибка: команды с двоеточием работают только в командном режиме; в режиме вставки :wq — обычный текст, который окажется в документе.
✅ Как правильно: порядок всегда один: Esc → :wq. Если «:wq» уже впечаталось — удалите его (Esc, встать на строку, dd или Del посимвольно) и выходите заново.
❌ Ошибка 4. zz вместо ZZ
# командный режим:
zz # ничего не сохранилось (а в vim экран прокрутился)
Почему ошибка: лекция специально подчёркивает: ZZ — БОЛЬШИЕ буквы (Shift+Z дважды). Linux чувствителен к регистру и в редакторе тоже: zz — совсем другая команда.
✅ Как правильно: Shift+Z, Shift+Z — сохранить и выйти. Сомневаетесь в регистре — надёжнее :wq.
❌ Ошибка 5. Выйти из vi и удивиться, что файла нет
vi /tmp/newfile # ...что-то написали...
:q! # вышли «как обычно»
cat /tmp/newfile # cat: can't open '/tmp/newfile': No such file or directory
Почему ошибка: новый файл существует только в памяти редактора, пока вы его не сохранили. :q! отменяет все изменения — вместе с самим фактом создания файла.
✅ Как правильно: выходить через :wq / :x / ZZ, либо сохраниться по ходу работы командой :w и затем выходить как угодно.
❌ Ошибка 6. В nano выйти по Ctrl+X и отбросить изменения
# nano: Ctrl+X → «Save modified buffer?» → N (на автомате)
cat /tmp/file # правок нет — всё пропало
Почему ошибка: nano при выходе с несохранёнными изменениями задаёт вопрос; ответ N молча отбрасывает всё набранное.
✅ Как правильно: сохраняться явно: Ctrl+O, Enter (Write Out), потом Ctrl+X. На вопрос при выходе отвечать Y и подтверждать имя файла Enter.
❌ Ошибка 7. grep / без ключа -w в конвейере df
df -h | grep /
# tmpfs 2.0G 0 2.0G 0% /dev/shm ← лишние строки:
# /dev/root 30G 14G 16G 47% / ← слеш есть в каждом пути
Почему ошибка: grep ищет часть строки: символ / встречается в каждой точке монтирования, поэтому фильтр пропускает почти весь вывод.
✅ Как правильно: df -h | grep -w / — ключ -w (word-regexp) требует совпадения слова целиком, и остаётся только строка корневого раздела. Лекция отдельно обращает на это внимание.
❌ Ошибка 8. sed -i без файла или не на том файле
cat /etc/group | sed -i 's/user2/Ivan/g' # ошибка: sed -i требует ФАЙЛ
sed -i 's/user2/Ivan/g' /etc/group # сработает, но файл изменён безвозвратно
Почему ошибка: ключ -i редактирует файл «на месте», поэтому sed должен получить имя файла, а не поток из pipe. И отмены у -i нет: u, как в vi, в терминале не работает.
✅ Как правильно: сначала прогнать замену без -i и посмотреть результат; править с резервной копией: sed -i.bak 's/user2/Ivan/g' файл. Системные файлы — только в песочнице .
❌ Ошибка 9. Кавычки-«ёлочки» из презентации в awk/sed
df -h | grep -w / | awk '{print $5ʼ | sed ‘s/%//g'
> # оболочка повисла в ожидании закрытия кавычки
Почему ошибка: при копировании со слайдов прямые кавычки ' подменяются типографскими ʼ ‘ ’ — bash их кавычками не считает, строка остаётся незакрытой (приглашение > ждёт продолжения).
✅ Как правильно: нажать Ctrl+C, чтобы прервать ожидание, и перенабрать команду с прямыми кавычками: awk '{print $5}' | sed 's/%//g'.