Когда-то в Linux всё было просто: открыл терминал, набрал write имя_пользователя — и общаешься. Но времена изменились. Сегодня при попытке отправить сообщение коллеге вы можете наткнуться на «команда не найдена». Разберёмся, что случилось со старыми утилитами и что использовать вместо них — вплоть до настоящего чата с ncurses-интерфейсом.
Классика жанра: write, wall и talk
Традиционные инструменты для общения между пользователями одной системы:
| КомандаНазначениеОсобенности | ||
| write | Личное сообщение конкретному пользователю | Требует имени пользователя и терминала |
| wall | Широковещательное сообщение всем | Отправляет сразу всем, кто в системе |
| talk | Интерактивный диалог | Делит экран на две части |
Как пользоваться write:
bash
Завершается сообщение нажатием Ctrl + D. Получатель увидит EOF.
Важный нюанс: пользователь может запретить приём сообщений командой mesg n. Тогда write выдаст ошибку. Суперпользователь (root) этот запрет игнорирует.
Проблема: write исчезла из Debian и Ubuntu
В современных Debian и производных (включая Ubuntu) команда write была удалена из стандартной поставки. Разработчики посчитали её небезопасной: старый механизм требовал прав на запись в терминал другого пользователя, что создавало потенциальные уязвимости.
Решение: команда всё ещё существует, но «переехала» в другой пакет:
bash
После этого write снова станет доступна. Этот пакет содержит утилиты из BSD, не вошедшие в основные наборы Debian.
Альтернатива: пакет nwrite — улучшенная замена write, умеющая отправлять сообщения сразу нескольким пользователям:
bash
Для оповещения всех сразу используйте wall (обычно входит в util-linux и доступна по умолчанию):
bash
А есть что-то типа чата с ncurses?
Да, и не одно. Вот несколько вариантов — от простых локальных чатов до полноценных клиентов для глобальных сетей.
💬 Простые чаты для локальной сети
Pardesi Chat — пожалуй, самый близкий к запросу вариант. Это чат на Python с интерфейсом в терминале, который автоматически находит других пользователей в локальной сети и позволяет общаться в реальном времени. Бонусом идут мини-игры (например, «Виселица») и ИИ-ассистент.
TermText — инструмент для разработчиков. Запускается прямо в терминале, позволяет создавать комнаты с уникальными кодами, общаться публично и в личных сообщениях (/dm). Требует Node.js:
bash
drocsid — небольшой чат на Rust с TUI-интерфейсом (на базе Ratatui). Работает по архитектуре клиент-сервер: один запускает сервер, остальные подключаются. Поддерживает упоминания @username:
bash
🌐 Полноценные клиенты для больших сетей
WeeChat — очень мощный и расширяемый консольный чат-клиент. Поддерживает IRC «из коробки» и XMPP через дополнительный скрипт. Это не просто «болталка», а серьёзный инструмент с кучей настроек, скриптов на разных языках и поддержкой 256 цветов:
bash
Profanity — консольный клиент, специализирующийся именно на XMPP. Написан на C с использованием ncurses, вдохновлён стилем Irssi. Поддерживает личные чаты, комнаты и шифрование (OTR, PGP, OMEMO).
🛠️ Проекты с открытым кодом
Если хочется чего-то более специфичного:
- Chatter — простой P2P-чат на C для двух пользователей в одной сети. Не требует центрального сервера.
- byteline — консольный чат на Python с поддержкой TCP/UDP и простеньким XOR-шифрованием. Можно поднять свой сервер и подключаться по IP.
Установка Pardesi Chat в виртуальном окружении
Разберём пошагово, как поставить самый доступный вариант — Pardesi Chat — в изолированном venv, чтобы не засорять систему.
🐍 Создание и активация venv
bash
После активации в начале строки терминала появится (.venv) — вы работаете внутри изолированной среды.
📦 Установка pardesichat
bash
🚀 Запуск и выход
bash
Если при создании окружения возникнет ошибка No module named venv, установите пакет для него:
bash
Итог
Если нужна быстрая передача сообщения внутри одной системы — ставьте bsdextrautils и пользуйтесь write, либо сразу берите nwrite. Если хочется настоящего чата с интерфейсом в терминале — для локальной сети идеально подойдёт Pardesi Chat (ставится через pip в venv), а для глобального общения стоит присмотреться к WeeChat или Profanity.