AppleInsider.ru
X
О проекте Реклама
Чат
с читателями
Присоединяйтесь
в Телеграме

[Mac OS X] Направляем вывод командной строки в GUI-приложение

В предыдущей статье мы рассмотрели возможности команды open с ключом -a для запуска приложений с графическим интерфейсом. У этой команды есть еще один интересный ключ -f, с помощью которого open может принимать данные со стандартного ввода (standard input, он же stdin) и передавать его текстовому редактору, установленному по умолчанию.

А значит этим можно воспользоваться для получения вывода любых консольных команд, организовав конвейер (он же канал, он же pipe) с их стандартного вывода (standard output, он же stdout) в стандартный ввод (standard input), с которого команда open -f сможет его получить.

Опытные пользователи уже все поняли, для них достаточно первого абзаца и они теперь знают, как сделать то, что написано в заголовке статьи, соответственно им можно дальше не читать.

Для тех, кто не знаком с понятиями standard input, standard output и pipe, поясню сказанное более простым и понятным языком, а так же приведу примеры.

Стандартным вводом (standard input) в Unix-системах считается поток ввода, с которого поступают команды от пользователя, т.е. в нашем случае – ввод с клавиатуры.

Стандартным выводом (standard output) считается поток вывода данных, в который направляется то, что выводит выполняемая команда, т.е. в нашем случае – экран.

Другими словами, то, что написано в первом абзаце означает, что если выполнить команду open -f, ввести с клавиатуры любой текст, ввод которого завершить комбинацией Ctrl+D (это специальная комбинация — команда окончания ввода), то набранный текст откроется в текстовом редакторе по умолчанию – стандартно TextEdit (картинки кликабельны):

Теперь о втором абзаце. В Unix-системах можно соединять стандартный вывод одной команды со стандартным вводом другой команды, путем организации конвейера (pipe) между ними. А значит, мы можем организовать проброс того, что выводит какая-нибудь консольная команда – в команду open, которая в свою очередь может все это передать приложению с графическим интерфейсом.

Практический пример. Команда ls -l показывает содержимое текущего каталога. Направим ее вывод в текстовый редактор:

ls -l | open -f

Вертикальная черта | и есть тот самый конвейер (pipe), который перенаправляет вывод команды ls -l на ввод команды open -f. Результат:

Попробуйте выполнить команду:

man open | open -f

Она откроет страницу руководства (man) команды open в тестовом редакторе.

В этой статье я описывал, как открывать руководства (man) в приложении Просмотр. Теперь вы понимаете, как работает команда из той статьи:

man -t open | open -f -a Preview

Резюме

консольная_команда | open -f -a GUI-приложение

делает то, что написано в заголовке статьи. 🙂

Надеюсь, начинающим и этот небольшой урок по базовым понятиям Unix-систем не показался слишком сложным. 🙂

P.S.

Если все-таки что-то показалось непонятным, спрашивайте, постараюсь объяснить подробнее.

Удачи!

Новости по теме
Valve наконец выпустила новое приложение Steam для Mac с процессорами Apple Silicon
AirTag 2 уже почти готов — чего ждать от новой версии трекера Apple?
Как работает Live Activities в macOS Tahoe и iPadOS 26
Новости партнеров
Можно ли услышать звук космоса — и что он “поёт”?
Можно ли услышать звук космоса — и что он “поёт”?
Криптотрейдер потерял 12.5 миллиона долларов на восьми ликвидациях торговых позиций за неделю. Что произошло?
Криптотрейдер потерял 12.5 миллиона долларов на восьми ликвидациях торговых позиций за неделю. Что произошло?
Google делает нас более глупыми и влияет на нашу креативность
Google делает нас более глупыми и влияет на нашу креативность