У меня есть скрипт, который запускает команду на удаленном сервере, используя SSH. Я хочу добавить строку Remote:
к каждой строке вывода, но я не хочу, чтобы каждая строка задерживалась до тех пор, пока не будет доступна вся строка. Вот вывод из моей команды:
$ myproject-db-push my_database_name Exporting from database... Done Archiving data... Done Uploading archive to remote... Done Running install script on remote Remote: Decompressing archive into temporary directory... Done Remote: Using database: my_database_name Remote: Dropping collections: Remote: - my_collection_foo Remote: - my_collection_bar Remote: Importing new data... Done
В этом случае я использую sed
следующим образом:
echo "$INSTALLCMD" | ssh -T "deploy@$SERVER" | sed -u "s/^/Remote: /"
Проблема, как я объяснил, в том, что на экран не выводятся частичные строки. Если я удалю | sed
часть, это работает, как ожидалось. Сначала это написано:
Importing new data...
И через несколько секунд строка завершается:
Importing new data... Done
Я предполагаю, что sed
может работать только построчно. Я попытался установить его в небуферизованный, но он все еще ждет целых строк. Есть ли другой способ сделать это?