fish shell - команда запуска на основе состояния выхода предыдущей команды

Моя цель - настроить монитор так, чтобы он был максимально гибким и простым в использовании. Я использую рыбу в качестве раковины и добавил следующие две строки:

abbr mon 'xrandr --output DP2 --auto --primary --left-of eDP1 || xrandr --output HDMI1 --auto --primary --left-of eDP1 && setxkbmap -layout de -option ctrl:nocaps && i3-msg restart'
abbr moff 'xrandr --output DP2 --off || xrandr --output HDMI1 --off && i3-msg restart'

Что должно позволить мне просто набрать mon или же moff всякий раз, когда я хочу включить или выключить монитор (также setxkbmap часть, потому что я в основном использую ключ с монитором и клавиатурой, прикрепленной к нему).

С моим пониманием объединение двух команд с && запускает вторую команду, когда первая удалась, и объединяет две команды с || запускает команду только в случае сбоя первой команды.

Однако в моем случае часть после && будет выполняться всегда, потому что одна из команд должна завершиться успешно, что она и делает. Увидеть:

tim@arch ~> false || true && echo hello
hello
tim@arch ~> true || false && echo hello
hello

Моя проблема в том, что часть после || в моих строках никогда не запускается, поэтому команда ничего не делает, когда HDMI1 в то время как связано DP2 отключен

Это почему? Я что-то здесь не так понял?

0 ответов

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