Настройки прозрачности не являются частью tmux, вам нужно изменить profile preferences
с вашегоterminal
Edit > Profile preferences > Colors
снимите флажки Use transparency from system theme
и
проверитьUse transparent background
настроить уровень непрозрачности и все
Используйте env_parallel
из GNU Parallel.
Ваш код действительно трудно читать, и другим будет сложно его поддерживать. Будет проще, если он будет разбит на более мелкие функции, которые экспортируются на удаленные серверы.
env_parallel --session
servers() {
/swb/local/scripts/swdList -p SMARTS -a A5SV_2017.1b -e 1 --type=instance --function=SAM --priority=1 |
grep -v sis
}
doit() {
# Run this on every server
}
env_parallel --nonall --slf <(servers) doit
Я смог подавить желание плакать достаточно долго, чтобы свободно применить ;
к вашему сценарию, чтобы сделать его одной строкой:
Y= [...]; for X in `shell command $Y`; do echo "=== "$X" on "$Y" ==="; Z=`echo $X | awk -F\/ '{print $2}'`; for W in `shell command ${Z} awk -F\: '{print $3}'`; do echo -n $W; V=`shell command ${Z} ${W}`; echo -n ",V="$V; U=`shell command $Y`; echo -n ",T="$U; echo; done; echo; done
Также :это не сработает, хотя бы потому, что Y= [...]
недопустимая команда, но, возможно, и другие вещи.
Я бы посоветовал, несмотря на то, что я полностью согласен с комментариями под вашим постом, сначала написать то же самое как можно короче (кроме того, чтобы привыкнуть не использовать обратные кавычки, один символ, как правило, избавляет вас от многих проблем для более сложные/вложенные случаи подстановки команд ).
Y=[...]
for X in $(shell command $Y); do
echo ===\ $X\ on\ $Y\ ===
Z=$(echo $X | cut -d/ -f2)
for W in $(shell command $Z | cut -d: -f3); do
echo $W,V=$(shell command $Z $W),T=$(shell command $Y)
done
echo
done
Затем удалите все ненужные идентификаторы, заменив необходимые (=значимые )строки -разрывами запятой -двоеточия (+ пробел для удобства чтения ).
Y=[...]; for X in $(shell command $Y); do echo ===\ $X\ on\ $Y\ ===; Z=$(echo $X | cut -d/ -f2); for W in $(shell command $Z | cut -d: -f3); do echo $W,V=$(shell command $Z $W),T=$(shell command $Y); done; echo; done
Если Ваша цель сделать его как можно короче, Вы можете удалить все ненужные пробелы:
Y=[...];for X in $(shell command $Y);do echo ===\ $X\ on\ $Y\ ===;Z=$(echo $X|cut -d/ -f2);for W in $(shell command $Z|cut -d: -f3);do echo $W,V=$(shell command $Z $W),T=$(shell command $Y);done;echo;done
Или, если Вы хотите сделать это по-другому, Вы можете попробовать:
Y=[...];shell command $Y|xargs -n1 bash -c "echo ===\\ \$1\\ on\\ $Y\\ ===;Z=\$(echo \$1|cut -d/ -f2);shell command \$Z|cut -d: -f3|xargs -n1 bash -c \"echo \\\$1,V=\\\$(shell command \$Z \\\$1),T=\\\$(shell command $Y)\";echo"
или:
Y=[...];bash -c "for X in \$*;do echo ===\ \$X\ on\ \$*\ ===;bash -c \"for W in \\\$(shell command \\\$*|cut -d: -f3);do echo \\\$W,V=\\\$(shell command \\\$* \\\$W),T=\\\$(shell command $Y)\";echo\$(echo \$X|cut -d/ -f2)" $(shell command $Y)
Также вы можете оптимизировать $ (команду оболочки ), если это всегда одна и та же команда оболочки (, отпустите оболочку и просто напишите команду, не делайте из нее переменную раньше, например.:
Y=[...];C='shell command';for X in $($C $Y);do echo ===\ $X\ on\ $Y\ ===;Z=$(echo $X|cut -d/ -f2);for W in $($C $Z|cut -d: -f3);do echo $W,V=$($C $Z $W),T=$($C $Y);done;echo;done
Или даже:
Y=[...];C='shell command';E=echo;for X in $($C $Y);do $E ===\ $X\ on\ $Y\ ===;Z=$($E $X|cut -d/ -f2);for W in $($C $Z|cut -d: -f3);do $E $W,V=$($C $Z $W),T=$($C $Y);done;$E;done
Особенно последний выглядит очень технично, я думаю, что я предпочитаю его как одну -строку :-D