Как я могу передать stdout по каналу к другой программе?

Вы смогли находить старую версию того же файла даже после размонтирования его, как файловая система должна не обязательно хранить новый файл в том же месте. Таким образом, новый файл не обязательно перезаписывает старый, если он хранится в другом свободном месте.

Изменения, которые Вы вносите в файловой системе, сразу не записаны в диск из-за причин производительности. Почему заставляют программы ожидать, пока файл не был на самом деле физически выписан полностью, когда у Вас может точно также быть ОС, делают это в фоновом режиме? Иногда это асинхронное поведение может даже сохранить записи в целом, такой как тогда, когда файл удален или сразу перезаписан после создания это никогда не должно было физически храниться во-первых.

Можно отключить то поведение для большинства файловых систем с помощью sync смонтируйте опцию. Существует также sync команда, которая вынуждает данные быть записанными в диск без umounting.

Вы никогда не должны получать доступ к необработанным данным файловых систем все же. Если Вы имеете смонтированный/dev/sdb1 и затем используете другую машину для монтирования той же самой файловой системы (по сетевому блочному устройству или безотносительно), таким образом, две системных работы с теми же данными файловой системы одновременно, Вы закончите с повреждением. Только специальные (кластерные) файловые системы прокладывают себе путь; для всех других Вам нужна сетевая файловая система (где только одна машина монтирует диск и выставляет его файлы прозрачно по сети).

6
23.07.2014, 07:43
2 ответа

xargs - это утилита unix, которую я искал. Из man-страницы:

утилита xargs считывает из стандартного входного текста строки, разделенные пробелами, табуляциями, новой строкой и концом файла, и выполняет утилиту со строками в качестве аргументов.

Любые аргументы, указанные в командной строке, передаются утилите при каждом вызове, за ними следует некоторое количество аргументов, считанных со стандартного входа
 ксарги. Утилита многократно выполняется до тех пор, пока не будет исчерпан стандартный вход.

Итак, решение моего первоначального вопроса:

git diff --diff-filter=M --name-only develop | grep coffee$ | xargs ./node_modules/.bin/coffeelint
1
27.01.2020, 20:30

Просто пропустите через некоторое время цикл:

git diff --name-only develop | grep coffee$ | while IFS= read -r file; do
    ./node_modules/.bin/coffeelint "$file"
done
2
27.01.2020, 20:30

Теги

Похожие вопросы