Вопрос Что это значит? ... | ps `cat`" команда делать?


В своем исследовании в Интернете я нашел следующую команду в качестве решения для поиска имени процесса окна:

xprop _NET_WM_PID | sed 's/_NET_WM_PID(CARDINAL) = //' | ps `cat`

Я просто не понимаю, что происходит здесь после первого |,

Предположим, что xprop _NET_WM_PID выходы 1000 как идентификатор процесса. Что будет дальше? Почему у нас есть cat после ps? Я немного смущен.


10
2018-04-18 10:03


происхождения




ответы:


xprop ... | sed ... выполняется сначала, затем cat читает его вывод. Из-за использования обратных выходов выход кота заменяется на ps `cat` так что команда становится ps 1000,

Альтернативная команда, которая приводит к такому же результату:

ps $(xprop _NET_WM_PID | cut -d= -f2)

Это работает следующим образом:

  1. казнить xprop _NET_WM_PID для получения идентификатора процесса окна. После нажатия окна он выводит что-то вроде:

    _NET_WM_PID(CARDINAL) = 12345
    
  2. Разделить на = и взять второе поле. cut -d= -f2 берет _NET_WM_PID(CARDINAL) = 12345 строка со стандартного ввода и записи 12345 к стандартному выходу.
  3. Наконец, запустите ps команду с $(...) заменяют вывод ..., команда, которая выполняется, является ps 12345, (Примечание: `...` также можно использовать вместо $(...), хоть есть некоторые отличия)

15
2018-04-18 10:13



Интересный «цвет лица», этот | command 'cat' (Я не могу вставлять обратные ссылки в обратную сторону в комментариях?) ... обычный способ: | xargs command (с дополнительными параметрами для xargs, например, чтобы ограничить 1 или n аргументов и т. д.), - Olivier Dulac