zoukankan      html  css  js  c++  java
  • 常用shell命令的写法

    这并不是教人怎么进行shell编程的文章,只是韦哥在工作中用到的一些简单脚本的写法。因为有些命令即使用过几次了,再次使用时仍然写不对,需要man来看下或者需要google,你也可以理解为对命令的理解不深造成,但韦哥懒得花精力去深究一些命令了,还不如在这里记下它们的用法,到需要再次使用时,打开自己博客进行程序猿们最擅长的ctrl+c操作就OK了。以后有更多积累时,会不断更新这篇文章。如要看更多组织结构良好内容更丰富的范例,推荐参考牛人吴章金的《Shell编程范例序列》。


    1. 找到文件iscsi.conf中字符串“<SCSIid>”所在的行号:


    line_num=`cat iscsi.conf|awk '/<SCSIid>/{print NR;}'`   # 所在行号
    line_num=$(($line_num+1))                                          # 下一行行号,这里加1的写法


    2. case分支写法,判断server_type是否为“master”或“slave”:


    case $server_type in
                

                "master")

                  ;;

               "slave")

                 ;;
              *)        # 相当于default,所有其它的情况
                   echo "Error server type"
                   exit 1
               ;;
    esac


    3. 往/etc/hosts文件中添加一行,至于干什么你应该知道了:


    sed -i "$ a 192.168.1.1 tftp_server" /etc/hosts


    4. 从服务器repo目录下载后缀名为.repo的文件,不下载其父目录的内容,下载后放在当前文件夹下,不创建新的文件夹:


    wget -r -nd --no-parent http://$tftp_server/repo/ -A repo


    5. 生成admin-openrc.sh文件并添加指定内容“export OS_USERNAME=admin”:


    cat >> admin-openrc.sh << EOF
    export OS_USERNAME=admin
    EOF


    6. 安装mariadb-server-5.5会弹框要求输入root密码,用脚本自动化安装,无需手动输入:


    debconf-set-selections <<< "mariadb-server-5.5 mysql-server/root_password password $MYSQL_PASS"

    debconf-set-selections <<< "mariadb-server-5.5 mysql-server/root_password_again password $MYSQL_PASS"
    apt-get -y install mariadb-server-5.5 python-mysqldb   # 这回不会弹框框了


    7. 将change_mysql_password.sql文件中的newpassword替换为MYSQL_PASS变量的内容,然后将该脚本文件导入mysql执行文件里面的命令:


    sed -i "s/newpassword/$MYSQL_PASS/g" ./change_mysql_password.sql

    debian_sys_pass=`cat /etc/mysql/debian.cnf |grep password|awk '{print $3}'|awk 'NR==1{print;}'`

    mysql -udebian-sys-maint -p"$debian_sys_pass" < change_mysql_password.sql


    8. 改变目录属性:


    chown -R swift:swift /etc/swift  # 递归将/etc/swift目录及子目录所属的用户和组改为swift
    chgrp swift /etc/swift                # 将/etc/swift目录所属组改为swift


    9. 获取eth0的MAC地址:


    HWADDR=$(/sbin/ifconfig eth0|egrep -o "([[:xdigit:]]{2}[:]){5}[[:xdigit:]]{2}")


    10. 判断传递给脚本的参数个数:


    if [ ! $# -eq 2 ]
      then
        echo "Two arguments needed!"
        exit
    fi


    11. 递归将当前目录下文件中字符串“old”替换为“new”:


    grep -rI old *|awk '{split($1, c,":");print c[1];}'|xargs sed -i "s/old/new/g"


    12. 判断是否为偶数:


    if (($index%2 != 0))
    then
    fi


    13. 去掉字符串str最后一个字符:


    str=`echo ${str%?}`


    14. 循环一个列表,MAC_LIST由多个行组成:


    for macaddr in $(echo $MAC_LIST | awk '{print;}')
    do
    done


    15. while循环:


    while [ $i -lt 3 ]  # 当i小于3时循环

    do

    done


    16. 设置当前进程及其子进程的IO优先级:


    ionice -c3 -p$$


    17. 判断字符串str为空:


    if [ -z "$str" ]

    then
    fi


    18. for循环:


    for ((i=1; i<10; i++))  # i小于10时循环
    do
    done


    19. 判断/dev/my_dev是否为块设备:


    if [ -b "/dev/my_dev" ]
    then
         break
    fi


    20. 将文件描述符9和文件/tmp/snapshot.lock关联起来:


    exec 9>/tmp/snapshot.lock


    21. 在文件/etc/rc.local文件第10行后添加“sleep 2”:


    sed -i '10a sleep 2' /etc/rc.local


    22. 判断/www/blank是否是一个目录:


    if [ ! -d /www/blank ]

    then 

    fi


    23. 删除文件/etc/rc.local中包含“firstboot_task.sh”字符串的行:


    sed -i '/firstboot_task.sh/d'  /etc/rc.local

  • 相关阅读:
    记录log中的16进制和ASCII码字符输出
    有效的沟通技巧
    时间的真谛
    目标设定与时间管理
    第四代时间管理
    什么是高效沟通
    error LNK1104: cannot open file 错误解决方案
    js压缩工具1.0界面绘制
    时间管理的定义与目的
    JArgs命令行选项解析>Java套件
  • 原文地址:https://www.cnblogs.com/woshiweige/p/4518425.html
Copyright © 2011-2022 走看看