Chinaunix首页 | 论坛 | 博客
  • 博客访问: 918348
  • 博文数量: 132
  • 博客积分: 9976
  • 博客等级: 中将
  • 技术积分: 1781
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-30 20:40
文章分类

全部博文(132)

文章存档

2013年(1)

2011年(1)

2010年(15)

2009年(77)

2008年(36)

2007年(2)

我的朋友

分类:

2009-01-10 21:06:43


shell learn

====================================================

1. 用户可以使用stty命令来识别哪个键执行哪个功能。输入
   $ stty -a
   可以看到如下信息:
cjash@linux-sdik:Desktop\> stty -a
speed 38400 baud; rows 22; columns 113; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = M-^?; start = ^Q;
stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
cjash@linux-sdik:Desktop\>

====================================================
2. bg, fg, C-Z 的关系
  bg 使挂起在后台的任务继续运行
  fg 使后台的挂起的或在后台运行的任务置为前台运行
  C-z 使前台的工作置于后台并挂起
====================================================
3. nohup 命令的使用(使后台进程持续运行,把nohup命令加到实际要运行命令的前面)
  for example:
  $ nohup ls &
====================================================
4. wait command(等待后台进程结束)
   wait 命令有三种方式:
     1. 无选项(缺省)
     2. 使用进程ID
     3. 使用加“%" 前缀的任务标号
   命令将一直等到生命的任务或进程完成。
   如果用户没有指定任务或进程, wait命令等待所有的后台任务完成。不加任何选项的
wait对启动一系列后台任务的shell脚本很有用。当它们全部完成时, 脚本可以继续处理。
  for example:
    $ wait %1

====================================================
5. kill command
  $kill %1
  其中 1 为任务标号。
====================================================
6. exec command(覆盖当前进程)
  exec 命令会用一个新进程替换当前进程,使用该命令时要特别小心。
如果用户在主(登录) shell 解释器中使用 exec, shell 解释器将会被新进程代替。

====================================================
7. 数组
  数组提供了一种将变量集合分组的方法。
7.1
  创建数组变量的最简单的方法就是为数组中的每一个元素赋值,表达式如下:
  $ name[index]=value
  这里, name 为数组名, index是数组中程序员想设置的下标, value 是想为
该项赋值的值。例如,下列命令:
  $ FRUIT[0]=apple
  $ FRUIT[1]=banana
  $ FRUIT[2]=orange
  设置了数组FRUIT前三项的值。也可以用如下标量做相同的事:
  $ FRUIT_0=apple
  $ FRUIT_1=banana
  $ FRUIT_2=orange
  为数组赋值不一定按顺序,例如可以直接:
  $ FRUIT[10]=plum
  shell 只跟踪那些赋了值的数组元素。

7.2

  数组初始化的第二中方式是一次设置多个元素,如下所示:
  $ name=(value1 value2 value3 ... valuen)
  注意使用的是连续数组下标。例如:
  $ band=(derri terry mike gene)
  等价于:
  $ band[0]=derri
  $ band[0]=terry
  $ band[0]=mike
  $ band[0]=gene
  在 bash 中, 当为多个数组元素赋值时,可在置前面加上数组下标:
  myarray=([0]=derry [3]=gene [2]=mike [1]=terry)
  数组下标不必按顺序,下标也不一定为整型。

7.3
 
  在为数组赋值后,可对它们进行访问:
  ${name[index]}
  可使用如下方式访问数组中的所有项:
  ${name[*]}
  ${name[@]}
  for example:
cjash@linux-sdik:trunk\> fruit[0]=apple
cjash@linux-sdik:trunk\> fruit[1]=peach
cjash@linux-sdik:trunk\> fruit[2]=plum
cjash@linux-sdik:trunk\> echo fruit[*]
fruit[*]
cjash@linux-sdik:trunk\> echo "fruit[*]"
fruit[*]
cjash@linux-sdik:trunk\> echo "${fruit[*]}"
apple peach plum
cjash@linux-sdik:trunk\> echo "${fruit[@]}"
apple peach plum
cjash@linux-sdik:trunk\>
====================================================
8. readonly 设变量为只读
   unset variable 删除变量
====================================================
9. 环境变量
   PWD
   UID 当前用户的数组用户ID
   SHLVL shell 嵌套的层数
   RANDOM 每次被引用时, 产生从 0~32767 之间的随即整数。通过为 $RANDOM赋值,
可初始化随机数序列。若$RANDOM被删除则丢失其特性,即使在随后重新设置,也不再有随即数的性质。
   SECONDS 返回 shell 被激活后的秒数。
   IFS Internal Field Separator
   PATH
   HOME

====================================================
10. command [!characters]
    匹配除在集合中指定字符外的所有字符的能力
    $ ls [!a]*
    列出所有除以 a 字符开头的所有文件。
====================================================
11. 变量替换
  ${parameter:-word} 若parameter为空或未设置,则用word代替 parameter进行替换,
parameter的直不变, 例如
--------------------------
cjash@linux-sdik:trunk\> echo ${AAA:-hello}
hello
cjash@linux-sdik:trunk\> AAA=world
cjash@linux-sdik:trunk\> echo ${AAA:-hello}
world
cjash@linux-sdik:trunk\>
--------------------------

  ${parameter:=word} 若parameter为空或未设置,则parameter设为值word

--------------------------
cjash@linux-sdik:trunk\> echo ${ABC:=world}; echo ${ABC}
world
world
cjash@linux-sdik:trunk\>
--------------------------

  ${parameter:?message} 若parameter为空或未设置, 则message作为标准错误打印出来,这
可用来检查变量是否正确设置。
--------------------------
cjash@linux-sdik:trunk\> echo ${CDE:?"no CDE is undefined"}
bash: CDE: no CDE is undefined
cjash@linux-sdik:trunk\> CDE="define cde"
cjash@linux-sdik:trunk\> echo ${CDE:?"no CDE is undefined"}
define cde
cjash@linux-sdik:trunk\>
--------------------------

  ${parameter:+word} 若parameter设置了, 则用word代替parameter进行替换,
parameter的值不变。
--------------------------
注意之前 CDE 的内容为 "define cde":

cjash@linux-sdik:trunk\> echo ${CDE:+"I missing you, so much sh"}
I missing you, so much sh
cjash@linux-sdik:trunk\> unset CDE
cjash@linux-sdik:trunk\> echo ${CDE:+"I missing you, so much sh"}

cjash@linux-sdik:trunk\>
--------------------------

====================================================
12. $((expression)) 执行算术运算
====================================================
13.
====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


====================================================


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