鸟哥的linux私房菜学习笔记《二十一》变量及环境变量详解

来源:互联网 发布:猎豹浏览器精简优化版 编辑:程序博客网 时间:2024/06/06 04:32
  1. 显示变量

    root@Ubuntu:~# echo $变量名 或者 ${变量名}root@Ubuntu:~# echo $PATHroot@Ubuntu:~# echo ${PATH}root@Ubuntu:~# echo $HOMEroot@Ubuntu:~# echo ${HOME}
  2. 设置变量

    root@Ubuntu:~# echo $myname# 为空,下面设置:root@Ubuntu:~# myname=kevinroot@Ubuntu:~# echo $myname# 设置完成
  3. 变量的规则:
    字符串需要用单/双引号括起来
    用转义字符可以将特殊字符转义
    为变量增加内容:”PATH”=”$PATH”:/home/bin”
    单引号`表示先执行,然后取执行结果
    设置成环境变量:export 变量名
    取消环境变量:unset 变量名
    通常大写表示环境变量,小写是普通变量

    # 在PATH变量中累加/home/dmtsai/bin:(以下都可以)root@Ubuntu:~# PATH=$PATH:/home/dmtsai/binroot@Ubuntu:~# PATH="$PATH":/home/dmtsai/binroot@Ubuntu:~# PATH=${PATH}:/home/dmtsai/bin# 将name内容多出来yes:($可以理解为取变量的内容)root@Ubuntu:~# name=$name"yesroot@Ubuntu:~# name=${name}yes# 设置环境变量:root@Ubuntu:~# export name# 取消环境变量:root@Ubuntu:~# unset name# 进入内核的子进程(先执行uname -r命令,后执行cd命令)root@Ubuntu:~# cd /lib/modules/`uname -r`/kernelroot@Ubuntu:~# cd /lib/modules/$(uname -r)/kernel# 单引号只识别为字符,双引号可识别特殊符号root@Ubuntu:~# name=kevinroot@Ubuntu:~# echo $namekevinroot@Ubuntu:~# myname="$name its me"root@Ubuntu:~# echo $mynamekevin its meroot@Ubuntu:~# name='$name its me'root@Ubuntu:~# echo $myname$name its meroot@Ubuntu:~# 
  4. env:查看环境变量与常见环境变量说明

    [root@CentOS ~]# env

    环境变量随机数RANDOM其实是/dev/random这个文件,会随机产生0~32767之间的数

    [root@CentOS ~]# declare -i number=$RANDOM*10/32768   [root@CentOS ~]# echo $number
  5. set:查看所有变量(含有环境变量和自定义变量)

    [root@CentOS ~]# setHISTFILE=/root/.bash_history# 历史命令记录的配置文件HISTFILESIZE=1000# 保存的历史命令的最大数量HISTSIZE=1000# 目前环境下可记录的历史命令数量MAILCHECK=60# 60秒扫描一次邮箱PS1='[\u@\h \W]\$ '# 命令提示符的前面PS2='> '# 如果使用转义字符,第二行以后的字符也会显示出来$# 目前这个shell所使用的的PID?# 刚才执行完吗,命令的回传码
  6. PS1:(提示符的设置)

    # 在set里# 查询相关说明:root@CentOS ~]# man bash\d:显示星期月日\H:完整主机名\h:取主机名第一个小数点前面的\t:显示时间,24小时制\T:显示时间,12小时制
  7. 变量内容的删除、替换
    这里写图片描述
    变量内容删除:

    # 从前往后删除PATH中的符合 “/*kerberos/bin:” 这个条件的最短字符串[root@CentOS ~]# echo ${PATH#/*kerberos/bin:}# 从前往后删除PATH中的符合 “/*kerberos/bin:” 这个条件的最长字符串[root@CentOS ~]# echo ${PATH##/*kerberos/bin:}# 详解:${PATH##/*kerberos/bin:}:匹配“/*kerberos/bin:”${。。。#。。。}:从前往后删除符合条件的最短项${。。。##。。。}:从前往后删除符合条件的最长项
    # 从后往前删除PATH中的符合 “:*bin” 这个条件的最短字符串[root@CentOS ~]# echo ${PATH%:*bin}# 从后往前删除PATH中的符合 “:*bin” 这个条件的最长字符串[root@CentOS ~]# echo ${PATH%%:*bin}# 详解:${PATH%%:*bin}:匹配 “:*bin”${。。。%。。。}:从后往前删除符合条件的最短项${。。。%%。。。}:从后往前后删除符合条件的最短项

    例子:

    # 删除MAIL的/var/spool/mail/root中,“root”前的# 从前往后匹配“/*/”最长为“/var/spool/mail/”[root@CentOS ~]# echo ${MAIL##/*/}# 删除MAIL的/var/spool/mail/root中的“/root”# 从后往前匹配“/*”最短为“/root”[root@CentOS ~]# echo ${MAIL%/*}

    命令内容替换:

    # 将PATH中第一个“sbin”替换为“SBIN”:[root@CentOS ~]# echo ${PATH/sbin/SBIN}# 将PATH中所有“sbin”替换为“SBIN”:[root@CentOS ~]# echo ${PATH//sbin/SBIN}# 详解:${PATH/sbin/SBIN}:匹配“sbin”${PATH/。。。/。。。}:将第一个符合匹配条件的内容替换${PATH//。。。/。。。}:将所有符合匹配条件的内容替换

    变量的测试及替换:
    这里写图片描述

    # 如果oldname存在值,则newname=oldname,如果oldname不存在值,则newname=root[root@CentOS ~]# newname=${oldname-root}详解:newname${oldname-content}:匹配oldname。。。${。。。-。。。}:存在就赋值旧的,不存在就赋值新的
    # 如果oldname存在值,则newname=oldname,如果oldname不存在值或为空字符串,则newname=root[root@CentOS ~]# newname=${oldname:-root}详解:newname${oldname:-content}:匹配oldname。。。${。。。:-。。。}:存在就赋值旧的,不存在或为空就赋值新的
    # 如果oldname存在值,则newname=oldname,如果oldname不存在值,则newname=root并且oldname=root[root@CentOS ~]# newname=${oldname=root}详解:newname${oldname=content}:匹配oldname。。。${。。。=。。。}:存在就赋值旧的,不存在就都赋值新的
    # 如果oldname存在值,则newname=oldname,如果oldname不存在值,则输出错误消息“root”[root@CentOS ~]# newname=${oldname?root}详解:newname${oldname?content}:匹配oldname,错误消息是content。。。${。。。=。。。}:存在就赋值旧的,不存在就输出错误消息
0 0
原创粉丝点击