Очевидно, fish использует ; и
для &&
и ()
для замены команд.
Так что простое изменение команды на
pacman -Qtdq; and sudo pacman -Rns (pacman -Qtdq)
должно сработать.
Отвечая на вопрос, обычно вы можете заставить оператор выполняться в Bash, просто перенаправив его на STDIN команды bash
любым способом (обратите внимание, что я использую Zsh, который поддерживает здесь строки, и что оператор печатает содержимое переменной, специфичной для Bash):
% <<<'echo $BASH' bash
/bin/bash
Однако в качестве общего правила я бы предложил использовать опцию bash
-c
. Например, здесь строки и трубы не слишком хорошо сочетаются с несколькими командами, здесь документы будут расширены текущей оболочкой, и т.д. (тем не менее, они должны поддерживаться текущей оболочкой).
В целом bash -c
кажется всегда надежным вариантом:
bash -c 'pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)'
Что для нескольких команд становится чем-то вроде этого:
bash -c '
command1
command2
command3
'
Насколько я знаю, для этого нет привязок по умолчанию, но существуют необходимые методы для их создания:
awful.screen.focus
. Принимает экранный объект для перемещения фокуса. client:move_to_screen
. Обратите внимание, что вы захотите добавить это в таблицу привязок клиентов, а не в глобальную. Если вы хотите создать привязки на основе выходных имен randr, вы можете использовать свойствоoutputs
экранных объектов. Эта таблица имеет выходные имена randr как ключи , так что это немного запутанно для этой цели. Я бы попробовал что-то вроде этого:
for s in screen do
for out,_ in pairs(s.outputs) do
if out == "eDP1" then
globalkeys = awful.util.table.join(globalkeys,
awful.key({modkey}, "F1", function() awful.screen.focus(s) end))
elseif out == "DP-1-2" then
--...
end
end
end
Я не могу проверить это прямо сейчас, здесь нет нескольких экранов.
Основываясь на ответе crater2150 , я нашел рабочее решение. Я публикую это, если у кого-то есть такая же проблема.
-- set up keybindings based on existing monitors
for s in screen do
for screen_name, _ in pairs(s.outputs) do
if screen_name == "eDP-1" then
globalkeys = awful.util.table.join(globalkeys,
awful.key({modkey}, "F1", function() awful.screen.focus(s) end))
elseif screen_name == "DP-2-2" then
globalkeys = awful.util.table.join(globalkeys,
awful.key({modkey}, "F2", function() awful.screen.focus(s) end))
elseif screen_name == "DP-1-2" then
globalkeys = awful.util.table.join(globalkeys,
awful.key({modkey}, "F3", function() awful.screen.focus(s) end))
end
end
end
Просто переберите все экраны и, если интересующие вас существуют, добавьте привязку клавиш, которая переключает на соответствующий экран.