Конечно, есть много способов сделать это, но почему вы хотите? Это то, что файл FSTAB
для .
Некоторые идеи:
). Основная проблема состоит в том, что SED
работает на строках , поэтому он ничего не делает до первого \ N
достигнут, и это не происходит, пока ваша команда не закончится. Вы можете обойти это путем обмена \ R
с \ N
:
$ curl --progress-bar http://127.0.0.1/test.tar.bz2 -o test.tar.bz2 2>&1 |
tr $'\r' $'\n' | sed -r 's/[# ]+/#/g;'
Это, однако, приводит вас к буферизации, SED
теперь будет действовать на группы строк. Окончательное решение, которое я взломал вместе, должен был перенаправить ошибку к файлу, а затем иметь дело с этим файлом:
$ curl --progress-bar http://127.0.0.1/test.tar.bz2 -o test.tar.bz2 2>er
$ while :; do
echo -ne "$(tr $'\r' $'\n' < er | tail -n 1 | sed -r 's/^[# ]+/#/;')\r";
done
команда выше, анализирует файл ошибки ( er
) и распечатать результат с помощью \ R
Создание его обновления постоянно. Вам нужно будет выйти из него вручную.
Предложение от анонимного пользователя: Вы также можете поставить STDBUF -OL
перед TR
и SED
, что модифицирует поведение буферизации команды.
Если somelink
является символической ссылкой на каталог somedir
, то
rsync -a somelink/. target/
копирует содержимое somedir
в target
.
Если у вас есть только относительные символические ссылки, которые остаются внутри источника, вы можете использовать
rsync -a --copy-unsafe-links somelink target/
Если вы хотите сохранить путь символической ссылки внутри цели, я не думаю, что то, что вы хотите сделать, можно сделать с помощью только rsync . Вы можете сделать это с помощью rsync плюс немного кода оболочки: перебрать источники и явно указать целевой подкаталог.
mkdir -p target/somelink
rsync -a somelink/. target/somelink