Comments 16
пока не встретится файл, в имени которого есть перенос строки

Автор также не упоминает важный момент - если назвать файл rm -rf то в некоторых случаях могут произойти чудовищные недоразумения.
Так как очень немногие реализации
ls
позволяют завершать имена файлов символаи NUL
Какая интересная манипуляция... Стандартная ls
из coreutils в линуксе вполне это делает c флагом --zero
, а остальные ls
... Ну, в принципе их проблемы, если из принципа "главное не как у GNU" не делают фичи :)
А если вместо ls пользуются exa? Всё?
Всё-таки я иногда так сильно радуюсь, что в PowerShell реализован полноценный ООП. И на своих Linux'овых хостах я могу вызвать православный и так хорошо знакомый командлет Get-ChildItem
и работать с ним как с типичным объектом, перебирая его свойства и не заботясь ни о каком парсинге с учетом пробелов, каких-то там ещё символов и т. д. Работает, зарплаты не просит и не багует в типичных задачах администрирования. Всё, что не работает с PS напрямую и требует передать как строку, можно перемапить/перепайпить в строку. Легко и непринужденно.
Осталось только в вывод eza
, rg
, btop
, bat
завезти совместимость с PowerShell, и можно вообще отказаться от окружения Bash/Sh.
свят, свят :) лучше уж https://www.nushell.sh
Я тут недавно обнаружил, что у многих команд уже есть вывод в JSON. А его подружить с PowerShell уже несложно. Может и у этих есть?
Мде, я что-то в своих проектах файлы с переносами строк не учитывал. Даже как-то страшно стало. Вдруг раз, захочу создать файл с парой-тройкой переносов строк, а код сломается.
Мне такие файлы попадались. Подробности сейчас уже не вспомню, возможно, случайно такое получилось, но эффекты были странные. К счастью, разобрался довольно быстро и ничего, в итоге, не сломалось. Но бывает по-разному.
Я был уверен что кто-то с этим сталкивался XD И ты нашелся) Ох уж этот интернет)
Такой файл легко создать, можно копировать из браузера кусок текста с переносами (например, по ошибке, ведь копирование из браузера часто ад) и вставить в файловом менеджере. В зависимости от файлового менеджера поведение будет разным, кто-то перенос удалит (что плохо), кто-то ругнётся (что плохо, это не по стандарту ФС), а кто-то запишет с переносом.
Почему нельзя парсить вывод ls(1)