当前位置 博文首页 > linux中常用脚本和函数分享

    linux中常用脚本和函数分享

    作者:admin 时间:2021-02-08 12:21

    #查找当前目录中是否存在指定目录,若不存在,则创建之

    复制代码 代码如下:

    function mkdir_1
    {
      if test ! -d $1
        then
         mkdir $1
      fi
    }

    #指定文件中的"prefix = .*"串替换为"prefix=/home/gnome-unicore-install2/usr/"
    #可以用来作为sed用法的参考
    复制代码 代码如下:

    function modify_prefix
    {
       chmod +w $1
       cp $1 $1.bak
       sed 's/prefix = .*/prefix=/home/gnome-unicore-install2/usr/g' $1.bak > $1
       rm $1.bak
    }

    #指定文件中的"^LDFLAGS =.*"串替换为"LDFLAGS = -rdynamic -lgdk_pixbuf -lgtk -lgdk -lgmodule -lglib -ldl -lXext -lX11 -lm"
    复制代码 代码如下:

    #change_gnome-config FILENAME
    function change_gnome-config
    {
       cp $1 $1.bak
       sed 's/^LDFLAGS =.*/LDFLAGS = -rdynamic -lgdk_pixbuf -lgtk -lgdk -lgmodule -lglib -ldl -lXext -lX11 -lm /g' $1.bak> $1    
       rm $1.bak
    }

    #删除指定文件的含有指定字符的行
    #格式:delete_line filename "word_contain"
    复制代码 代码如下:

    function delete_line
    {
       chmod +w $1
       cp $1 $1.bak
       cat $1.bak | grep -v -e "$2" >$1      
    }

    #用途:删除文件中包含line1或(和?)line2的行
    #格式:delete_line filename line1 line2
    复制代码 代码如下:

    function delete_line_no
    {
       chmod +w $1
       cp $1 $1.bak
       sed  $2,$3'd' $1.bak>$1
       rm $1.bak

    }


    #用途:在LINE_NO指定的行插入字符串CONTENT
    #可以用来作为sed用法的参考
    #格式: add_line FILENAME LINE_NO CONTENT
    复制代码 代码如下:

    function add_line
    {
        chmod +w $1
        cp $1 $1.bak
        sed -e $2 'i' "$3" '' $1.bak > $1
        rm $1.bak
    }

    #用途:检查含有"PC24"代码的程序并打印出来
    #格式: check_PC24 //after installation 
    复制代码 代码如下:

    function check_PC24
    {
      echo "now comes the PC24 checking..."
      . $COMMAND_UNICORE/shell/shell_PC24 >& /dev/null
      if test -s $COMMAND_UNICORE/PC24_result
         then :
           echo "The following file contains PC24 problems: $COMMAND_UNICORE/PC24_result "
         else
           echo "No PC24 problem found"
      fi
    }

    #打印标题
    复制代码 代码如下:

    displayheader() {
        echo "   *****************************************"
        echo "   *         IeeeCC754 testing tool           *"
        echo "   *****************************************"
        echo " "
    }

    #打印一个菜单的做法
    复制代码 代码如下:

    displayplatformmenu() {
        #clear the screen
        clear
        displayheader
        echo "   a) SunSparc "
        echo "   b) IntelPentium "
        echo "   c) AMD "
        echo "   d) Unicore32 "
        echo "   e) Unicore32(with FP2001) "
        echo " "
        echo  -n "   select a Platform > "
    }

    #接收一个菜单输入
    复制代码 代码如下:

    displayplatformmenu
    read answer
    case ${answer} in
          a) TARGET="BasicOp";;
          b) TARGET="Conversion";;
          *) badchoice;;
    esac

    #查找当前目录下是否存在file_name文件
    #可以用来作为if用法的参考
    复制代码 代码如下:

    detectfile_name() {
      if [ ! -f file_name ]
         then
         echo "Error: file_name does not exist.  Please check"
         exit 1;
        else
          echo "OK,the directy is exist"
      fi
    }

    #将参数指定的一个或多个目录项以及其下的多级子目录下的所有文件名和目录名转换为小写。
    复制代码 代码如下:

    cvitem()
    {
    echo "mv $1 `dirname $1`/`basename $1 | tr
    'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`"
    }
    [ $# = 0 ] && { echo "Usage: lcdir item1 item2 ..."; exit; }
    for item in $*     #可以用来作为for用法的参考
    do
    [ "`dirname $item`" != "`basename $item`" ] && {
    [ -d $item ] &&
    {
    for subitem in `ls $item`
    do
    cvlc $item/$subitem
    done
    }
    cvitem $item
    }
    done

    #一个login的例子
    复制代码 代码如下:

    if ($?path) then
    set path=($HOME/bin $path)
    else
    set path=($HOME/bin /usr/bin .)
    endif
    if ( ! $ {?DT} ); then
    stty dec new
    tset -I -Q
    endif
    set mail=/usr/spool/mail/$USER

    #关于if使用的几个例子
    #执行一个命令或程序之前,先检查该命令是否存在,然後才执行
    复制代码 代码如下:

    if [ -x /sbin/quotaon ] ; then
    echo "Turning on Quota for root filesystem"
    /sbin/quotaon /
    fi

    #得到Hostname
    #!/bin/sh
    复制代码 代码如下:

    if [ -f /etc/HOSTNAME ] ; then
    HOSTNAME=`cat /etc/HOSTNAME`
    else
    HOSTNAME=localhost
    fi

    #如果某个设定档允许有好几个位置的话,例如crontab,可利用if then elif fi来找寻
    复制代码 代码如下:

    if [ -f /etc/crontab ] ; then #[ -f /etc/crontab ]等价于test -f /etc/crontab
    CRONTAB="/etc/crontab"
    elif [ -f /var/spool/cron/crontabs/root ] ; then
    CRONTAB="/var/spool/cron/crontabs/root"
    elif [ -f /var/cron/tabs/root ] ; then
    CRONTAB="/var/cron/tabs/root"
    fi
    export CRONTAB

    #利用uname来判断目前系统,并分别做各系统状况不同的事。
    复制代码 代码如下:

    SYSTEM=`uname -s`
    if [ $SYSTEM = "Linux" ] ; then
    echo "Linux"
    elif [ $SYSTEM = "FreeBSD" ] ; then
    echo "FreeBSD"
    elif [ $SYSTEM = "Solaris" ] ; then
    echo "Solaris"
    else
    echo "What?"
    fi

    #关于while使用的例子
    #无条件循环
    复制代码 代码如下:

    while : ; do
    echo "do something forever here"
    sleep 5
    done

    js
    下一篇:没有了