Объединение команд терминала Linux в цепочку

Для этого есть утилита xcape. https://github.com/alols/xcape

Итак, решение, использующее xcape, включает выполнение следующей команды при запуске:

xcape -e 'Control_L=ISO_Level3_Shift|7;Control_R=ISO_Level3_Shift|0;S‌​hift_L=Shift_L|8;Shi‌​ft_R=Shift_R|9' -t 200 on startup

Если это применяется к другой раскладке клавиатуры, тогда команда должна быть другой.

3
24.01.2018, 14:53
2 ответа

Вы можете избежать двойных кавычек

printf '%b\n' "\"$(cat joyPhrase)\""

На моей машине

$ echo this is a file >> testfile
$ printf '%b\n' "\"$(cat testfile)\""
"this is a file"

Вместо использования cat вы можете использовать перенаправление:

$ printf '%b\n' "\"$(< testfile)\""
"this is a file"
1
27.01.2020, 21:27

espeak поддерживает использование - stdin для чтения из канала, поэтому один из вариантов - изменить вызов функции на используйте это вместо параметров и направьте вывод printf в свою функцию:

speak(){ espeak -a 200 -s 130 -v la --stdout --stdin | aplay; }
printf '%b\n' "$(cat joyPhrase)" | speak

Или вы можете передать вывод другой вашей команды в параметры speak , как это (хотя это с меньшей вероятностью сработает, если есть управляющие символы):

speak $(printf '%b\n' "$(cat joyPhrase)")
1
27.01.2020, 21:27

Теги

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