Как открывать PDF и другие файлы в Ubuntu из командной строки

Введение
Обычный пользователь открывает PDF двойным щелчком или через контекстное меню «Открыть с помощью». Но при работе в терминале удобнее запускать приложение одной командой. Evince — стандартный просмотрщик PDF/PS в Ubuntu, но для большинства задач достаточно xdg-open: он вызывает приложение, назначенное системой для конкретного типа файла.
Все примеры здесь проверены на Ubuntu 22.04; команды универсальны для современных дистрибутивов, использующих xdg-utils и GNOME/GIO.

Базовая команда
Чтобы открыть PDF-файл (или любой другой файл) в приложении по умолчанию, выполните:
xdg-open [имя-файла.pdf]Пример для текущей директории:
xdg-open document.pdfxdg-open автоматически определит MIME‑тип файла и запустит связанное с ним приложение — для PDF это обычно Evince.
Открытие каталогов и URL
Чтобы открыть папку в менеджере файлов (Nautilus):
xdg-open [путь-к-папке]Примеры:
xdg-open .
xdg-open /tmpЧтобы открыть веб‑страницу в браузере по умолчанию:
xdg-open https://www.howtoforge.com/

Также возможны тривиальные и курьёзные примеры:
xdg-open ~/Documents/notes.odt
xdg-open mailto:someone@example.com
xdg-open /usr/share/applications/gedit.desktop
Как работает xdg-open и где смотреть соответствия
Коротко: xdg-open определяет MIME‑тип файла и использует системные обработчики (GNOME file handlers / XDG MIME) для запуска приложения по умолчанию. Это то же поведение, которое вы наблюдаете при двойном щелчке в файловом менеджере.
Полезные места для проверки и настройки соответствий приложений:
- Системный файл: /etc/gnome/defaults.list — список ассоциаций, применяемых по умолчанию.
- Пользовательские настройки: ~/.config/mimeapps.list или ~/.local/share/applications/mimeapps.list — тут можно переопределить системные значения для текущего пользователя.
- Утилита для запроса MIME: xdg-mime. Примеры:
xdg-mime query filetype document.pdf
xdg-mime default evince.desktop application/pdfПервая команда покажет MIME‑тип файла; вторая назначит evince.desktop как обработчик для PDF.
Когда xdg-open не работает и альтернативы
В ряде случаев xdg-open не сработает: на headless‑сервере без X/Wayland, в GUI с нестандартной конфигурацией или при отсутствии ассоциированного приложения. Рассмотрите альтернативы:
- evince <файл> — напрямую открыть файл в Evince.
- gio open <файл> — GNOME GIO-альтернатива для открытия файлов/URL.
- sensible-browser
— Debian-ориентированная обёртка для браузера по умолчанию. - okular, atril, libreoffice – <файл> — явный вызов альтернативных приложений.
Если вы автоматизируете на сервере без GUI, подумайте о простых инструментах для обработки PDF (pdftk, qpdf) вместо открытия в GUI.
Отладка и типичные ошибки
- Ничего не происходит: запущен не графический сеанс. Проверьте переменную окружения DISPLAY или используйте ssh -X/ssh -Y для проброса X.
- Неверные ассоциации: проверьте ~/.config/mimeapps.list и /etc/gnome/defaults.list.
- Ошибка «No application is registered for MIME type»: установите нужное приложение или назначьте его через xdg-mime.
- Если xdg-open не установлен, установите пакет xdg-utils через apt.
Пример проверки MIME‑типа и назначения приложения:
file --mime-type -b document.pdf # покажет application/pdf
xdg-mime query filetype document.pdf
xdg-mime default evince.desktop application/pdfКороткий плейбук для автоматизации
- Проверить, что GUI доступен: test -n “$DISPLAY” || echo “Нет графического сеанса”.
- Запросить MIME: xdg-mime query filetype <файл>.
- Если нужно — назначить приложение: xdg-mime default
.desktop . - Запустить: xdg-open <файл> и проверять код возврата.
Ментальные модели и когда этот подход не подходит
Ментальная модель: xdg-open — это «агент соответствий» между типом содержимого и приложением. Он не открывает файлы сам, а просит выбранное приложение сделать это за него.
Когда не подходит:
- На серверах без GUI — запуск бессмыслен.
- Для массовой обработки файлов лучше использовать консольные утилиты (pdftk, qpdf, imagemagick).
- Если нужен точный контроль над приложением (параметры запуска), вызывайте приложение напрямую (evince, okular и т. п.).
Диаграмма принятия решения
mermaid
flowchart TD
A[Нужно открыть файл из терминала?] --> B{Есть графический сеанс?}
B -- Нет --> C[Использовать консольные инструменты или проброс X]
B -- Да --> D{Известно приложение для типа файла?}
D -- Да --> E[Вызвать приложение напрямую (evince, okular)]
D -- Нет --> F[Вызвать xdg-open <файл>]
F --> G{Открылось?}
G -- Да --> H[Готово]
G -- Нет --> I[Проверить MIME, xdg-mime, переменную DISPLAY]Роль‑ориентированные чек‑листы
Для десктоп‑пользователя:
- Убедиться, что приложение установлено (Evince, браузер и т.д.).
- Запустить xdg-open <файл>.
- Если не открывается, проверить двойным кликом в файловом менеджере.
Для разработчика скриптов:
- Проверить доступность GUI (DISPLAY).
- Пробовать возвратный код команды и логировать ошибки.
- Для headless‑режима использовать консольные утилиты.
Для системного администратора:
- Настроить системные ассоциации в /etc/gnome/defaults.list.
- Настроить пользовательские маппинги в ~/.config/mimeapps.list.
- Убедиться, что xdg-utils и необходимые приложения установлены.
Критерии приёмки
- Выполнение xdg-open <файл> открывает файл в графическом приложении без ошибок.
- В headless‑сценариях скрипт корректно обрабатывает отсутствующий GUI и возвращает понятное сообщение.
- MIME‑тип файла корректно определяется командой xdg-mime query filetype.
Безопасность и конфиденциальность
Открытие неизвестных PDF или вложений в графическом приложении может представлять риск (уязвимости просмотрщика, вредоносные макросы). Всегда проверяйте источники и используйте инструменты анализа перед открытием подозрительных файлов.
Однострочная глоссарий
- xdg-open: утилита XDG для открытия файлов/URL в приложениях по умолчанию.
- Evince: стандартный просмотрщик PDF/PS в GNOME/Ubuntu.
- MIME: формат, определяющий тип содержимого файла.
- xdg-mime: утилита управления соответствием MIME ↔ приложения.
Заключение
xdg-open — универсальный и простой инструмент для открытия файлов и URL в приложениях по умолчанию из командной строки. Он экономит время, избавляет от запоминания конкретных приложений и хорошо подходит для интерактивного использования и простых сценариев автоматизации. В сложных или headless‑сценариях используйте прямой вызов приложений или консольные инструменты.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента