и посмотреть медиа
Code on a Napkin - Python coding
и посмотреть медиа
Channel about programming in Python and other languages. Simple explanations and codes.
Channel about programming in Python and other languages. Simple explanations and codes.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Resource for those interested in programming. Focus on Python, but covers other topics as well. Simple examples and breakdowns.
Знаете ли вы, как потерять файл во время сортировки? Бывает, файл нужно отсортировать и оставить под тем же именем – строчка sort list.txt > list.txt выглядит как решение задачи. Но после нее в файле оказывается ноль строк, а прежнее содержимое взять негде. Причина в порядке действий: перенаправление отрабатывает раньше команды. Шелл открывает файл справа от > на запись, обрезает до нуля, и только потом стартует sort – читать ему уже нечего. printf "banana\napple\ncherry\n" > fruits.txt sort fruits.txt > fruits.txt wc -l < fruits.txt # 0 Никакой ошибки при этом нет: sort штатно отработал на пустом входе и штатно записал пустой результат. Файл существует, права на месте, код возврата 0 – пропали только данные. Обнуляет файл сам шелл, командой это не управляется: printf "INFO start\nDEBUG x=1\nINFO done\n" > app.log false > app.log wc -l < app.log # 0 false не читает и не пишет ничего, он просто завершается с ненулевым кодом – но лог уже пустой. То же самое произойдет с grep -v DEBUG app.log > app.log: попытка выкинуть отладочные строки из лога выкинет лог целиком. Правильный порядок – сначала полный результат, потом замена файла: printf "banana\napple\ncherry\n" > fruits.txt sort fruits.txt > tmp.txt && mv tmp.txt fruits.txt cat fruits.txt # apple # banana # cherry Временный файл разводит чтение и запись во времени, а && гарантирует, что подмена произойдет только при успешном завершении команды. У sort для этого есть и собственный ключ – sort -o fruits.txt fruits.txt. Он, как и sponge из moreutils, сначала читает вход целиком и только потом открывает выходной файл. Файл в правой части перенаправления обрезается до запуска команды, поэтому один и тот же файл не может быть входом и выходом одновременно. Результат сначала пишется рядом – во временный файл или через ключ вроде -o, – и только потом занимает место исходного. Код на салфетке × Кусочки кода
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!