一、Linux中使用变量的原因
变量的好处在于用一个简单或容易理解的符号来代替另一个比较复杂或容易变动的数据.简而言之,使用变量就是为了方便.在Linux中,主机内有太多的数据需要访问,而这些数据都是一些服务所必须的,且这些数据都非常繁琐.因此,为了简化整个运行流程,可以通过某个变量功能,让这个变量可以根据不同的用户而更改内容.这样一来,系统只要根据那个变量去取得所需要的数据即可,而不需要去记忆那些繁琐的数据.
二、查询在Linux中的变量
查询"命令"是外部命令(其它非bash套件所提供的命令)或内置在bash中的命令.
[root@localhost ~]# type -t name
type会显示出name是外部命令还是bash内置的命令,其中:
file : 表示为外部命令
alias: 表示该命令为命令别名所设置的名称
builtin: 表示该命令为bash内置的命令
例如: type -tpa cd
系统显示为builtin,表示cd为内置命令.
三、变量在Linux中的应用
(1)获取变量的内容
echo $变量名
例如:1. echo $PATH 则系统会显示出变量PATH的值.
2. [root@localhost ~]#sum=30+50-120
[root@localhost ~]#echo $sum //打印出"30+50-120",而不是-40
30+50-120
另外,echo还可以向Linux终端打印数据.
例如:[root@localhost ~]#echo "haha"
haha
(2)变量的赋值
方法:可以直接使用"="来向某个变量赋值.
例如:#echo $hehe //变量未赋值,直接取其值时,则系统的显示为空
#hehe=Vbird
#echo $hehe //系统显示为Vbird
Attention!!!
1.等号两边不能直接接空格符.
2.变量名称只能是英文字母与数字,但数字不能作为开头.
3.若该变量需要在其它子程序中执行,则需要用export使变量变成环境变量,如export PATH.
4.取消变量的方法:unset 变量名
5.若变量未赋值,直接取其值时,则系统的显示为空的.
6.双引号、单引号在变量中的应用
双引号仍然可以保持变量的内容.
单引号只能是一般字符,$name会失去原有的变量内容,仅作为字符的显示类型而已.
#name=vbird
#echo $name //显示内容为vbird
#echo "$name is me" //显示内容为vbird is me
#echo '$name is me' //显示内容为$name is me
(3)环境变量
1、列出当前Shell环境下所有环境变量及内容:#env
HOSTNAME=linux.dmtsai.tw //主机名称
SHELL=/bin/bash //当前环境下,使用的Shell是哪一个程序?
HISTSIZE=1000 //记录曾经执行过的命令的数目,RedHat中可记录1000个
USER=root //当前用户名称
LS_COLORS //颜色设置
PATH //执行文件命令搜索路径.目录之间以冒号分隔.注意,文件的搜索是按PATH的值来查询.
PWD //当前用户所在的工作目录
LANG //与语系有关
HOME //用户的家目录(进入用户的家目录:cd ~或cd)
2、列出所有变量(包括自定义变量):#set
在Linux中,默认情况下使用{大写字母}来设置的变量一般为系统内定需要的变量.
PS1 //(数字1而不是英文字母)Linux命令提示符的设置
{GetProperty(Content)}nbsp; //本Shell的PID(Process ID).查询Shell的PID,使用#echo $
3、自定义的变量转变为环境变量:#export
(1)#export
将所有的环境变量都显示出来.
(2)Linux中的变量可分为环境变量和自定义变量.两者的区别在于环境变量对于用户来说是透明的,即可以在任何一个程序中使用这些环境变量.而自定义变量只在当前Shell中有效,关闭了当前Shell,该变量便无效.所以为了能使自定义的变量在任何程序中都可以使用,可以使用export在系统的配置文件/etc/profile、/etc/.bashrc中声明该变量.
export声明变量的格式: #export 变量名
4、从(键盘)键盘获取变量:read
要读取来自键盘输入的变量,就是用read命令.该命令常用在Shell脚本的编写中,与用户进行对话.
命令格式: #read [-pt] 变量名
参数说明: -p 后接提示符
-t 后接等待的"秒数"
例程:
1、让用户从(终端)键盘输入内容,并将输入的内容赋给该变量.输入该变量后,Linux系统自动提示用户输入.
[root@localhost root]# read yhy //将输入的内容(this is a test!)赋给了变量yhy
this is a test!
[root@localhost root]# echo $yhy
this is a test!
2、提示用户10秒内输入自己的名字,并显示出友好界面.
[root@localhost root]# read -p "Please input your name:" -t 10 named
此时,系统提示:
Please input your name: lss
[root@localhost root]# echo $named //将输入的内容(lss)赋给了变量named
lss
5、利用declare声明变量
在Linux中,使用declare声明一个变量的类型.
命令格式: #declare [-aixr] 变量名
参数说明: -a 声明该变量为数组(array)
-i 声明该变量为整型(integer)
-x 将该变量变成环境变量,功能类似于export
-r 将该变量设置为只读,即变量内容不能更改,也不能取消(unset)
例程:
1、[root@localhost root]# sum=30+50+-120
[root@localhost root]# echo $sum
30+50-120
[root@localhost root]# declare -i sum=30+50-120
-40
注:declare -i类似于C语言中将变量sum声明为整型变量.
2、将sum变成环境变量
[root@localhost root]# delcare -x sum //相当于export sum
3、让变量sum变成只读属性,不可更改
[root@localhost root]# declare -r sum
[root@localhost root]# sum=30+50+120
-bash:sum,readonly variable
6、限制文件系统与程序
若10个人同时登录某Linux主机,这10个人同时打开了100个文件,每个文件大小约10MB,则需要Linux主机内存为10*10*100=10GB.这会导致Linux主机死机.为此,为了防止这种情况的发生,Linux中用ulimit命令来限制用户的某些系统资源,包括打开的文件数量、可以使用的CPU的时间、可以使用的内存总量等.
[root@localhost root]# ulimit -f 1024 //限制用户仅能建立1MB以下容量的文件
[root@localhost root]# ulimit -a //列出所有的限制数据
7、命令别名的设置
当命令特别长的时候,可以使用别名来设置新的命令.
命令格式: #alias 命令
例程:
当查询隐藏文件时,可以使用#ls -l | more来查询,但这样输入命令非常的繁琐.因此可以这样来操作:
# alias lm='ls -l | more'
这样就立刻多了一个可执行的命令,该命令的名称是lm,它执行的是ls -l | more.
# alias vim=vi
这样执行vim编辑器就等效于vi编辑器.
8、查询执行过的命令
在Linux中可以使用history命令来查询用户以往曾经使用过的命令.
[root@localhost root]# history //查询所有曾经使用过的命令
[root@localhost root]# history 3 //列出当前最近使用过的3个命令
[root@localhost root]# history -w //将历史记录写入~/.bash_history中