设为首页 收藏本站
查看: 830|回复: 0

shell学习笔记(一)shell编程介绍

[复制链接]

尚未签到

发表于 2018-8-16 13:48:08 | 显示全部楼层 |阅读模式
  ================================================================
  声明:
  此次分享bash shell 学习心得,根据周朝剑老师的shell编程视频整理成文档形式与大家分享,周老师教程视频讲得非常棒,支持一下.
  参考文档:http://www.cnblogs.com/chengmo/tag/shell/
  参考书籍:UNIX.shell范例精解(第4版)
  送给blog友一句话:
  把你们所学所想尝试记录下来和大家分享,做这个事情的时候,人总是很害怕出错误,觉得这样写,别人会不会看得懂,别人会不会觉得我写的很烂等等,就是因为这样,让自己主动去查询更多的资料,理解透彻这方面知识,再整理属于自己的文档,分享在blog上,以当着以后备用查询,在这个过程中,可能会觉得比较辛苦,但你会无意识让自己对某些技术有深入的理解,这是我用来提高学习效率一种方式,不是为别人,其实都是为了自己.不信你可以试试.
  ================================================================
  目录:
  Unix与linux shell简介
  Shell脚本使用范围
  权限
  硬链接和软链接的区别
  特殊字符
  ================================================================
Unix与linux shell简介  Unix 多用户 多任务     AT&T Ken Thompson   1969
Unix系统的心脏是内核:一个系统引导时加载的程序,内核用于与硬件设备打交道,调度任务 管理内存和辅存  内核在系统引导时载入内存,管理系统直至关机,它创建和控制进程,管理内存,文件系统和通信等,内核以外的所有其他程序(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版本
当用户登录系统成功,系统会启动一个交互式的shell来提示用户输入命令 Shell执行:先解析命令行,再处理通配符,重定向,管道和作业控制,然后查找命令,找到后开始执行. Steven Bourne Bourne shell 1978前后编写Bash (Bourne Again shell)增强的Bourne shell  [1]作者名叫Steven Bourne,“bourne”与“borne”的发音相近,而born有“出生”和“忍受”的含义。[2]Bourne-Again字面意思代表了它是“Bourne shell”l的一种扩展,而暗示“borne-again”、“born-again”则有“重生”和“再次忍受”的意思。(我想作者应该更喜欢“重生”)[3]它的简写“bash”的意思是“重击”,暗示它的出现是一次强有力的重击。 Shell 顺序判定命令类型 (1)       别名(2)       关键字(3)       函数(4)       内置命令(5)       可执行程序 用户需要在/bin/login验证下才能登录到系统 Child 子进程 parent 父进程Shell脚本使用范围                   资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等)  需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这
种情况一般使用C++或FORTRAN来处理)  有跨平台移植需求(一般使用C或Java)
  复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)
  对于影响系统全局性的关键任务应用。
  对于安全有很高要求的任务,比如你需要一个健壮的系统来防止***,破解,恶破
坏等等。  项目由连串的依赖的各个部分组成。
  需要大规模的文件操作
  需要多维数组的支持
  需要数据结构的支持,比如链表或数等数据结构
  需要产生或操作图形化界面GUI
  需要直接操作系统硬件
  需要I/O或socket接口
  需要使用库或者遗留下来的老代码的接口
  私人的,闭源的应用(shell脚本把代码就放在文本文件中,全世界都能看到)
权限 权限有10位字符R 4 W 2 X 1UMASK 022默认文件权限为666-022=644默认目录权限为777-022=755
DSC0000.jpg

b c   外围设备S P   数据结构 管道l     符号链接文件d    目录-           普通文件 特殊权限s/S(SUID)     可执行的文件搭配这个权限,便能得到特权 任意存取该文件的所有者能使用的全部系统资源s/S(GUID)   如果目录被设置为特殊权限,则所有被复制到这个目录下的文件,其所属的用户组都会被重设为和这个目录一样  除非加上-p(Preserver 保留文件属性) t/T (Sticky 粘着)    临时文件/tmp   /var/tmp 准许其拥有者去删除 移动 避免不守法的用户故意骚扰 因为特殊权限占用x的位置来表示开启执行权限和特殊权限 则权限表示字符是小写 倘若关闭执行权限 则符合会变成大写 Chmod Chmod 755 fileChmod u+x;g+x fileChmod a=r file 即所有权限被重置为新的值Chmod 777 /tmpChmod –R 777 /tmp 将整个tmp目录与其中的文件和子目录的权限统称为 ChownChown root:root fileChown –R root file 递归 Sort 种类 硬链接和软链接的区别 一 链接文件  链接有两种方式,软链接和硬链接。
  1 软链接文件软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。  链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
  用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的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。  在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要
  文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个
  连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。
软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。 Nuhup command & 把命令放在后台运行Jobs –l      查看后台信息  特殊字符
DSC0001.jpg DSC0002.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-552735-1-1.html 上篇帖子: bobo说shell:shell变量详解(三) 下篇帖子: shell笔试题汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表