================================================================
声明:
此次分享bash shell 学习心得,根据周朝剑老师的shell编程视频整理成文档形式与大家分享,周老师教程视频讲得非常棒,支持一下.
参考文档:http://www.cnblogs.com/chengmo/tag/shell/
参考书籍:UNIX.shell范例精解(第4版)
送给blog友一句话:
把你们所学所想尝试记录下来和大家分享,做这个事情的时候,人总是很害怕出错误,觉得这样写,别人会不会看得懂,别人会不会觉得我写的很烂等等,就是因为这样,让自己主动去查询更多的资料,理解透彻这方面知识,再整理属于自己的文档,分享在blog上,以当着以后备用查询,在这个过程中,可能会觉得比较辛苦,但你会无意识让自己对某些技术有深入的理解,这是我用来提高学习效率一种方式,不是为别人,其实都是为了自己.不信你可以试试.
================================================================
目录:
Unix与linux shell简介
Shell脚本使用范围
权限
硬链接和软链接的区别
特殊字符
================================================================
Unix 多用户 多任务 AT&T Ken Thompson 1969
内核在系统引导时载入内存,管理系统直至关机,它创建和控制进程,管理内存,文件系统和通信等,内核以外的所有其他程序(shell)都保存在磁盘上,内核将这些程序加载到内存中运行,并在它们终止后清理系统
Linux Linus Torvalds (李纳斯·托沃兹) 1991 企鹅 linux官方吉祥物 Tux
Korn shell ---AT&T UNIX bash shell ---Linux
FSF 自由软件基金会 1985 GNU(GNU's Not Unix) GPL 通用公共许可证
Linux结合GNU工具诞生完全自由操作系统 1992
POSIX (protable operating system interface)可移植操作系统接口
Shell是核心程序(kernel)之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言
/etc/shells 查看系统有几个shell版本
echo $SHELL 查看系统目前使用shell版本
需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这
有跨平台移植需求(一般使用C或Java)
复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)
对于影响系统全局性的关键任务应用。
对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵,破解,恶破
项目由连串的依赖的各个部分组成。
需要大规模的文件操作
需要多维数组的支持
需要数据结构的支持,比如链表或数等数据结构
需要产生或操作图形化界面GUI
需要直接操作系统硬件
需要I/O或socket接口
需要使用库或者遗留下来的老代码的接口
私人的,闭源的应用(shell脚本把代码就放在文本文件中,全世界都能看到)
链接有两种方式,软链接和硬链接。
链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
用ln -s 命令可以生成一个软连接,如下:
[root@linux236 test]# ln -s source_file softlink_file
在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。
2 硬链接文件
info ln 命令告诉您,硬链接是已存在文件的另一个名字(A "hard link" is another name for an existing file),这多少有些令人困惑。硬连接的命令是
ln -d existfile newfile
硬链接文件有两个限制
1)、不允许给目录创建硬链接;
2)、只有在同一文件系统中的文件之间才能创建链接。
对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。
这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。
二 两者之间的区别
在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要
文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个
连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。
本文转自viong 51CTO博客,原文链接:http://blog.51cto.com/viong/894408,如需转载请自行联系原作者