• L86.linux命令每日一练 -- 第12章 Linux系统常用内置命令(二)


    12.3.9 eval将参数当作命令执行

    ​ **范例12-13:**eval命令与单引号的特殊用法。

    [root@centos7 ~]# echo `hostname -I`	#想要在引号里面执行命令,需要用到反引号,也称为倒引号。
    10.0.0.201 10.0.0.2
    [root@centos7 ~]# echo '`hostname -I`'	#倒引号外层套单引号,单引号的作用是所见即所得,所以结果是`hostname -I`。
    `hostname -I`
    [root@centos7 ~]# eval echo '`hostname -I`'		#命令开头加一个eval命令,单引号失效了!因为evel命令可以优先解析或执行单引号内的变量或命令。
    10.0.0.201 10.0.0.2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    12.3.10 exit退出Shell命令行

    ​ **范例12-14:**退出Shell命令行。

    [root@centos7 ~]# exit	#退出Shell命令行可以使用exit命令,也可以使用Ctrl+d快捷键或logout命令。
    logout
    
    • 1
    • 2

    ​ **范例12-15:**退出脚本。

    [root@centos7 ~]# cp break.sh exit.sh
    [root@centos7 ~]# vim exit.sh 
    #!/bin/bash
    for((i=0;i<=5;i++))
    do
            if [ $i -eq 3 ] ;then
    exit	#一旦执行exit命令就会退出真个脚本,剩余的脚本内容也不会再执行。
            fi
            echo $i
    done
    echo "ok"
    :wq
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    ​ 脚本执行的结果如下:

    [root@centos7 ~]# bash exit.sh 
    0
    1
    2
    
    • 1
    • 2
    • 3
    • 4

    12.3.11 export查看或设置全局变量

    【功能说明】

    export命令用于查看或设置全局变量。

    【语法格式】

    export [选项]
    
    • 1

    【选项说明】

    ​ 表12-3针对该命令的参数选项进行了说明。

    ​ 表12-3 export命令的参数选项及说明
    在这里插入图片描述
    【使用范例】

    ​ **范例12-16:**查看全局变量。

    [root@centos7 ~]# export -p		#使用-p选项打印所有环境变量。
    declare -x HISTCONTROL="ignoredups"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="centos7"
    declare -x LANG="en_US.UTF-8"
    declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
    declare -x LOGNAME="root"
    declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
    declare -x MAIL="/var/spool/mail/root"
    declare -x OLDPWD
    declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
    declare -x PWD="/root"
    declare -x SELINUX_LEVEL_REQUESTED=""
    declare -x SELINUX_ROLE_REQUESTED=""
    declare -x SELINUX_USE_CURRENT_RANGE=""
    declare -x SHELL="/bin/bash"
    declare -x SHLVL="1"
    declare -x SSH_CLIENT="10.0.0.1 50943 22"
    declare -x SSH_CONNECTION="10.0.0.1 50943 10.0.0.201 22"
    declare -x SSH_TTY="/dev/pts/0"
    declare -x TERM="linux"
    declare -x USER="root"
    declare -x XDG_RUNTIME_DIR="/run/user/0"
    declare -x XDG_SESSION_ID="35"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    ​ **范例12-17:**设置全局变量。

    [root@centos7 ~]# export MYENV=7	#只有使用export命令设置的变量才是全局变量。
    [root@centos7 ~]# export -p |grep MYENV
    declare -x MYENV="7"
    
    • 1
    • 2
    • 3

    12.3.12 history查看命令历史记录

    【功能说明】

    ​ history命令用于查看所有执行命令的历史记录。

    【语法格式】

    history [选项]
    
    • 1

    【选项说明】

    ​ 表12-4针对该命令的参数选项进行了说明。

    ​ 表12-4 history命令的参数选项及说明
    在这里插入图片描述
    【使用范例】

    ​ **范例12-18:**查看命令的历史记录。

    [root@centos7 ~]# history 	#显示命令的所有历史记录。
        1  ip addr
        2  ping www.baidu.com
        3  nmtui
        4  systectl restart network
        5  systemctl restart network
    ...
      809  bash exit.sh 
      810  export -p
      811  export MYENV=7
      812  export -p |grep MYENV
      813  history 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    ​ 范例12-19:查看命令的最近10条历史记录。

    [root@centos7 ~]# history 10	#history命令接上数字n表示限制最近n条命令记录。
      805  eval echo '`hostname -I`'
      806  exit
      807  cp break.sh exit.sh
      808  vim exit.sh 
      809  bash exit.sh 
      810  export -p
      811  export MYENV=7
      812  export -p |grep MYENV
      813  history 
      814  history 10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    ​ **范例12-20:**删除指定命令的历史记录。

    [root@centos7 ~]# history |tail
      806  exit
      807  cp break.sh exit.sh
      808  vim exit.sh 
      809  bash exit.sh 
      810  export -p
      811  export MYENV=7
      812  export -p |grep MYENV
      813  history 
      814  history 10
      815  history |tail
    [root@centos7 ~]# history -d 810	#“history -d 历史命令序号”可以清楚指定序号的历史记录命令。
    [root@centos7 ~]# history |tail
      807  cp break.sh exit.sh
      808  vim exit.sh 
      809  bash exit.sh 
      810  export MYENV=7
      811  export -p |grep MYENV
      812  history 
      813  history 10
      814  history |tail
      815  history -d 810
      816  history |tail
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    ​ **范例12-21:**清楚所有的历史记录。

    [root@centos7 ~]# history -c	#使用-c选项清楚所有命令的历史记录。
    [root@centos7 ~]# history 
        1  history 
    
    • 1
    • 2
    • 3

    12.3.13 read交互式赋值变量

    【功能说明】

    ​ read命令会从标准输入中读取一行,并把输入行的每个字段的值都指定给Shell变量。

    【语法格式】

    read [选项] [变量名]
    
    • 1

    【选项说明】

    ​ 表12-5针对该命令的参数选项进行了说明。

    ​ 表12-5 read命令的参数选项及说明

    在这里插入图片描述
    【使用范例】

    ​ **范例12-22:**通过read命令交互式赋值变量。

    [root@centos7 ~]# read	#执行命令read,此时命令行等待输入。
    neteagle	#输入字符串。
    [root@centos7 ~]# echo $REPLY	#read得到的输入默认存储在变量REPLY中。
    neteagle
    [root@centos7 ~]# read one	#read后面接一个变量名,则输入的数据就会赋值给这个变量。
    01
    [root@centos7 ~]# echo $one
    01
    [root@centos7 ~]# read one two	#read后面可以接上多个变量名。
    n1 n2	#默认以空格作为分隔符,第一段n1赋值给第一个变量one,第二段n2赋值给第二个变量two。
    [root@centos7 ~]# echo $one
    n1
    [root@centos7 ~]# echo $two
    n2
    [root@centos7 ~]# read one two	
    m1 m2 m3	#若果输入的数据超过了变量的个数,那么最后所有的值都赋值给最后一个变量,m1赋值给变量one,“m2 m3”一起赋值给变量two。
    [root@centos7 ~]# echo $one
    m1
    [root@centos7 ~]# echo $two
    m2 m3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    ​ **范例12-23:**输出提示语句。

    [root@centos7 ~]# read -p "请输入你的年龄:" age	#age变量前面至少要有一个空格,使用-p参数可以定义显示在命令行中的提示语句,这样对用户比较友好。
    请输入你的年龄:18
    [root@centos7 ~]# echo $age
    18
    
    • 1
    • 2
    • 3
    • 4

    ​ **范例12-24:**命令等待输入超时时间。

    [root@centos7 ~]# read -t 3 -p "请输入你的年龄:" age	#使用-t参数指定等待的秒数,超过这个时间,命令自动终止。
    请输入你的年龄:[root@centos7 ~]# 
    
    • 1
    • 2

    ​ **范例12-25:**关闭回显

    ​ 选项-s能够使read命令中输入的数据不显示在屏幕上,比如密码(如果12-1所示)。
    在这里插入图片描述
    ​ 图12-1 不显示输入数据

    [root@centos7 ~]# read -p "请输入你的银行卡密码:" pass
    请输入你的银行卡密码:123456
    [root@centos7 ~]# read -s -p "请输入你的银行卡密码:" pass
    请输入你的银行卡密码:[root@centos7 ~]# 
    
    • 1
    • 2
    • 3
    • 4

    ​ **范例12-26:**设置输入字符的最大长度。

    [root@centos7 ~]# read -n 3 -p "只能输入3个字符,不信你试试:" num	#选项-n设置read命令所能输入字符的最大长度。当输入的字符数目达到预定值时,自动退出,并将输入的数据赋值给变量。
    只能输入3个字符,不信你试试:123[root@centos7 ~]# 
    [root@centos7 ~]# echo $num
    123
    
    • 1
    • 2
    • 3
    • 4

    12.3.14 type判断命令类型

    【功能说明】

    ​ type命令用于判断指定命令的类型。

    【语法格式】

    type [选项] [命令]
    
    • 1

    【选项说明】

    ​ 表12-6针对该命令的参数选项进行了说明。

    ​ 表12-6 type命令的参数选项及说明
    在这里插入图片描述
    【使用范例】

    ​ **范例12-27:**查看命令类型。

    [root@centos7 ~]# type ls	#未加任何参数,显示ls的最主要信息。
    ls is aliased to `ls --color=auto'
    [root@centos7 ~]# type -t ls	#精简显示命令类型为别名。
    alias
    [root@centos7 ~]# type -a ls	#显示所有相关信息。
    ls is aliased to `ls --color=auto'	#最先显示aliased。
    ls is /usr/bin/ls	#然后找到普通命令/usr/bin/ls。
    [root@centos7 ~]# type cd
    cd is a shell builtin	#显示为内置命令类型。
    [root@centos7 ~]# type -t cd
    builtin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    12.3.15 ulimit修改系统资源使用限制

    【功能说明】

    ​ ulimit命令用于查看系统资源的使用情况,同时也可以修改进程或用户等对系统资源分配的额度。

    【语法格式】

    ulimit [选项]
    
    • 1

    【选项说明】

    ​ 表12-7针对该命令的参数选项进行了说明。

    ​ 表12-7 ulimit命令的参数选项及说明
    在这里插入图片描述
    【使用范例】

    ​ **范例12-28:**显示当前所有系统资源使用限制。

    [root@centos7 ~]# ulimit -a
    core file size          (blocks, -c) 0	#core文件的最大值为100 blocks。
    data seg size           (kbytes, -d) unlimited	#进场的数据段可以任意大。
    scheduling priority             (-e) 0	#调度优先级。
    file size               (blocks, -f) unlimited	#文件可以任意大。
    pending signals                 (-i) 3806	#最多有7329个待处理的信号。
    max locked memory       (kbytes, -l) 64	#一个任务锁住的物理内存的最大值为64KB。
    max memory size         (kbytes, -m) unlimited	#一个任务的常驻物理内存的最大值。
    open files                      (-n) 1024	#一个任务最多可以同时打开1024的文件。
    pipe size            (512 bytes, -p) 8	#管道的最大空间为4096(512*8)字节。
    POSIX message queues     (bytes, -q) 819200	#POSIX的消息队列的最大值为819200字节。
    real-time priority              (-r) 0	#real-time调度优先级。
    stack size              (kbytes, -s) 8192	#进程栈的最大值为8192字节。
    cpu time               (seconds, -t) unlimited	#进程使用CPU时间。
    max user processes              (-u) 3806	#当前用户同时打开的进程(包括线程)的最大个数为3806。
    virtual memory          (kbytes, -v) unlimited	#没有限制进程的最大地址空间。
    file locks                      (-x) unlimited	#所能锁住的文件的最大个数没有限制。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    ​ **范例12-29:**加大服务器打开文件描述符的数量。

    [root@centos7 ~]# ulimit -n	#默认新系统的最大文件打开数1024(也叫文件描述符)为1024,这个值对于生产环境的服务器来说太小了,因此通常会在优化服务器环节把这个值调大。
    1024
    [root@centos7 ~]# ulimit -n 65535	#调整数量为65535,但是通过命令调整的只对当前窗口生效,因此需要修改配置文件。
    [root@centos7 ~]# ulimit -n
    65535
    [root@centos7 ~]# echo '* - nofile 65535' >>/etc/security/limits.conf 	#修改配置文件,永久生效。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    12.3.16 unset清空变量

    ​ **范例12-30:**清空变量。

    [root@centos7 ~]# export NETEAGLE=1
    [root@centos7 ~]# younggirl=2
    [root@centos7 ~]# echo $NETEAGLE $younggirl
    1 2
    [root@centos7 ~]# unset NETEAGLE younggirl	#unset命令可以清空变量的值。
    [root@centos7 ~]# echo $NETEAGLE $younggirl
    						#变量的值为空。
    [root@centos7 ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    SAP UI5 Gateway Export 和 Client Export 的比较
    监控易:IT基础资源监控的解决方案和价值
    Spire.PDF for .NET【文档操作】演示:设置 PDF 文档的 XMP 元数据
    xml文件(mybatis映射文件)中特殊字符转义
    PFSK151 3BSE018876R1/3BSC980006R358 有源滤波器和无源滤波器的区别
    Debezium系列之:MySQL创建具有binlog权限的用户
    在Vue中搭建前端监控日志
    SDV浪潮下,零束银河全栈解决方案量产研发与实践
    洛谷千题详解 | P1004 [NOIP2000 提高组] 方格取数【C++、Java、Pascal语言】
    ZCU102启动镜像(详细版)
  • 原文地址:https://blog.csdn.net/qq_25599925/article/details/126542501