美文网首页X-linux
Linux---Day10 (08_01)

Linux---Day10 (08_01)

作者: 茶馆先生的马褂 | 来源:发表于2020-04-15 16:50 被阅读0次
    几个命令

    who show who is logged on
    w show who is logged on and what they are doing
    whoami
    last show listing of last logged in users 显示/var/log/wtmp文件,显示用户登录及系统重启历史 -n#: 显示最近#次的相关信息
    lastb /var/log/btmp文件 显示用户错误的登录尝试 lastb -n#:
    lastlog 显示每一个用户最近一次的成功登录信息;-u 指定用户名显示特定用户最近的登录信息
    basename 直接取文件名(路径基名) /etc/abc/me ; me; $0: 执行脚本路径及名称
    mail:发邮件
    hostname 显示当前主机的主机名
    ***如果当前主机的主机名为空,或者为none,或者为localhost,就将其改为www.magedu.com
    [ -zhostname-ohostname== '(none)' -ohostname=='localhost' ] && 'hostname www.magedu.com'

    生成随机数

    RANDOM : 0-32768
    echo $RANDOM
    随机数生成器:熵池
    /dev/random:
    /dev/urandom:
    ***写一个脚本生成10个随机数并找出最大值和最小值:

    #!/bin/bash
    #
    declare -i MAX = 0
    for I in {1..10}; do
      MYRAND=$RANDOM
      if [ $I -le 9 ];then
         echo -n "$MYRAND,"
      else
         echo "$MYRAND"
      fi
      [ $MYRAND -gt $MAX ] && MAX=$MYRAND
    done
    echo $MAX
    
    面向过程:
    1. 控制结构

    顺序结构



    选择结构

    if 单分支 双分支 多分支
    if CONDITION; then statement ... fi
    if CONDITION; then statement ... else statement ... fi
    if CONDITION1; then statement ... elif CONDITION2; then statement ... else statement ... fi
    case 语句:选择结构
    case SWITCH in
    value1)
    statement
    ...
    ;;
    value2)
    statement
    ...
    ;;
    *)
    statement...
    ;; 双分号结尾
    esac

    #!/bin/bash
    #
    case $1 in
    [0-9]) #中括号表示从这几个中选一个
    echo "A digit";;
    [a-z])
    echo "A lower";;
    [A-Z])
    echo "A upper";;
    *)
    echo "special character";;
    esac
    

    chmod +x case.sh
    ./case.sh A/ a/ 9/ %
    ***接收参数start, stop, restart, status

    #!/bin/bash
    #
    case $1 in 
    ‘start’)
    echo "start server ... ";;
    'stop')
    echo "stop server ... ";;
    'status')
    echo "Running ... ";;
    *)
    echo "`basename $0` {start | stop| restart | status}"
    esac
    

    ***写一个脚本,可以接受选项及参数,而后能获取每一个选项,及选项的参数,并能根据选项及参数做出特定的操作。比如:
    vim debug.sh

    #!/bin/bash
    #
    DEBUG = 0
    case $1 in
    -v | --verbose)
    DEBUG = 1;;
    *)
    echo "unknown options"
    exit 7
    ;;
    esac
    [ DEBUG -eq 1 ] && echo hello
    

    ***写一个脚本。。。比如:adminuser.sh --add tom, jerry --del tom, blair -v | --
    verbose -h | --help
    vim adminuser.sh

    #!/bin/bash
    #
    DEBUG=0
    ADD=0
    DEL=0
    case $1 in
    -v | --verbose)
    DEBUG=1
    shift;;
    -h| --help
    echo "usage :`basename $0` --add user_list -v | --verbose -h | --help"
    exit 0
    --add)
    ADD=1
    USERS=$2
    shift 2
    --del)
    DEL=1
    USERS=$2
    shift 2
    ;;
    *)
    echo "usage :`basename $0` --add user_list -v | --verbose -h | --help"
    exit 7
    esac
    

    脚本串写及调试

    #!/bin/bash
    #
    DEBUG=0
    ADD=0
    DEL=0
    
    for I in `seq 0 $#`; do
    if [ $# -gt 0 ]; then #判断$#是否大于0,大于则执行case语句($#表示参数的个数)
    case $1 in
    -v | --verbose
    DEBUG=1
    shift;;
    -h | --help)
    echo "Usage : `basename $0` --add USER_LIST --del USER_LIST -v | --verbose -h | --help"
    exit 0
    ;;
    --add)
    ADD=1
    ADDUSERS=$2
    shift 2
    ;;
    --del)
    DEL=1
    DELUSERS=$2
    shift 2
    ;;
    *)
    echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v | --verbose -h | --help"
    exit 7
    ;;
    esac
    fi
    done
    
    if [ $ADD -eq 1 ]; then
    for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do
    [ $DEBUG -eq 1 ] && echo "$USER exists."
    else
    useradd $USER
    [ $DEBUG -eq 1 ] && echo "Add user $USER finished"
    fi
    done
    fi
    

    shift命令每执行一次,变量的个数($#)减一



    循环结构

    终端类型

    console 控制台
    pty物理终端(VGA)
    tty#虚拟终端(VGA)
    ttyS#串行终端
    pts/#伪终端
    ***每隔5秒钟,查看hadoop用户是否登录,如登录,则显示其已登录,并退出:
    sleep delay for a specified amount of time
    sleep 2系统睡眠2秒

    相关文章

      网友评论

        本文标题:Linux---Day10 (08_01)

        本文链接:https://www.haomeiwen.com/subject/tbmlvhtx.html