Qual é a sintaxe para passar a saída de um comando para xargs?

5

Como exemplo, estou usando xdotool para obter a lista de janelas na minha área de trabalho, o que gera uma lista de números, um em cada linha.

Um exemplo de comando para isso é: xdotool search --name "a_program" , que lista todas as janelas, que contêm a string a_program em seu título.

Um exemplo de saída seria:

50853718
50853807
50859414

Um exemplo de comando para obter o título da janela do número é xdotool getwindowname 50854718 .

Como eu construiria um comando usando xargs para que a saída em cada linha seja traduzida para xdotool getwindowname outputnumber ?

A questão é principalmente sobre xargs , embora quaisquer comentários sobre xdotool sejam bem-vindos.

    
por vfclists 29.06.2014 / 18:27

2 respostas

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

Se é isso que você precisa, remova o echo .

xdotool search --name "a_program" | xargs -n 1 echo xdotool getwindowname
    
por 29.06.2014 / 18:46
4

Para completar: você pode fazê-lo sem xargs , se você estiver usando o Bash ou um shell compatível. (Não tenho certeza de quais outros shells aceitam essa sintaxe, mas imagino que vários dos comuns aceitem essa sintaxe.) O benefício é apenas que você não invoca um programa separado (a saber, xargs ), mas é improvável que seja perceptível na prática.

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

O espaçamento não importa, então você pode colocar tudo isso em uma linha. No entanto, isso depende do fato de que os IDs de janela individuais retornados por xdotool search não possuem espaços em branco neles.

    
por 29.06.2014 / 23:53