> find ./ -name pkg-descr | xargs rm
Опять? find ./ -name pkg-descr -exec rm {} +
Пусть автор откроет для себя -exec <cmd> {} +, а то, не бось, знает только о -exec <cmd> {} \;
> 4. Ускорить grep
> Если вы ищите какую-то строку в больший объемах данных при помощи grep, то стоит использовать fgrep
> который позволяет искать только вхождения строк, а не регулярных выражений но и работает быстрее на
> 10-20%.
Еще больше тормозов добавляют regexp'ы, если использовать конструкцию со скобками \(smth\).
> 6. Чтоб не дать команде выводить что-либо на экран
> Можно использовать перенаправление стандартного вывода и стандартного потока ошибок в /dev/null
> ping -c foo.bar > /dev/null 2>/dev/null
> После этого уже можно проверять код завершения этой программы.
Еще можно использовать >&- 2>&-. Такой способ просто закроет file descriptor'ы. Это более правильный способ, но работает, к сожалению, не со всеми программами.
> kill -9 'ps -ax | grep PROCESS_NAME | grep -v grep | cut -c1-5'
А вот и автор пропалился о своем не ведении о команде pkill(1) и использовании SIGKILL для завершения работы программы, не говоря уже о том, что можно использовать один regexp вместо двух инкарнаций grep(1). Из списка можно еще удалить cut(1) и заменить всю конструкцию на
ps -ax -opid= -ocomm= | awk '/PROCESS_NAME/ { print $1 }' | xargs kill
или
pkill PROCESS_NAME
ps, Вот еще интересная ссылка: http://partmaps.org/era/unix/award.html
Там рассказывается какие ошибки часто совершают новички и копипастеры при составлении скриптов на shell.
И пара таких ошибок есть в этой заметке в LJ.
|