명령 출력을 xargs에 전달하는 구문은 무엇입니까?

명령 출력을 xargs에 전달하는 구문은 무엇입니까?

예를 들어 저는 xdotool데스크탑에서 창 목록을 가져오곤 했으며, 한 줄에 하나씩 숫자 목록을 출력했습니다.

예제 명령은 xdotool search --name "a_program"제목에 해당 문자열이 포함된 모든 창을 나열하는 입니다.a_program

샘플 출력은 다음과 같습니다.

50853718
50853807
50859414

숫자에서 창 제목을 가져오는 명령의 예는 입니다 xdotool getwindowname 50854718.

xargs각 줄의 출력을 변환하는 명령을 어떻게 구성합니까 xdotool getwindowname outputnumber?

질문은 주로 에 관한 것이지만 xargs어떤 의견이라도 환영합니다.xdotool

답변1

> echo "50853718 
50853807 
50859414" | xargs -n 1 echo xdotool getwindowname
xdotool getwindowname 50853718
xdotool getwindowname 50853807
xdotool getwindowname 50859414

그것이 필요한 것이라면 삭제하십시오 echo.

xdotool search --name "a_program" | xargs -n 1 echo xdotool getwindowname

답변2

xargs완벽을 기하기 위해: Bash나 호환되는 셸을 사용하는 경우에도 이 작업을 수행할 필요가 없습니다. (어떤 다른 쉘이 이 구문을 허용하는지 잘 모르겠지만 몇 가지 일반적인 쉘이 허용한다고 생각합니다.) 이것의 장점은 별도의 프로그램(예: xargs)을 호출하지 않는다는 점이지만 실제로는 눈에 띄지 않을 것입니다. .

for winid in $(xdotool search --name "a_program"); do
    xdotool windowname $winid;
done

간격은 중요하지 않으므로 모든 내용을 한 줄에 넣을 수 있습니다. 그러나 이는 반환된 개별 창 ID에 xdotool search공백이 포함되어 있지 않다는 사실에 의존합니다 .

관련 정보