在具体介绍shell script 之前,先简单介绍以下UNIX哲学。
一 :小即是美。
二 :让程序只做好一件事。
三 :尽可能早地建造原型。
四 : 可移植性比效率重要。
五 : 数据应该保存为文本文件。
六 :尽可能地榨取软件的全部价值。
七 :使用shell脚本来提高效率和可移植性。
八 :避免使用可定制性低的用户界面。
九 :所有程序都是数据的过滤器。
shell是一个命令解释器,介于OS kernel 与用户之间。一个shell脚本可通过将系统调用,公共程序和编译过的二进制程序粘合在一起建立应用。同时shell脚本还有控制语句,这给脚本增加了强力的支持和灵活性。shell脚本对于管理系统任务和其它的重复工作历程来说,表现的非常好。
shell脚本遵循典型的UNIX哲学,即使把大的复杂的工程分成小规模的子任务,并把这些部件和工具组合起来。
UNIX/Linux OS之所以强大,不是因为它具有广泛的命令集,更主要是它能把这些命令组合起来,优雅而简便地完成更复杂的功能。
下面是一些基本的shell命令:
man : 显示联机参考手册
cd :改变目录
ls :列出目录中的文件
cat ,more,less,head,tail : 显示文件的内容
rm :删除文件
rmdir :删除空目录
cp :复制文件
mkdir :创建目录
touch :创建空文件
mv :移动文件或重命名文件
echo :将字符串写入stdout
who :显示系统用户的信息
pwd :打印当前目录
file :打印出文件的类型
ps :关于当前正在运行的进程的信息
uname :挡墙OS的名称及机器信息
su :切换到另一用户
basename :字符串参数基本文件名
chown :修改文件的所有者
chgrp :修改文件所在组
chmod :修改文件模式和权限
grep :模式匹配
egrep :用于扩展正则表达式的grep命令
find :用于定位文件和目录
wc :计算文件中的单词 行和字符数目
diff :比较两个文件
date :显示系统日期和时间
sleep :执行过程中在指定的秒数内中断
cut :写入所选的字符
awk :解析字符的编程语言
sed :流文本编程语言
> :重定向 创建或覆盖文件
>> : 追加到文件结尾
| :管道符
& :在后台执行
什么时候不用shell脚本:
资源密集型任务,尤其在考虑效率是(如排序)。
需要处理大任务的数学操作
有跨平台移植需求时
对于影响系统全局性的关键任务应用
对于安全有很高要求的任务,如需要一个健壮的系统来防止入侵、破解、恶意破坏等。
项目由连串的依赖的各个部分组成
需要大规模的文件操作
需要多位数组的支持
需要数据支持,如链表、树等
需要产生或操作图形化界面
需要直接操作OS硬件
需要I/O或socke接口
等等