Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2264149
  • 博文数量: 168
  • 博客积分: 6641
  • 博客等级: 准将
  • 技术积分: 1996
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-02 11:49
文章存档

2020年(4)

2019年(6)

2017年(1)

2016年(3)

2015年(3)

2014年(8)

2013年(2)

2012年(12)

2011年(19)

2010年(10)

2009年(3)

2008年(17)

2007年(80)

分类: LINUX

2011-06-25 00:09:37


Bash应用小知识点随记

2011-06-24  TsengYia#126.com http://tsengyia.blog.chinaunix.net/

#################################################################
1. 设置bash静默超时时间
    若指定时间(秒数)内没有任何输入,则自动注销当前shell。
[root@localhost ~]# export TMOUT=300

2. 波浪号“~”扩展
  1)“~”符号后跟用户名,表示指定用户的宿主目录;若不指定用户名,默认表示当前用户的宿主目录(即$HOME)
  2)“~”符号后跟“-”号,表示引用前一个目录名(即$OLDPWD)
  3)“~”符号后跟“+”号,表示引用当前目录名(即$PWD)

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. 命令替换 —— 反撇号``或者$()
    使用`命令行`,或者$(命令行)进行命令替换,逍遥嵌套使用时,$()方式更加方便。

5. 使用read限时读入字符变量,无需回车确认
    按任意键或等待10秒后继续,-p显示提示信息,-s不回显输入字符,-t指定超时秒数,-n指定读入的字符个数。
[root@localhost ~]# read -p "Press any key or wait 10 seconds to continue..." -s -t 10 -n 1 CHAR

6. 字符串变量操作几例
  1)
[root@localhost ~]# echo ${NAME}:=jerry}             #//若NAME变量已存在则显示其值,否则赋值jerry并显示
[root@localhost ~]# STRING="GoodMorningEverybody"
[root@localhost ~]# echo ${#STRING}                  #//查看字符串变量STRING的长度
20
[root@localhost ~]# echo ${STRING:4}                 #//删除前4个字符,输出其余部分
MorningEverybody
[root@localhost ~]# echo ${STRING:4:7}               #//删除前4个字符,输出其后的7个字符
Morning
[root@localhost ~]# echo ${STRING/Mor/Eve}           #//将变量值中的第一个“Mor”替换为“Eve”
GoodEveningEverybody
[root@localhost ~]# echo ${STRING//o/XX}             #//将变量值中的所有的“o”替换为“XX”
GXXXXdMXXrningEverybXXdy
[root@localhost ~]# expr substr $STRING 5 7          #//从变量值的第5个字符开始,截取并输出7个字符
Morning
[root@localhost ~]# echo $STRING | cut -b 5-11       #//截取并输出变量值的第5-11个字符,类似的有5、5-、-11等
Morning

7. 数组变量的赋值与引用
    示例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")

8. 内部指令:用于空操作,返回值为true
[root@localhost ~]# : && echo "YES"
YES
[root@localhost ~]# :> /var/log/messages             #//清空/var/log/messages文件

9. 在单层括号()中的命令将打开一个新的子Shell来运行
[root@localhost ~]# A=1234 ; echo $A
1234
[root@localhost ~]# (A=4321; echo $A) ; echo $A
4321
1234

10. 在双层括号(())中的命令或算数表达式可以使用C语言风格的语句
[root@localhost ~]# for(()i=1;i<=3;i++); do echo $i ; done
1
2
3
[root@localhost ~]# echo $i; ((i--)); echo $i
4
3
[root@localhost ~]# A=12 ; ((A>10)) && echo "$A > 10"
12 > 10

11. 在大括号{}中的命令相当于一个匿名函数,但并不打开一个新的子Shell来执行这些命令(管道操作例外)
[root@localhost ~]# { A=12345; echo $A; B="/boot/"; ls -ld $B; } > res.txt
[root@localhost ~]# cat res.txt
12345
drwxr-xr-x 3 root root 4096 2011-06-14 19:57 /boot/

12. 二进制、八进制、十六进制数转换为十进制数
[root@localhost ~]# echo $((16#d2f0))
54000
[root@localhost ~]# echo $((8#257))
175
[root@localhost ~]# echo $((2#10111101))
189

13. 使用setterm命令设置TTY字符终端颜色
[root@localhost ~]# setterm -foreground black -background white -store

#################################################################
阅读(1256) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~