linux温习笔记之bash shell (2) bash基础
linux复习笔记之bash shell (2) bash基础
1.影响显示结果的语系变量(locale)
1.1locale这个命令就是查看当前系统支持多少种语系,命令使用如下:
[root@localhost shell]# locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" ......
1.2怎么调整系统的语系变量呢?
答:系统默认的语系定义在/etc/sysconfig/i18n这个文件中,我们可以修改这个文件,来调整系统的语系
[root@localhost locale]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
2.变量键盘读取、数组与声明:read,array,declare
2.1.read
要读取来自键盘输入的变量,就是用read这个命令
语法: read [-pt] var 参数: -p:后面可以接提示符。 -t:后面可以接等待的“秒数”。 实例1 让用户由键盘输入自己的名字 [root@localhost locale]# read name ickes 按下回车键后,光标会等待你的输入 [root@localhost locale]# echo $name ickes 刚输入的内容作为了name这个变量的值 实例2 让用户30秒内输入自己的大名 [root@localhost locale]# read -p "you name is:" -t 30 name you name is:xialiang 有提示的 [root@localhost locale]# echo $name xialiang 刚输入的内容作为了name这个变量的值
2.2.declare、typeset
declare或者typeset是一样的功能,就是声明变量的类型,我一般选择用declare
declare的用法:
语法: declare [-aixr] var 参数: -a:将后面名为var的变量定义成数组(array)类型 -i:将后面名为var的变量定义为整数(int)类型 -x:用法跟export一样,将后面的var变成一个环境变量 -r:将后面名为var的变量设置只读 实例一:让变量sum进行100+200+300的累加 [root@localhost locale]# sum=100+200+300 [root@localhost locale]# echo $sum 100+200+300 他这是要干啥呢?原来linux默认,若不指定变量的类型,那么这个他的类型就是字符串 [root@localhost locale]# declare -i sum=100+200+300 [root@localhost locale]# echo $sum 600 实例二:将sum变成环境变量 [root@localhost locale]# declare -x sum [root@localhost locale]# export | grep sum declare -ix sum="600" 看到了没有,果然包括了i与x的声明 实例三:让sum变成只读属性,不可改动 [root@localhost locale]# declare -r sum [root@localhost locale]# sum=100 -bash: sum: readonly variable 果然不然改动这个变量了 实例四:让sum变成非环境变量 [root@localhost locale]# declare +x sum 将-变成+就变成了取消操作 [root@localhost locale]# declare -p sum -p可以单独列出变量的类型 declare -ir sum="600" 但是注意了:-r这个只读属性,一旦设定,就不能够取消,通常需要注销重新登录注意了:默认情况下,bash对于变量有几个基本的定义
1).变量类型默认为字符串(从实例一可以看出);
2).bash环境中数值运算,默认最多仅能达到整数类型,所以1/3的结果是0
2.3.数组
语法相当简单:var[index]=content,如下所示,是不是如此的简单、
[root@localhost locale]# var[0]=1 [root@localhost locale]# var[1]=ickes [root@localhost locale]# echo ${var[0]} 1 [root@localhost locale]# echo ${var[1]} ickes 一般来说,建议直接以${数组}的方式来读取,会比较正确无误3.命令别名设置:alias,unalias
这个相当容易理解,通过一个例子来阐述如下:就是如此的简单
[root@localhost ~]# alias l='ls -al' [root@localhost ~]# l
单独使用,可以查看哪些命令是命名别名
[root@localhost ~]# alias alias cp='cp -i' alias l='ls -al' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i'取消该命令别名就是用
[root@localhost ~]# unalias l
4.历史命令:history
bash有提供命令历史的服务。那么如何查询我们曾经执行过的命令呢?
答:用history命令
语法: history [n] history [-c] histroy [-raw] histfiles 参数: n:数字,列出最近的n条命令的意思 -c:将目前的shell中所有history内容清除 -a:将目前新增的history命令新增如histfiles文件中,若没有加histfiles这个文件,则默认写人~/.bash_history. -r:将histfiles的内容读到目前这个shell的history记忆中 -w:将目前的history记忆内容写入historyfiles中 实例一:列出当前内存中所有的history记忆 [root@localhost ~]# history 内容太多,篇幅较大,我不展示了 实例二:列出目前最近的3条数据 [root@localhost ~]# history 3 1134 history[root@localhost ~]# history 3 1135 clear 1136 history 3 实例三:将目前内存中的history记录写入hist.txt文件 [root@bogon ~]# history -w hist.txt在正常情况下,历史命令的读取与记录是这样的:
当我们以bash登录linux主机之后,系统会主动由主文件夹的~/.bash_history读取以前曾经执行过的命令,假设我们这次登录主机后,共执行过100次命令,等我注销是,系统就会将101~1000这总共1000笔历史命令更新到~/.bash_history当中。也就是说,历史命令在我注销时,会将最近的HISTSIZE条记录到我的记录文件当中。当然也可以使用history -w强制立即写入。