이것은 무엇입니까?… ps`cat`”명령은 무엇입니까?


10

인터넷 조사에서 창의 프로세스 이름을 찾는 솔루션으로 다음 명령을 찾았습니다.

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

나는 단지 첫 번째 이후에 무슨 일이 일어나는지 이해하지 못합니다 |.

xprop _NET_WM_PID출력 1000을 프로세스 ID로 가정합니다 . 다음에는 어떻게 되나요? 왜 우리는 cat후가 ps있습니까? 약간 혼란 스러워요.

답변:


15

xprop ... | sed ...먼저 실행 된 다음 cat출력 을 읽습니다. 백틱 (backticks)을 사용하기 때문에 cat의 출력은 ps `cat`명령이으로 대체 됩니다 ps 1000.

동일한 결과를 가져 오는 대체 명령은 다음과 같습니다.

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

이것은 다음과 같이 작동합니다.

  1. xprop _NET_WM_PID창의 프로세스 ID를 검색하기 위해 실행합니다 . 창을 클릭하면 다음과 같이 출력됩니다.

    _NET_WM_PID(CARDINAL) = 12345
    
  2. 에서 나누고 =두 번째 필드를 가져갑니다. 표준 입력 cut -d= -f2에서 _NET_WM_PID(CARDINAL) = 12345문자열을 가져와 12345표준 출력에 씁니다 .
  3. 마지막으로 의 출력을 대체 하여 ps명령을 실행하면 실행되는 명령 은 입니다. (주의 사항 : 약간의 차이가 있지만 대신 대신 사용할 수 있습니다 )$(...)...ps 12345`...`$(...)

4
재미있는 "안색"이 | command 'cat'(내가 코멘트 백틱에서 역 따옴표를 포함 할 수 없습니다가?) ... 일반적인 방법은 다음과 같습니다 | xargs command(xargs를에 additionnal 매개 변수, 제한 예를 들어, 1 또는 n 인수 등으로)
올리비에 Dulac
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.