您的位置:首页 > 运维架构 > Shell

shell的一些基本知识

2012-12-04 16:50 162 查看
Preview->几个关于shell的链接:

1.CoolShell

shell解释执行,而不是编译执行

alias:设定别名,如alias name='cd tmp', alias there=/home/user3。单独的alias可以看当前所有别名,unalias禁止一个别名。

env:查看用户环境。

$:变量替代,{ }用来区分变量名和周围的文本。(注,变量替代都是局部变量,仅在当前shell中有效。export命令使其变成全局)

$():命令替代,或者使用‘ ’

~:波浪号替代,~和~/代表HOME中的路径名,~+代表PWD的值,~-代表上一次PWD的值。

echo:回显命令

whereis:命令查找

系统中每一个应用或命令都对应存储在磁盘上的程序文件,当执行一个命令时, 首先定位程序文件,然后将代码载入内存执行。当进入unix系统时,shell程序会被装载,一个shell进程会被执行,当在提示符下输入一个命令时,一个子进程会被创建和执行:一个fork()系统调用会复制shell进程,包括程序代码、环境变量空间和局部变量空间;一个exec()系统调用会使用子进程的代码和本地数据空间来代替原进程的本地数据空间。子进程执行时,shell父进程会进入睡眠状态,直到子进程返回才被唤醒。

无论何时定义一个新的变量,都会存储在本进程相关的局部数据空间中,如果一个子进程要存取这个变量,这个变量必须被传送到环境变量中(export),这样它对后来的子进程都会有效,唯一的传递数据给进程的方法是通过环境变量。

shell通过3种方式接收数据:环境变量、命令行参数、用户的输入

$0,$1,$2,...$n:对应arg[0],arg[1],...,arg
。注意$10要用$(10)

$*:完全的参数字符串(除去arg[0])

$#:命令行参数的数量(除去arg[0])

shift n:将所有的在*中的字符串向左移动n个位置,对应的#的个数减少n个。

read arg1 arg2 ...:读取用户输入的词

sh -x shell_program arguments:用于调试

echo $?:返回上次函数的返回值

test命令: [ "$x" -lt 10 ]用于数字比较(最好加个“”防止NULL),用于数字的关系运算符:-lt -le -gt -ge -eq -ne;[ "$string" = "abc" ]用于字符串比较,注意空格;test [-fds] filename 用于文件test。

-o OR -a AND \( \) GROUPING

let算术计算:let x=x+y, let "x=x/(1+y)",也可以用(( ))代替

exit n:返回值

条件语句

if
condition
then
listA
else
listB
fi


case语句

case para in
pattern1)list A
;;
pattern2)listB
;;
*)listC
;;
esac


循环语句

(1)while condition
do
body
done
(2)until codition
do
body
done
(3)for var in list
do
body
done


整理自《unix基础教程》chap6&chap7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: