Как отправить сообщение другому пользователю в Linux: от write до полноценного чата в терминале

Когда-то в Linux всё было просто: открыл терминал, набрал write имя_пользователя — и общаешься. Но времена изменились. Сегодня при попытке отправить сообщение коллеге вы можете наткнуться на «команда не найдена». Разберёмся, что случилось со старыми утилитами и что использовать вместо них — вплоть до настоящего чата с ncurses-интерфейсом.

Классика жанра: write, wall и talk

Традиционные инструменты для общения между пользователями одной системы:

КомандаНазначениеОсобенности
write Личное сообщение конкретному пользователю Требует имени пользователя и терминала
wall Широковещательное сообщение всем Отправляет сразу всем, кто в системе
talk Интерактивный диалог Делит экран на две части

Как пользоваться write:

bash

# Узнаём, кто в сети и на каком терминале
who
# Отправляем сообщение
write имя_пользователя [имя_терминала]

Завершается сообщение нажатием Ctrl + D. Получатель увидит EOF.

Важный нюанс: пользователь может запретить приём сообщений командой mesg n. Тогда write выдаст ошибку. Суперпользователь (root) этот запрет игнорирует.

Проблема: write исчезла из Debian и Ubuntu

В современных Debian и производных (включая Ubuntu) команда write была удалена из стандартной поставки. Разработчики посчитали её небезопасной: старый механизм требовал прав на запись в терминал другого пользователя, что создавало потенциальные уязвимости.

Решение: команда всё ещё существует, но «переехала» в другой пакет:

bash

sudo apt update
sudo apt install bsdextrautils

После этого write снова станет доступна. Этот пакет содержит утилиты из BSD, не вошедшие в основные наборы Debian.

Альтернатива: пакет nwrite — улучшенная замена write, умеющая отправлять сообщения сразу нескольким пользователям:

bash

sudo apt install nwrite
nwrite имя_пользователя

Для оповещения всех сразу используйте wall (обычно входит в util-linux и доступна по умолчанию):

bash

echo «Ваше сообщение» | wall

А есть что-то типа чата с ncurses?

Да, и не одно. Вот несколько вариантов — от простых локальных чатов до полноценных клиентов для глобальных сетей.

💬 Простые чаты для локальной сети

Pardesi Chat — пожалуй, самый близкий к запросу вариант. Это чат на Python с интерфейсом в терминале, который автоматически находит других пользователей в локальной сети и позволяет общаться в реальном времени. Бонусом идут мини-игры (например, «Виселица») и ИИ-ассистент.

TermText — инструмент для разработчиков. Запускается прямо в терминале, позволяет создавать комнаты с уникальными кодами, общаться публично и в личных сообщениях (/dm). Требует Node.js:

bash

npx termtext@latest

drocsid — небольшой чат на Rust с TUI-интерфейсом (на базе Ratatui). Работает по архитектуре клиент-сервер: один запускает сервер, остальные подключаются. Поддерживает упоминания @username:

bash

cargo install drocsid

🌐 Полноценные клиенты для больших сетей

WeeChat — очень мощный и расширяемый консольный чат-клиент. Поддерживает IRC «из коробки» и XMPP через дополнительный скрипт. Это не просто «болталка», а серьёзный инструмент с кучей настроек, скриптов на разных языках и поддержкой 256 цветов:

bash

sudo apt install weechat-curses

Profanity — консольный клиент, специализирующийся именно на XMPP. Написан на C с использованием ncurses, вдохновлён стилем Irssi. Поддерживает личные чаты, комнаты и шифрование (OTR, PGP, OMEMO).

🛠️ Проекты с открытым кодом

Если хочется чего-то более специфичного:

  • Chatter — простой P2P-чат на C для двух пользователей в одной сети. Не требует центрального сервера.
  • byteline — консольный чат на Python с поддержкой TCP/UDP и простеньким XOR-шифрованием. Можно поднять свой сервер и подключаться по IP.

Установка Pardesi Chat в виртуальном окружении

Разберём пошагово, как поставить самый доступный вариант — Pardesi Chat — в изолированном venv, чтобы не засорять систему.

🐍 Создание и активация venv

bash

# 1. Переходим в папку проекта (если её нет, создайте: mkdir my-chat && cd my-chat)
cd /путь/к/вашему/проекту
# 2. Создаём виртуальное окружение (папка .venv)
python3 -m venv .venv
# 3. Активируем его
source .venv/bin/activate

После активации в начале строки терминала появится (.venv) — вы работаете внутри изолированной среды.

📦 Установка pardesichat

bash

# 4. Обновляем pip (опционально, но полезно)
pip install —upgrade pip
# 5. Устанавливаем pardesichat
pip install pardesichat

🚀 Запуск и выход

bash

# 6. Запуск чата
pardesi-chat
# 7. Выход из виртуального окружения (когда закончите)
deactivate

Если при создании окружения возникнет ошибка No module named venv, установите пакет для него:

bash

sudo apt install python3-venv

Итог

Если нужна быстрая передача сообщения внутри одной системы — ставьте bsdextrautils и пользуйтесь write, либо сразу берите nwrite. Если хочется настоящего чата с интерфейсом в терминале — для локальной сети идеально подойдёт Pardesi Chat (ставится через pip в venv), а для глобального общения стоит присмотреться к WeeChat или Profanity.

Fedoris

Добавить комментарий

Ваш адрес не будет опубликован Обязательные поля помечены *

Пользовательское соглашение

Зарегистрироваться