Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco
0 Пользователей и 1 Гость просматривают эту тему.
for i in {1..50} ; do echo $i ; cp file.bkp file && sync && cat file | grep PATTERN | tee file > /dev/null ; [ -s file ] || break ; done
for i in {1..50} ; do echo $i ; cp file.bkp file ; grep PATTERN file | (sleep 0.1 ; tee file >/dev/null); [ -s file ] || break ; done
файлопомойка с торентами на древнем компе
Интересное дело происходит))
command1 file | command2 ... | (sleep 0.1 ; cat > file)
Чем больше файл - тем больше задержка. В итоге, наверное, проще использовать промежуточный файл.
( sleep 0.3 ; grep PATTERN file ) | ( sleep 0.1 ; cat > file )
Похоже если в левой части команда не успеет открыть и прочитать ВЕСЬ файл за время задержки, то файл будет пустым или будут не все данные:
Rwt(){file="$1"[ "$file" ] || { echo 'Не указан файл для перезаписи.' ; return 1 ; } || return 1[ -f "$file" ] || { echo 'Не найден файл для перезаписи.' ; return 1 ; } || return 1tmp_file="$(mktemp -u --tmpdir="$PWD")": > "$tmp_file"[ -f "$tmp_file" ] || { echo 'Ошибка при создании временного файла.' ; return 1 ; } || return 1cat > "$tmp_file"mv "$tmp_file" "$file"}
command1 file | command2 ... | Rwt file
grep "ddd" f | Rwt f
grep 'pattern' <file_name> > /tmp/tmp_file; mv /tmp/tmp_file <file_name>
а не проще ли
grep 'pattern' f | Rwt f
Страница сгенерирована за 0.061 секунд. Запросов: 25.