Следующий sed
сценарий предполагает, что разделителем полей является пробел. Если это табуляция, измените пробел в обеих командах s///
sed на \t
.
В первой строке добавлено id
, во второй и последующих строках добавлено $num
.
$ num=1
$ sed -e "1 s/$/ id/ ; 2,$ s/$/ $num/" input.txt
A B C D E id
2 79 56 SD L 1
1 09 67 JK S 1
9 60 37 KD G 1
0 10 47 SO E 1
Вам необходимо добавить сведения о соединении, например. для использования SSH --rsh=ssh
.
Попробуйте:
rsync -avzP --rsh=ssh username@ip.address:/public_html/abc/ /www/abc
И убедитесь, что пути указаны правильно. Являются ли эти пути абсолютными или относительными :/public_html/abc/
, /www/abc
?
Сначала убедитесь, что у пользователя ssh есть права на запись в эту папку,
/www/abc
выполните эту команду ниже
rsync -avzP -e ssh /www/abc user@destinationFolderPath
Примечание
СМИИВ
Ошибка возникает из-за того, что в удаленной системе нет каталога /public_html/abc
.
Согласно комментариям , исходный каталог фактически находится в домашнем каталоге пользователя, а не по пути /public_html
.
Поэтому:
rsync -avzP username@ip.address:public_html/abc/ /www/abc
Здесь мы обращаемся к public_html/abc
в домашнем каталоге пользователя, а не в корне файловой системы.
Предупреждение stdin: is not a tty
исходит из того факта, что файл запуска вашей оболочки для интерактивных оболочек вызывается на удаленном хосте (ваш файл ~/.bashrc
, если вы используете bash
), и вы что-то делаете в это то, что требует терминала.
Вы можете отредактировать файл запуска оболочки на удаленном компьютере и вставить следующее ближе к началу:
[ ! -t 0 ] && return
Это остановит выполнение, например. ~/.bashrc
в этот момент для всех сеансов оболочки, чьи стандартные входные потоки не подключены к терминалу.
При использовании урезанных образов Docker SSH не всегда устанавливается, что также приводит к этой ошибке:
apt-get install openssh-client