Искусство программирования на языке сценариев командной оболочки




Программирование на языке сценариев командной оболочки - стр. 344


Порядок использования: fstr [-i] \"шаблон\" [\"шаблон_имени_файла\"] " while getopts :it opt do case "$opt" in i) case="-i " ;; *) echo "$usage"; return;; esac done shift $(( $OPTIND - 1 )) if [ "$#" -lt 1 ]; then echo "$usage" return; fi local SMSO=$(tput smso) local RMSO=$(tput rmso) find . -type f -name "${2:-*}" -print0 | xargs -0 grep -sn ${case} "$1" 2>&- | \ sed "s/$1/${SMSO}\0${RMSO}/gI" | more }

function cuttail() # удалить последние n строк в файле, по-умолчанию 10 { nlines=${2:-10} sed -n -e :a -e "1,${nlines}!{P;N;D;};N;ba" $1 }

function lowercase() # перевести имя файла в нижний регистр { for file ; do filename=${file##*/} case "$filename" in */*) dirname==${file%/*} ;; *) dirname=.;; esac nf=$(echo $filename | tr A-Z a-z) newname="${dirname}/${nf}" if [ "$nf" != "$filename" ]; then mv "$file" "$newname" echo "lowercase: $file --> $newname" else echo "lowercase: имя файла $file не было изменено." fi done }

function swap() # меняет 2 файла местами { local TMPFILE=tmp.$$ mv "$1" $TMPFILE mv "$2" "$1" mv $TMPFILE "$2" }

#----------------------------------- # Функции для работы с процессами/системой: #-----------------------------------

function my_ps() { ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ; } function pp() { my_ps f | awk '!/awk/ && $0~var' var=${1:-".*"} ; }

# Эта функция является грубым аналогом 'killall' в linux # но не эквивалентна (насколько я знаю) 'killall' в Solaris function killps() # "Прибить" процесс по его имени { local pid pname sig="-TERM" # сигнал, рассылаемый по-умолчанию if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then echo "Порядок использования: killps [-SIGNAL] шаблон_имени_процесса" return; fi if [ $# = 2 ]; then sig=$1 ; fi for pid in $(my_ps| awk '!/awk/ && $0~pat { print $1 }' pat=${!#} ) ; do pname=$(my_ps | awk '$1~var { print $5 }' var=$pid ) if ask "Послать сигнал $sig процессу $pid <$pname>?" then kill $sig $pid fi done }




Содержание  Назад  Вперед