linux中的变量与别名
变量
变量是什么?
一句话概括:变量是用来临时保存数据的,该数据是可以变化的数据。
什么时候需要定义变量?
- 如果某个内容需要多次使用,并且在代码中 重复出现 ,那么可以用变量代表该内容。这样在修改内容的时候,仅仅需要修改变量的值。
- 在代码运作的过程中,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。
变量如何定义?
变量名=变量值
变量名:用来临时保存数据的
变量值:就是临时的可变化的数据
1 | [root@MissHou ~]# A=hello 定义变量A |
参看全部变量名
set
只能查看环境变量
env
查看设置了变量名对应的值(type + 变量名)
type key
删除变量(unset + 变量名)
unset key
常用的变量名
1 | HISTFILESIZE:记录历史指令保存的最大值。 |
变量的定义规则
虽然可以给变量(变量名)赋予任何值;但是,对于变量名也是要求的!:unamused:
变量名区分大小写
1 | [root@MissHou ~]# A=hello |
变量名不能有特殊符号
1 | [root@MissHou ~]# *A=hello |
变量名不能以数字开头
1 | [root@MissHou ~]# 1A=hello |
等号两边不能有任何空格
1 | [root@MissHou ~]# A =123 |
变量名尽量做到见名知意
1 | NTP_IP=10.1.1.1 |
变量的定义方式有哪些?
基本方式
直接赋值给一个变量
1 | [root@MissHou ~]# A=1234567 |
命令执行结果赋值给变量
1 | [root@MissHou ~]# B=`date +%F` |
交互式定义变量(read)
目的: 让 用户自己 给变量赋值,比较灵活。
语法: read [选项] 变量名
常见选项:
选项 | 释义 |
---|---|
-p | 定义提示用户的信息 |
-n | 定义字符数(限制变量值的长度) |
-s | 不显示(不显示用户输入的内容,输入密码时常用) |
-t | 定义超时时间,默认单位为秒(限制用户输入变量值的超时时间) |
举例说明:
1 | 用法1:用户自己定义变量值 |
用法2:变量值来自文件
1 | [root@MissHou ~]# cat 1.txt |
定义有类型的变量declare
目的: 给变量做一些限制,固定变量的类型,比如:整型、只读
用法: declare 选项 变量名=变量值
常用选项:
选项 | 释义 | 举例 |
---|---|---|
-i | 将变量看成整数 | declare -i A=123 |
-r | 定义只读变量 | declare -r B=hello |
-a | 定义普通数组;查看普通数组 | |
-A | 定义关联数组;查看关联数组 | |
-x | 将变量通过环境导出 | declare -x AAA=123456 等于 export AAA=123456 |
举例说明:
1 | [root@MissHou ~]# declare -i A=123 |
变量的分类
本地变量
本地变量 :当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效。
环境变量
环境变量 :当前进程有效,并且能够被 子进程 调用。
env
查看当前用户的环境变量set
查询当前用户的所有变量(临时变量与环境变量)export 变量名=变量值
或者变量名=变量值;export 变量名
1
2
3
4
5
6
7
8
9
10
11
12
13[root@MissHou ~]# export A=hello 临时将一个本地变量(临时变量)变成环境变量
[root@MissHou ~]# env|grep ^A
A=hello
永久生效:
vim /etc/profile 或者 ~/.bashrc
export A=hello
或者
A=hello
export A
说明:系统中有一个变量PATH,环境变量
export PATH=/usr/local/mysql/bin:$PATH全局变量
- 全局变量* :全局所有的用户和程序都能调用,且继承,新建的用户也默认能调用.
- 解读相关配置文件*
文件名 说明 备注 $HOME/.bashrc 当前用户的bash信息,用户 登录 时读取 定义别名、umask、函数等 $HOME/.bash_profile 当前用户的环境变量,用户 登录 时读取 $HOME/.bash_logout 当前用户 退出 当前shell时最后读取 定义用户退出时执行的程序等 /etc/bashrc 全局的bash信息,所有用户都生效 /etc/profile 全局环境变量信息 系统和所有用户都生效 $HOME/.bash_history 用户的历史命令 history -w 保存历史记录 history -c 清空历史记录
说明: 以上文件修改后,都需要重新source让其生效或者退出重新登录。
用户登录 系统 读取 相关 文件的顺序
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
/etc/bashrc
$HOME/.bash_logout
系统变量
- 系统变量(内置bash中变量)* : shell本身已经固定好了它的名字和作用.
内置变量 含义 $? 上一条命令执行后返回的状态;状态值为0表示执行正常,非0表示执行异常或错误 $0 当前执行的程序或脚本名 $# 脚本后面接的参数的个数 $* 脚本后面所有参数,参数当成一个整体输出,每一个变量参数之间以空格隔开 $@ 脚本后面所有参数,参数是独立的,也是全部输出 $1~$9 脚本后面的位置参数,$1表示第1个位置参数,依次类推 ${10}~${n} 扩展位置参数,第10个位置变量必须用{}大括号括起来(2位数字以上扩起来) $$ 当前所在进程的进程号,如 echo $$ $! 后台运行的最后一个进程号 (当前终端) !$ 调用最后一条命令历史中的参数
- 进一步了解位置参数
$1~${n}
1
2
3
4
5
6
7
8
9
10
11#!/bin/bash
#了解shell内置变量中的位置参数含义
echo "\$0 = $0"
echo "\$# = $#"
echo "\$* = $*"
echo "\$@ = $@"
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$3 = $3"
echo "\$11 = ${11}"
echo "\$12 = ${12}" - 进一步了解$*和$@的区别
$*
:表示将变量看成一个整体
$@
:表示变量是独立的
1 | #!/bin/bash |
别名
什么需要用到
运用Linux命令的时候,当需要输入很长的命令时我们希望尽可能的简短输入内容,这个时候我们就可以给命令起别名了。
例如查看目录或文件的时候用到的ll
,就是ls -s
的别名。能方便简单地用到需要地需要的指令。
这就是别名的好处。
- 设置别名
1
2
3alias 别名='指令'
例如:每次清屏打clear太长,输入cle就能清屏。我们就可以这要设置。
alias cle='clear' - 但需要设置永久别名就需要修改
bashrc
配置文件1
2
3vi /etc/bashrc
在文件末位设置别名
alias cle='clear'
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 食葫芦的葫芦娃!
评论