Вы можете использовать два SED
выражений :
sed -e "s/\t/,/" -e "s/\t/-/" your_file
Похоже, это сработает:
ssh -t localhost "echo '. /dev/fd/2'|sudo bash -sil 2<<\FILE
PS1='my prompt : '
exec 2>/dev/tty
exec </dev/tty
FILE
"
[sudo] password for mikeserv:
my prompt : id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),19(log)
my prompt :
sudo
закроет все файловые дескрипторы, кроме 0,1,2 по умолчанию, и он хочет <& 0
на терминале для пароля, но вы можете часто украдкой с угоном stderr
. В любом случае, это не навсегда - практически первое, что я сделал выше, - это переподключил его к терминалу ssh
. Более реалистично у вас будет какой-то реальный скрипт, через который вы будете проходить, например $ (cat file)
, где мое определение $ PS1
и все остальное. Тем не менее, это раздражающее косвенное обращение; было бы лучше, я думаю, вместо этого обрабатывать эти вещи по мере необходимости в удаленных профилях.
sudo -i
запускает оболочку входа в систему в качестве целевого пользователя. Остальной экспорт PS1 ...
будет выполнен только после завершения работы этой оболочки.
Кроме того, ваш ~ / .bashrc
, скорее всего, переопределит PS1, и передача его в среду, вероятно, не поможет.
Вы можете попробовать:
ssh -t host 'sudo env PROMPT_COMMAND="PS1=\"Remote! \W: \"
unset PROMPT_COMMAND" bash -l'
(при условии, что целевой пользователь ~ / .bashrc
не устанавливает $ PROMPT_COMMAND
).