Когда я сделал команду выше, X11 открылся. Я недоумеваю. Я его запустил? Как я могу быть уверен, что я не запускаю какую-либо программу, когда смотрю на вещи? Я действительно ненавижу идею, что чтение текстового файла может выполнять программу. Как можно программировать выполнение программ, выполняемых при выполнении простой команды cat или аналогичной команды?Что делает команда «cat/tmp/dir /: 0»?
ответ
Если запустить
file /tmp/:0
вы должны увидеть, что это не обычный файл «текст», но сокет. Aliasing ls
таким образом
ls -F
поможет определить такие файлы автоматически в вашей оболочке.
машина: 0 - дисплей X (первый дисплей на «машине»)
Я никогда не видел/tmp /: 0, но может случиться так, что ваш компьютер настроен так, что все непревзойденные имена машин отображаются на локальном хосте. Вы ничего не выполнили, X-сервер просто попробует и интерпретирует любые команды, отправленные cat как инструкции X. Это как делать кошку по адресу http:
Можете ли вы уточнить «послал кошка»? Я думаю, вы имеете в виду «cat X> Y», но в приведенном выше списке нет перенаправления –
. Было бы, если бы он послал некоторые из них! –
Возможно, ваше наблюдение правильное. Я перепроверил tmp, и я мог только найти: 0 один дир глубже. Я изменил вопрос соответствующим образом. Спасибо! –
:0
вещь - это сокет, ссылающийся на сервер X. Программы используют этот сокет для связи с сервером X (например, для рисования окна). Чтение из этого сокета каким-то образом заставило сервер активироваться. Перед выполнением этой команды сервер X должен быть уже запущен.
Я играл с X-сервером. Поэтому вы, вероятно, правы, что он работает. –
Это похоже на поведение OSX 10.5.
launchd слушает в сокете/tmp/launch-xxxxxx /: 0 '. Переменная DISPLAY настроена так, чтобы сообщать X-приложениям о записи в этот сокет. Когда приложение X открывает сокет, startd автоматически запускает «X11.app», чтобы предоставить приложению отображение.
cat'ing гнездо открывает его и запускает X11.app. Я не думаю, что есть другие случаи такого поведения, настроенные по умолчанию.
Так что же произошло? Вы были в текстовом терминале, и Х начал? Почему вы выполняли эту команду? – Zifre
@ Zifte: Я прочитал, что вещь: 0 соответствует дисплею, а X хранит свои файлы в/tmp /. Поэтому было логично проверить, как все работает. Я ждал, чтобы прочитать хороший код, но у меня открылся только экран. –
Вы набрали 'cat/tmp /: 0'? Я предполагаю, что начальный $ - это приглашение вашей оболочки? –