É mais fácil se você espalhar um pouco:
watch -ben5 '
lsof /mnt/unfs &&
ps -o tty= -p "$(lsof -F p0 /mnt/unfs | sed -e "s/p//")" |
xargs -I terms sudo sh -c '\''
printf "\n[97;101m%s[31;49m%s[97;101m%s[39;49m\n" \
"GET OUT OF UNFS" " cd ~ " "NOW!" >/dev/terms'\'''
É muito difícil para mim entender exatamente o que está acontecendo aqui. Mas se você quiser colocar isso em um alias, é bem simples: basta adicionar outro '
. Aqui está um truque:
alias myalias="$(cat <<\IN
watch -ben5 '
lsof /mnt/unfs &&
ps -o tty= -p "$(lsof -F p0 /mnt/unfs | sed -e "s/p//")" |
xargs -I terms sudo sh -c '\''
printf "\n[97;101m%s[31;49m%s[97;101m%s[39;49m\n" \
"GET OUT OF UNFS" " cd ~ " "NOW!" >/dev/terms'\'''
IN
)"
O documento aqui é outra forma de citação shell. E todas as citações podem estar contidas em hardquotes, exceto em hardquotes. Então você pode ir a tantos níveis quanto quiser, encontrando todas as ocorrências de um disco rígido e escapando dele. Com isso quero dizer transformar cada '
em '\''
. Depois de fazer isso, você pode envolver a instrução inteira em outra camada de aspas. E, de fato, alias
faz isso para você:
alias myalias
myalias=' watch -ben5 '\''
lsof /mnt/unfs &&
ps -o tty= -p "$(lsof -F p0 /mnt/unfs | sed -e "s/p//")" |
xargs -I terms sudo sh -c '\''\'\'\''
printf "\n[97;101m%s[31;49m%s[97;101m%s[39;49m\n" \
"GET OUT OF UNFS" " cd ~ " "NOW!" >/dev/terms'\''\'\'\'\'