А можете пояснить? Я не очень понял, в чем фундаментальное отличие для вас. > Нам надо поправить скрипт для 10 серверов из 100, > будем компилировать и хранить бинарники отдельно ? А со скриптами на питоне вы что делаете? Тоже делаете две разные версии одного и того же скрипта? Или обновляете один скрипт и раскатываете на все сервера? Тогда какая разница, на питоне или на голанге? А если версии питон-рантайма разные и библиотеки не совместимы? > А как отлаживать на сервере, где возникла проблема? Тут можно только предметно, мне кажется, обсуждать. Если на одном сервере проблема возникла, да еще такая, что надо отлаживать, а на остальных нет, то это всё очень разные сервера? При всём зоопарке, с которым приходилось иметь дело, в моей практике не было много случаев, чтобы сервер так сильно отличался, чтобы на нем одном из ста была проблема, требущая отладки на нём. Отличающиеся были, один Солярис 4 разных версий под две разные архитектуры чего стоил, но отладка на каком-то отдельном сервере это прям статистически маловероятно, если логгирование в скрипте нормально сделано. > тянуть туда компилятор golang со всеми зависимостями ? Ну, питон тоже не бесплатный так-то, просто его кто-то уже поставил как зависимость для чего-то, а вот дополнительные пакеты с библиотеками не факт, и вам их может понадобиться поставить. Как по мне, тут скорее вкусовщина, при прочих равных. Я лично просто сделал бы новую версию бинаря на голанге, закатал в пакет deb или rpm и обновил на серверах при необходимости из локальной репы. Если поведение должно отличаться, это проще регулировать через конфиги, чем через редактирование, потому что по идее основной функционал скрипта не меняется, иначе это уже не тот же скрипт. В плане управления конфигурациями, как мне кажется, будет проще. Или нет?
Смех смехом, а компьютерами и программированием я стал интересоваться как раз после тех выпусков Мурзилки в 1988, потом в 1990 у меня появился Спектрум. "И всё заверте..."
NZXT Function TKL c Hot-swappable Gateron Linear Red свитчами. Очень нравятся тактильные ощущения от печати, подсветкой не пользуюсь, потому что печатаю почти вслепую (правда, медленно, хехе). Может быть можно было бы уменьшить ход клавиши немного, чтобы уж совсем идеально. Кстати, может быть кто-нибудь посоветует свитчи с коротким ходом?
До этого была Logitech K350 Wave, задолбали стучащие клавиши, они очень громкие, не при печати, а просто потому, что на месте не держатся, не клавиатура, а погремушка. Поэтому на механику и сменил. И покупал я ее онлайн, не глядя, на картинке выглядела эргономично достаточно. В реальности оказалось, что кучу клавиш можно использовать только в винде с установленным софтом от логитека, плюс нестандартная раскладка практически всех неалфавитных клавиш, наподобие разбивки F1-F12 не по 4 клавиши на блок, а по 3, задолбался привыкать. Есть люди, которым она нравится, мне не подошла.
Звучит как мой Thinkpad T520, правда у меня i7-2620M искаропки. Если оно, то нет, 24 Гб запихать, похоже, не получится, я изучал вопрос (у меня несколько штук "старых" ноутов с максимальными для модели спеками), но zram и swapspace в сочетании с SSD уменьшают необходимость такого апгрейда, местами заметно.
И давно оно устоялось? Я 13+ лет в тестировании, не помню, чтобы вообще встречал такое выражение до этой статьи. Правда я на российском рынке не работал с 2016 года
И главная причина не время кодинга, а то что Bash c awk/grep быстро "упрутся", в то время как Python c его строками, срезами и словарями и pandas в одну дополнительную строку преодолеет пропасть между цветным текстом в консоли до web-микросервиса уровня офиса
А можно пример задачи, на которой эти два тула быстро упрутся? Без сарказма, мне как инженеру интересно.
Ну, и, если вам нужен был веб-микросервис уровня офиса, почему вы с шелл-скриптов начали? Изначально такой задачи не стояло, поэтому был выбран неподходящий инструмент, а потом решили развивать?
Ну, имеете право, не обязательно их любить. Я вот Убунту недолюбливаю и её производные :-D А фряха 4 ветки была отличная операционная система. Если бы порты под неё не устарели, я бы ее где-нибудь до сих пор использовал.
Это не задачи, это операции. Ну, выясните вы, что пустой цикл в, допустим, повершелле или арифметическое действие на 5 наносекунд быстрее, как вам это поможет? Вы будете это экстраполировать на всё остальное? Это какие-то тупые тесты, учитывая, насколько они нерелевантны практике реального использования.
А слова "модернизм", "классицизм", "импрессионизм" вас не смущают?
Башизм пошло совсем не от Дебиана. Вы в курсе вообще про юниксы и таймлайн Дебиана, баша, дэша, других командных оболочек? И про совместимость и миграцию скриптов? Или вы начали с Убунты и не интересовались историей? Если уж на то пошло, то Дебиан наоборот сделал очень многое для популяризации баша.
За 20 лет никто ни разу меня не называл башистом, ни единого раза, так что не придумывайте.
Могу из своего опыта навскидку сказать один сценарий, где может быть какая-то заметная разница - билд и деплой докер-контейнера с чем-то на *sh и с чем-то на PS. Контейнер с дотнетом и PS будет дольше собираться (если кэша слоёв нет) и дольше качаться для выполнения, потому что он просто больше по размеру. В остальных случаях не думаю, что будет настолько значительная разница в работе, чтобы это прям в глаза бросалось, накладные расходы в других местах. Билд, запуск тестов, работа вызываемых программ.
Чтобы протестировать производительность самих скриптов изолированно, надо много думать, чтобы выполнять одну и ту же задачу и там, и там. И тут может быть сложно, учитывая, что большинство более или менее сложных задач при использовании линуксовых шеллов выполняют другие программы (и именно так это и задумывалось), а PS может многое выполнять сам, потому что у него есть доступ к библиотекам дотнета. Всё может скатиться к сравнению библиотек с библиотеками, что никак не поможет сравнить именно скорость выполнения скриптов. Производительность скриптера для обоих вариантов при написании скриптов - субъективный фактор, у кого-то займет много времени, у кого-то мало, тут скорее вопрос опыта.
Именно так. Башизмов совсем немного, но в основном они довольно круто работают. У меня есть отличный пример
#!/bin/bash
# This script converts IP address and netmask from a network interface (e.g. 192.168.1.123 255.255.255.0)
# to a network address (e.g. 192.168.1.0/24) in pure bash without external programs.
if [ -z $1 ] || [ -z $2 ]; then echo -e "Usage: $0 <IP> <long-mask>\nExample: $0 192.168.1.14 255.255.255.0"; exit 1; fi
BARRAY=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})
BINARY_IP_ADDRESS=$(for octet in ${1//./ }; do echo -n ${BARRAY[octet]}; done)
BINARY_NETMASK=$(for octet in ${2//./ }; do echo -n ${BARRAY[octet]}; done)
BITS=${BINARY_NETMASK%%0*}
BITS_COUNT=${#BITS}
NETWORK_ADDRESS=${BINARY_IP_ADDRESS:0:BITS_COUNT}${BINARY_NETMASK:BITS_COUNT}
NEW_ADDRESS="${NETWORK_ADDRESS:0:8} ${NETWORK_ADDRESS:8:8} ${NETWORK_ADDRESS:16:8} ${NETWORK_ADDRESS:24:8}"
DECIMAL_ADDRESS=`echo $(for octet in $NEW_ADDRESS; do echo $((2#$octet)); done)`
DECIMAL_ADDRESS=${DECIMAL_ADDRESS// /.}
echo $DECIMAL_ADDRESS/$BITS_COUNT
Выглядит просто, все операции стандартные, описаны в документации, но написать такой скрипт без понимания того, что такое маска подсети, вряд ли получится, и именно эта, самая важная, часть к самому башу не имеет никакого отношения.
Я пишу на dash регулярно, который в принципе чисто шелл, без башизмов и удобств. Врать не буду, язык меньше, чем баш, ограничений больше, кода писать приходится больше, чтобы сделать то же самое, чаще использовать внешние программы, но отличается при всем этом не сильно.
Если бы любой человек мог поправить исходники ядра на си, не было бы справочников по UB. Хотя язык проще некуда (пока не начнете работать с динамической памятью, сетевыми сокетами, прерываниями, и так далее). И, честно говоря, хз, что бы я делал в повершелле без MSDN, я вроде человек неглупый, но он простой и понятный только когда ты его немного изучил и понял концепции, которые в него заложены при создании. Порог входа не нулевой и в ПШ, и в баше.
Баш — поистине эзотерический язык программирования. Сравнивать с ним простой и понятный PS1 просто странно.
Он не эзотерический, он просто язык сценариев командной оболочки, который работает с программами и командами как единицами исполнения кода (вместо библиотечных функций), и результатом их выполнения (а не язык программирования общего назначения). Грубо говоря, то, что вы можете сделать руками в командной оболочке, вы можете в той же последовательности записать в файл и выполнить, добавив условия, которые вы использовали в голове, когда работали с интерактивной оболочкой.
Статей пишут много потому, что никто не читает маны. Там расписано всё, многое с примерами и объяснениями. Возможно, он просто слишком большой для многих, и это пугает. Но там есть поиск. Опять же, есть внутренняя команда help, которая печатает полный список команд с кратким описанием, который не факт, что длиннее, чем в CMD (он же command.com из доса), и вы крайне редко будете использовать половину из них.
Несколько лет назад я преподавал линейку собственных курсов, которые логически проводили студентов к профессинальному баш-скриптингу. Это написание простых утилит для командной строки в Си, потом курс администрирования линукса по программе LPIC-1, и потом курс баш-скриптинга. Результаты были хорошие, потому что в итоге это всё складывается в одну картинку.
Хотя бы этот пример взять - переменная = (условие)?если-верно:если-неверно. Тут возвращается значение в переменную, потому что код оперирует значениями. "... && ... || ..." работает с кодами возврата и контролирует последующее выполнение (execution flow). Если вы развернёте оба варианта в if с переменными, станет сразу понятнее.
Смотрите:
int a = (b == 1) ? 0 : 1;
//-------------- ^------ значение
int a;
if (b == 1) {
a = 0;
} else {
a = 1;
}
# Пример, который сработает во многих шеллах
[ $b -eq 1 ] && a=0 || a=1
# ------------ ^-- операция целиком
if [ $b -eq 1 ]
then
a=0
else
a=1
fi
# --- второй пример
[ $b -eq 1 ]
result=$?
# переменная result содержит результат выполнения,
# в данном случае то, что при использовании
# оболочки, отличной от bash, будет скорее всего
# "return 0;" в методе int main() программы
# test/[
Ну и, если помнить, что точка с запятой отделяет команду или цепочку команд, то получается логично. Правильнее, естественно, будет как-то так - "... | (read; echo $REPLY)".
Просто другая парадигма. К ней не надо подходить как к языкам программирования общего назначения c сишным синтаксисом.
Я их тоже отлично знаю (не все, их реально много). Согласен, PowerShell крут, но у него под капотом считайте весь дотнет.
Может быть есть исключения, но, как по мне, все линуксовые шеллы создавались в первую очередь как "клей" для других команд/программ, а не как полный скриптовый язык управления системой. Они пытались быть универсальными и независимыми в первую очередь.
PowerShell это продукт другого класса, это практически отдельный язык программирования, естественно он будет на голову выше линуксовых шеллов (кстати говоря, сам PS под линуксом работает не хуже, чем под виндовс, у меня на нем кросс-платформенные пайплайны для кросс-платформенного кода на сишарпе). Там много удобств, мне тоже нравится, те же объекты в пайпах (напоминает мне стримы в джаве, но подозреваю, что там может быть просто Linq под капотом, исходники не читал), и насколько просто работать с JSON и писать REST API клиентов, но тащить все это ради десятистрочника я бы не стал. Если у меня контейнер со стабом SMTP сервера на баше (со всеми зависимостями) укладывается в 4.5-5 мегабайт, один дистрибутивный пакет PS для Дебиана больше 68 мегабайт, после установки еще больше.
Мощнее инструмент - больше ресурсов требуется для его использования. Практически все линуксовые шеллы предполагали малое использование ресурсов с самого начала, что места на диске, что зависимостей для работы, отсюда и ограниченные возможности. Я не думаю, что сравнивать PS с линуксовыми командными оболочками будет честно, у них изначально другая задача, более простая, они сильны настолько, насколько сильны программы, которые вы из них вызываете.
Выжимка: пять команд Linux для оптимизации рабочего процесса
mkdir со скобками одним махом создаёт несколько папок.
cd - быстро возвращается в предыдущий каталог.
touch с диапазоном чисел создаёт несколько файлов одновременно.
tail -f позволяет в реальном времени отслеживать изменения в логах.
history 5 вызывает последние команды для повторного выполнения.
Ну камон, коллега. Что из этого разделило вашу жизнь на "до" и "после"? Тут не стоит вопрос по поводу всех команд и всех флагов для этих команд. Вы можете очень просто запустить dash, попытаться выполнить все эти команды, посмотреть на результат и сделать выводы.
А загадка не для первого класса совсем, скорее для пятого со звездочкой, учитывая, что мало кто сходу берет во внимание, во что будет раскрываться "*" ДО передачи команды на выполнение, особенно с учетом пробелов в именах. Если файлов 100500, то после раскрытия командная строка может запросто превысить буфер командной строки. Тут если начинать эксперименты, то уж с "find . -maxdepth 1 -name 'img*.bin' -delete", и дальше смотреть, а не с раскрытия звездочки.
Опять же, это перевод. На оригинального автора никто не наехал, он про эти комментарии вообще не вкурсе, тут скорее комбинация кликбейтного заголовка и статьи низкого качества, которая непонятно что делает на хабре. Это вызывает некоторое недоумение.
Мысль интересная, спасибо. Я к ней вернусь позже, сейчас пишу маленький фреймворк для баша без вызова внешних команд, чтоб минимизировать внешние вызовы и максимизировать использование того, что там уже есть. Займет некоторое время.
А можете пояснить? Я не очень понял, в чем фундаментальное отличие для вас.
> Нам надо поправить скрипт для 10 серверов из 100,
> будем компилировать и хранить бинарники отдельно ?
А со скриптами на питоне вы что делаете? Тоже делаете две разные версии одного и того же скрипта? Или обновляете один скрипт и раскатываете на все сервера? Тогда какая разница, на питоне или на голанге? А если версии питон-рантайма разные и библиотеки не совместимы?
> А как отлаживать на сервере, где возникла проблема?
Тут можно только предметно, мне кажется, обсуждать. Если на одном сервере проблема возникла, да еще такая, что надо отлаживать, а на остальных нет, то это всё очень разные сервера? При всём зоопарке, с которым приходилось иметь дело, в моей практике не было много случаев, чтобы сервер так сильно отличался, чтобы на нем одном из ста была проблема, требущая отладки на нём. Отличающиеся были, один Солярис 4 разных версий под две разные архитектуры чего стоил, но отладка на каком-то отдельном сервере это прям статистически маловероятно, если логгирование в скрипте нормально сделано.
> тянуть туда компилятор golang со всеми зависимостями ?
Ну, питон тоже не бесплатный так-то, просто его кто-то уже поставил как зависимость для чего-то, а вот дополнительные пакеты с библиотеками не факт, и вам их может понадобиться поставить.
Как по мне, тут скорее вкусовщина, при прочих равных. Я лично просто сделал бы новую версию бинаря на голанге, закатал в пакет deb или rpm и обновил на серверах при необходимости из локальной репы. Если поведение должно отличаться, это проще регулировать через конфиги, чем через редактирование, потому что по идее основной функционал скрипта не меняется, иначе это уже не тот же скрипт. В плане управления конфигурациями, как мне кажется, будет проще. Или нет?
А в реальности медведь собирает малину в медведя
Смех смехом, а компьютерами и программированием я стал интересоваться как раз после тех выпусков Мурзилки в 1988, потом в 1990 у меня появился Спектрум. "И всё заверте..."
Ну дак в студию этот ряд тезисов. Или мы угадывать по одному должны?
NZXT Function TKL c Hot-swappable Gateron Linear Red свитчами. Очень нравятся тактильные ощущения от печати, подсветкой не пользуюсь, потому что печатаю почти вслепую (правда, медленно, хехе). Может быть можно было бы уменьшить ход клавиши немного, чтобы уж совсем идеально. Кстати, может быть кто-нибудь посоветует свитчи с коротким ходом?
До этого была Logitech K350 Wave, задолбали стучащие клавиши, они очень громкие, не при печати, а просто потому, что на месте не держатся, не клавиатура, а погремушка. Поэтому на механику и сменил. И покупал я ее онлайн, не глядя, на картинке выглядела эргономично достаточно. В реальности оказалось, что кучу клавиш можно использовать только в винде с установленным софтом от логитека, плюс нестандартная раскладка практически всех неалфавитных клавиш, наподобие разбивки F1-F12 не по 4 клавиши на блок, а по 3, задолбался привыкать. Есть люди, которым она нравится, мне не подошла.
Звучит как мой Thinkpad T520, правда у меня i7-2620M искаропки. Если оно, то нет, 24 Гб запихать, похоже, не получится, я изучал вопрос (у меня несколько штук "старых" ноутов с максимальными для модели спеками), но zram и swapspace в сочетании с SSD уменьшают необходимость такого апгрейда, местами заметно.
И давно оно устоялось? Я 13+ лет в тестировании, не помню, чтобы вообще встречал такое выражение до этой статьи. Правда я на российском рынке не работал с 2016 года
Я так понимаю, речь про sanity checks? Почему же тогда "санитарное"?
А можно пример задачи, на которой эти два тула быстро упрутся? Без сарказма, мне как инженеру интересно.
Ну, и, если вам нужен был веб-микросервис уровня офиса, почему вы с шелл-скриптов начали? Изначально такой задачи не стояло, поэтому был выбран неподходящий инструмент, а потом решили развивать?
Ну, имеете право, не обязательно их любить. Я вот Убунту недолюбливаю и её производные :-D А фряха 4 ветки была отличная операционная система. Если бы порты под неё не устарели, я бы ее где-нибудь до сих пор использовал.
Это не задачи, это операции. Ну, выясните вы, что пустой цикл в, допустим, повершелле или арифметическое действие на 5 наносекунд быстрее, как вам это поможет? Вы будете это экстраполировать на всё остальное? Это какие-то тупые тесты, учитывая, насколько они нерелевантны практике реального использования.
А слова "модернизм", "классицизм", "импрессионизм" вас не смущают?
Башизм пошло совсем не от Дебиана. Вы в курсе вообще про юниксы и таймлайн Дебиана, баша, дэша, других командных оболочек? И про совместимость и миграцию скриптов? Или вы начали с Убунты и не интересовались историей? Если уж на то пошло, то Дебиан наоборот сделал очень многое для популяризации баша.
За 20 лет никто ни разу меня не называл башистом, ни единого раза, так что не придумывайте.
Могу из своего опыта навскидку сказать один сценарий, где может быть какая-то заметная разница - билд и деплой докер-контейнера с чем-то на *sh и с чем-то на PS. Контейнер с дотнетом и PS будет дольше собираться (если кэша слоёв нет) и дольше качаться для выполнения, потому что он просто больше по размеру. В остальных случаях не думаю, что будет настолько значительная разница в работе, чтобы это прям в глаза бросалось, накладные расходы в других местах. Билд, запуск тестов, работа вызываемых программ.
Чтобы протестировать производительность самих скриптов изолированно, надо много думать, чтобы выполнять одну и ту же задачу и там, и там. И тут может быть сложно, учитывая, что большинство более или менее сложных задач при использовании линуксовых шеллов выполняют другие программы (и именно так это и задумывалось), а PS может многое выполнять сам, потому что у него есть доступ к библиотекам дотнета. Всё может скатиться к сравнению библиотек с библиотеками, что никак не поможет сравнить именно скорость выполнения скриптов. Производительность скриптера для обоих вариантов при написании скриптов - субъективный фактор, у кого-то займет много времени, у кого-то мало, тут скорее вопрос опыта.
Именно так. Башизмов совсем немного, но в основном они довольно круто работают. У меня есть отличный пример
Выглядит просто, все операции стандартные, описаны в документации, но написать такой скрипт без понимания того, что такое маска подсети, вряд ли получится, и именно эта, самая важная, часть к самому башу не имеет никакого отношения.
Я пишу на dash регулярно, который в принципе чисто шелл, без башизмов и удобств. Врать не буду, язык меньше, чем баш, ограничений больше, кода писать приходится больше, чтобы сделать то же самое, чаще использовать внешние программы, но отличается при всем этом не сильно.
Если бы любой человек мог поправить исходники ядра на си, не было бы справочников по UB. Хотя язык проще некуда (пока не начнете работать с динамической памятью, сетевыми сокетами, прерываниями, и так далее). И, честно говоря, хз, что бы я делал в повершелле без MSDN, я вроде человек неглупый, но он простой и понятный только когда ты его немного изучил и понял концепции, которые в него заложены при создании. Порог входа не нулевой и в ПШ, и в баше.
Он не эзотерический, он просто язык сценариев командной оболочки, который работает с программами и командами как единицами исполнения кода (вместо библиотечных функций), и результатом их выполнения (а не язык программирования общего назначения). Грубо говоря, то, что вы можете сделать руками в командной оболочке, вы можете в той же последовательности записать в файл и выполнить, добавив условия, которые вы использовали в голове, когда работали с интерактивной оболочкой.
Статей пишут много потому, что никто не читает маны. Там расписано всё, многое с примерами и объяснениями. Возможно, он просто слишком большой для многих, и это пугает. Но там есть поиск. Опять же, есть внутренняя команда help, которая печатает полный список команд с кратким описанием, который не факт, что длиннее, чем в CMD (он же command.com из доса), и вы крайне редко будете использовать половину из них.
Несколько лет назад я преподавал линейку собственных курсов, которые логически проводили студентов к профессинальному баш-скриптингу. Это написание простых утилит для командной строки в Си, потом курс администрирования линукса по программе LPIC-1, и потом курс баш-скриптинга. Результаты были хорошие, потому что в итоге это всё складывается в одну картинку.
Хотя бы этот пример взять - переменная = (условие)?если-верно:если-неверно. Тут возвращается значение в переменную, потому что код оперирует значениями. "... && ... || ..." работает с кодами возврата и контролирует последующее выполнение (execution flow). Если вы развернёте оба варианта в if с переменными, станет сразу понятнее.
Смотрите:
Ну и, если помнить, что точка с запятой отделяет команду или цепочку команд, то получается логично. Правильнее, естественно, будет как-то так - "... | (read; echo $REPLY)".
Просто другая парадигма. К ней не надо подходить как к языкам программирования общего назначения c сишным синтаксисом.
У этой статьи на момент написания этого коммента 94 плюса. Хммммммммммм....
Я их тоже отлично знаю (не все, их реально много). Согласен, PowerShell крут, но у него под капотом считайте весь дотнет.
Может быть есть исключения, но, как по мне, все линуксовые шеллы создавались в первую очередь как "клей" для других команд/программ, а не как полный скриптовый язык управления системой. Они пытались быть универсальными и независимыми в первую очередь.
PowerShell это продукт другого класса, это практически отдельный язык программирования, естественно он будет на голову выше линуксовых шеллов (кстати говоря, сам PS под линуксом работает не хуже, чем под виндовс, у меня на нем кросс-платформенные пайплайны для кросс-платформенного кода на сишарпе). Там много удобств, мне тоже нравится, те же объекты в пайпах (напоминает мне стримы в джаве, но подозреваю, что там может быть просто Linq под капотом, исходники не читал), и насколько просто работать с JSON и писать REST API клиентов, но тащить все это ради десятистрочника я бы не стал. Если у меня контейнер со стабом SMTP сервера на баше (со всеми зависимостями) укладывается в 4.5-5 мегабайт, один дистрибутивный пакет PS для Дебиана больше 68 мегабайт, после установки еще больше.
Мощнее инструмент - больше ресурсов требуется для его использования. Практически все линуксовые шеллы предполагали малое использование ресурсов с самого начала, что места на диске, что зависимостей для работы, отсюда и ограниченные возможности. Я не думаю, что сравнивать PS с линуксовыми командными оболочками будет честно, у них изначально другая задача, более простая, они сильны настолько, насколько сильны программы, которые вы из них вызываете.
Ну камон, коллега. Что из этого разделило вашу жизнь на "до" и "после"? Тут не стоит вопрос по поводу всех команд и всех флагов для этих команд. Вы можете очень просто запустить dash, попытаться выполнить все эти команды, посмотреть на результат и сделать выводы.
А загадка не для первого класса совсем, скорее для пятого со звездочкой, учитывая, что мало кто сходу берет во внимание, во что будет раскрываться "*" ДО передачи команды на выполнение, особенно с учетом пробелов в именах. Если файлов 100500, то после раскрытия командная строка может запросто превысить буфер командной строки. Тут если начинать эксперименты, то уж с "find . -maxdepth 1 -name 'img*.bin' -delete", и дальше смотреть, а не с раскрытия звездочки.
Опять же, это перевод. На оригинального автора никто не наехал, он про эти комментарии вообще не вкурсе, тут скорее комбинация кликбейтного заголовка и статьи низкого качества, которая непонятно что делает на хабре. Это вызывает некоторое недоумение.
Судя по всему, это перевод
Мысль интересная, спасибо. Я к ней вернусь позже, сейчас пишу маленький фреймворк для баша без вызова внешних команд, чтоб минимизировать внешние вызовы и максимизировать использование того, что там уже есть. Займет некоторое время.