Ничего неожиданного. Возврат каретки перемещает курсор в начало строки. grep
уже распечатал имя файла и номер строки, и содержимое соответствующей строки перезаписывает это (из-за возврата каретки до и после первого foo
в строке ).
Возврат каретки также может быть записан как\r
:
printf '\rfoo\rfoo\nfoo\n' >file
Будет создан файл с двумя строками. Первая строка будет дважды содержать слово foo
, но возврат каретки переместит курсор в начало строки. Если использовать cat
для просмотра этого файла, это будет выглядеть так, как будто в первой строке есть только один foo
.
Текущая задача — запустить одно приложение, которое проходит через VPN-клиент для доступа к сети, не затрагивая ничего другого, работающего на хосте, — может быть решена достаточно эффективно и гибко, запустив программу в контейнере Docker.
Докеру нужно научиться, но это удивительная технология, которую стоит изучать в долгосрочной перспективе.
На высоком уровне шаги будут:
Итак... Я печатал все более и более подробные инструкции, пока в конце концов не понял, что собираюсь закончить все это для практики, и в итоге создал образ Docker, который настраивает OpenVPN Client и запускает программное обеспечение для торрентов.
Это около 54 строк Dockerfile и сценариев оболочки. Если вы хотите попробовать и использовать его в качестве прототипа,он уже есть на GitHub: