linux复习笔记之bash shell (2) bash基础

转载请出自出处:http://eksliang.iteye.com/blog/2104329

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强制立即写入。

猜你喜欢

转载自eksliang.iteye.com/blog/2104329