Shell是核心程序之外的指令解析器,是一个程序,同时也是一种命令语言和程序设计语言。
Shell的类型ash、bash、ksh、csh、tcsh
/etc/shells
echo $SHELL
程序在shell中运行
shell中可运行子shell
存取权限与安全
$ ls -l
$ drwxr-xr-x 2 domingo domingo 4096 2009-12-05 21:38 bin
setuid(suid/guid)(chmod u+s,g+s file)
chown和chgrp(chown user file/chgrp gourp file)
umask(umask nnn)
符号链接(ln [-s] source path target path)
$ls -l /bin |grep `^+++s`
-rwsr-xr-x 1 root root 31124 2009-07-31 21:55 su
一个文件属主包含s权限表示该文件属主可暂时行使root权限,文件命令执行完毕,权限收回。
chown和chgrp
chown [-R] owner myfile
chown owner.group myfile [-R]
chgrp [-R] group myfile
chgrp .group myfile
umask
/etc/profile($HOME/.profile $HOME/.bash_profile)
$ umask xxx
符号链接
硬链接
ln source_path target_path
软链接
ln -s source_path target_path
使用shell脚本的原因
功能强大
节约时间
shell脚本基本元素
#!/bin/bash
#注释
变量
流程控制结构
shell脚本运行方式
#eg1.sh
#!/bin/bash
#This is a hello world shell script
printchar="hello world"
echo $printchar
chmod u+x eg1.sh
./eg1.sh
shell特性
别名
管道
命令替换
重定向
后台处理
模式匹配
变量
特殊字符
别名:
$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias ls='ls --color=auto'
$ alias ll='ls -l'
个人用户的aliash设置$HOME/.bashrc
命令替换:
myfile的内容
parm
findfile
$ ls `cat myfile` -al
后台处理:
nohup tar -czf bin.tar.gz bin &
$ jobs -l
变量:
$printchar
管道:
ls|sort
重定向(<、>):
可以改变程序运行的输入来源和输出地点
$ sort <myfile.txt
$ sort <myfile.txt>myfile_sort.txt
模式匹配:
正则表达式
特殊字符:
双引号("):用来使shell无法认出空格、制表符和其他大多数字符,这样"David Medinets"表示一个值,而不是两个同样的"David <"
单引号('):用来使shell无法认出所有特殊字符
反引号(`):用来替换命令
反斜杠(/):用来使shell无法认出其后的特殊字符,使其后的字符失去特殊的含义,如"David/ Medinets"
$ touch David/ Medinets
$ ls David/ Medinets
David Medinets
分号(;):允许在一行运行多个命令
&:命令后台执行
括号(()):创建成组的命令
大括号({}):创建命令块
竖杠(|):管道标示符
<>&:表示重定向
*?[]!:表示模糊匹配
$:变量名的开头
#:表示注释(第一行除外)
空格、制表符、换行符:当做空白