как я могу переписать сценарий bash как один лайнер?

Я хочу добавить команду gesture с помощью compiz. В CCSM есть плагин команд, он позволяет назначить один из углов экрана при перемещении мыши для выполнения команды.

Я хочу переключить экранную клавиатуру , чтобы скрыть и показать на мыши переход к углу экрана.

Ниже сценария переключается команда [!d2 ], но он должен быть одним лайнером, чтобы скопировать его в плагин команды compiz

  #!/bin/bash

  wid=`xdotool search --name Keyboard|head -1`
  wstate=`xwininfo -id $wid | grep "Map State:"`

  if [[ "$wstate" == *IsViewable ]]
  then
      xdotool windowunmap $wid
  else
      xdotool windowmap $wid
  fi

Как я могу сделать его одним лайнером?

1
задан 11 December 2015 в 17:24

1 ответ

Вы можете сохранить свой код в сценарии bash с расширением .sh и предоставить полный путь в текстовом поле.

И ваш код в одной строке:

wid="$(xdotool search --name Keyboard|head -1)"; wstate="$(xwininfo -id $wid | grep "Map State:")"; if [[ "$wstate" == *IsViewable ]];then xdotool windowunmap $wid; else xdotool windowmap $wid; fi

Здесь ; используется для комбинирования кода линии basline в 1 строке.

3
ответ дан 23 May 2018 в 15:06
  • 1
    Клянусь, что я попробовал это, прежде чем публиковать свой вопрос, мой не работал, но твоя работа. – kenn 11 December 2015 в 17:45
  • 2
    обратите внимание, что обратные ссылки устарели. Кроме того, нет необходимости говорить if ... else. См. Мой ответ. – fedorqui 11 December 2015 в 17:49
  • 3
    Да, backticks - старый путь, поэтому удалены, что также двойные кавычки "$(..)" для целей безопасности. if . . else здесь просто необязательно. – snoop 11 December 2015 в 17:51
  • 4
    нет необходимости цитировать это $(). Проверьте, например, с помощью r=$(echo "a b c"). – fedorqui 11 December 2015 в 17:56

Другие вопросы по тегам:

Похожие вопросы: