Bash Shell小知识点数则备忘
2007-12-21 TsengYia#126.com 一路狂笑
################################################################
系统环境:RHEL5 [ 2.6.18-8.el5xen ]
软件环境:bash-3.1-16.1
################################################################
1、设置bash静默超时时间
设置环境变量TMOUT=300,则5分钟没有接受输入即自动退出(auto-logout)当前shell
2、波浪号“~”扩展
“~”符号后跟用户名,表示引用指定用户名的宿主目录名;若不指定用户名,默认引用当前用户主目录(即$HOME)
“~”符号后跟“-”号,表示引用前一个目录名(即$OLDPWD)
“~”符号后跟“+”号,表示引用当前目录名(即$PWD)
示例:
[root@localhost ~]# echo ~jerry
/home/jerry
[root@localhost ~]# echo ~
/root
[root@localhost ~]# cd /boot/grub
[root@localhost grub]# echo ~+
/boot/grub
[root@localhost grub]# echo ~-
/root
3、关闭bash的通配符扩展(*?[]等)
使用set -f命令设置,可以禁用通配符扩展,*?[]等作为普通字符处理。(使用set +f可以重新启用通配符扩展)
示例:
[root@localhost dir]# ls *
file1.txt
[root@localhost dir]# set -f
[root@localhost dir]# ls *
ls: *: No such file or directory
[root@localhost dir]# touch *abc.txt
[root@localhost dir]# set +f
[root@localhost dir]# ls *
*abc.txt file1.txt
4、命令替换
使用$(CMD_LINE)或`CMD_LINE`进行命令替换。需要进行嵌套使用时,前者比较方便。
示例:
[root@localhost ~]# ll `which cal` //查找cal命令的位置并显示文件属性
[root@localhost ~]# A=$(ll $(which cal)) //将上条命令结果赋值给变量A
[root@localhost ~]# echo $A
-rwxr-xr-x 1 root root 1302 Jan 12 2007 /usr/bin/cal
5、grep几小点用法
示例:
[root@localhost ~]# grep '\' /usr/share/dict/words //检索包含以con开头、th结尾的单词的行
[root@localhost ~]# grep -v ^# /boot/grub/grub.conf | grep -v ^$ //检索非#号开头的行,摒弃空行
[root@localhost dir]# grep -w bin /etc/passwd //检索包含独立的'bin'单词的行(不包括类似sbin、bind的词)
6、sed几小点用法
示例:
[root@localhost ~]# sed -e 's/^/#/' /etc/hosts //在每行行首插入#号,输出到屏幕
[root@localhost ~]# sed -e 's/$/EOF/' /etc/hosts //在每行行尾插入EOF字符串,输出到屏幕
[root@localhost ~]# sed -i 's/Vlan/VLAN/g' /etc/somefile //直接将文件中的Vlan改为VLAN,-i选项表示直接修改文件
7、使用read限时读入字符变量,无需回车确认
示例:
[root@localhost ~]# read -p "Press any key or wait 10 seconds to continue..." -st 10 -n 1 CHAR
//按任意键或等待10秒后继续,-p显示提示信息,-s不回显输入字符,-t指定超时时间,-n指定读入的字符数
8、字符串变量的几个小用法
示例1:
[root@localhost ~]# echo ${NAME:="jerry"} //若变量NAME存在则显示内容,否则新建该变量并赋初值为"jerry"
示例2:
[root@localhost ~]# STRING="GoodMorningEverybody"
[root@localhost ~]# echo ${#STRING} //查看字符串变量STRING的长度
20
[root@localhost ~]# echo ${STRING:4} //删除字符串变量STRING的前4个字符,保留其余部分字符
MorningEverybody
[root@localhost ~]# echo ${STRING:4:7} //删除字符串变量的前4个字符,保留之后的7个字符长度的内容
Morning
[root@localhost ~]# echo ${STRING/Mor/Eve} //将字符串变量STRING中的第一个"Mor"替换为"Eve"
GoodEveningEverybody
[root@localhost ~]# echo ${STRING//o/XX} //将字符串变量STRING中所有的"o"替换为"XX"
GXXXXdMXXrningEverybXXdy
示例3:
[root@localhost ~]# echo $STRING
GoodMorningEverybody
[root@localhost ~]# expr substr $STRING 5 7 //从字符串变量STRING中的第5个字符开始截取7个字符长度的内容
Morning
[root@localhost ~]# echo $STRING | cut -b 5-11 //截取第5-11个字符,截取不同范围可使用"5"、"5-"、"-11"等形式
Morning
9、数组变量的赋值与引用
示例1:
[root@localhost ~]# declare -a SEASON //多数时候不需要此项声明,直接赋值为数组即可
[root@localhost ~]# SEASON=("Spring" "Summer" "Autumn" "Winter") //给整个数组赋值
[root@localhost ~]# set | grep SEASON //查看已设置的数组信息(下标从0开始)
SEASON=([0]="New_Spring" [1]="Summer" [2]="Autumn" [3]="Winter")
[root@localhost ~]# echo ${SEASON[*]} //显示整个数组的内容
Spring Summer Autumn Winter
[root@localhost ~]# echo ${SEASON[3]} //显示指定的单个数组元素
Winter
[root@localhost ~]# SEASON[0]="New_Spring" //给单个数组元素赋值
[root@localhost ~]# echo ${SEASON[*]} //显示整个数组
New_Spring Summer Autumn Winter
[root@localhost ~]# unset SEASON[2] //清除指定的单个数组元素
[root@localhost ~]# unset SEASON //清除整个数组
示例2:
[root@localhost ~]# cat /etc/shells | tr "\n" " " > /tmp/tmp.file //将文件中的回车转换成空格
[root@localhost ~]# read -a SHELLS < /tmp/tmp.file //以文件中内容给数组赋值(碰到第一个回车符之前的内容)
[root@localhost ~]# set | grep "SHELLS" //查看数组赋值情况
SHELLS=([0]="/bin/sh" [1]="/bin/bash" [2]="/sbin/nologin" [3]="/bin/tcsh" [4]="/bin/csh" [5]="/bin/ksh")
阅读(1698) | 评论(0) | 转发(0) |