Castro-Fidel / PortWINE

MIT License
488 stars 35 forks source link

Added lsbash with grep #426

Closed Htylol closed 2 weeks ago

Htylol commented 2 weeks ago

Создал mega_bash_func. Цель создании функции заменить ls команду на неё в скриптах , так же она умеет работать уже с переменными. Данная функция быстрее ls в 30 раз. Пока умеет делать grep и sed реализованном на bash. PORTPROTON_NAME="${PORTPROTON_NAME//(`|\"|\'|!)/}" использовал здесь, bash не умеет так делать, чтобы (`|\"|\'|!) сразу заменить (на zsh работает, перепутал) и заменил на функцию которая умеет это делать В будущем планирую добавить ещё аргументы. Для sed -r есть, для grep -i

Передел в lsbash, с sed mega_bash_func работает по времени так же, как и с нативным sed, но grep в 10 раз быстрее.

2162 milliseconds this ls / | grep usr 268 milliseconds this lsbash / --grep usr

1405 milliseconds this ls / 308 milliseconds this lsbash /

Это в цикле на 1000 повторений

Попробовал сделать grepbash, чтобы не --grep был, но такой вариант через pipe работает медленее, чем ls grep

Добавил grep -v, так же некоторые массивы из IFS=' ' read -r -a PW_AMOUNT_OLD_DESKTOP <<< "${PW_AMOUNT_OLD_DESKTOP[*]} $AMOUNT_GENERATE_BUTTONS" переделал в PW_AMOUNT_OLD_DESKTOP+=("$AMOUNT_GENERATE_BUTTONS"), в цикле можно так использовать, главное чтобы отдельные элементы были в внутри (), в двойных ковычках, вне цикла лучше через read -r -a

с grep -v результат такой 2326 milliseconds this ls / | grep l | grep -v 64 605 milliseconds this lsbash / --grep l --grep -v 64

переделал место с for ai_sort in $AI_TOP_GAMES ; do чтобы spellcheck не ругался

Убрал лишние IFS и в местах, где возможно < <(), заменил этим <<<. < <() работает %на 20-30 быстрее