《LINUX与UNIX SHELL编程指南》学习笔记

  1. 云栖社区>
  2. 博客>
  3. 正文

《LINUX与UNIX SHELL编程指南》学习笔记

wangtaotao 2011-02-23 14:02:00 浏览808
展开阅读全文

linux下文件的几种类型:目录,符号链接、套接字文件....。要注意,说到的文件类型是一个不一样的概念。linux下文件的类型不是后缀名上进行区别。
"-"表示该文件是一个普通类型的文件。什么是普通类型文件?你得记住linux下几种类型的文件。不属于那里面列出的,就属于普通类型文件了。



chmod 77- 文件名

读 4 写 2 执行 1

专业点的描述:chmod改变权限的方式分为:符号模式(就是使用了用户符号进行表示)和绝对模式(就是"chmod 777 文件名"的形式)

绝对模式的一点注意:实际上它是按照8进制进行计算的。而像读权限是4这样的表示方式,只是因为总结出来的一种快捷方式。这样不用去记8进制了。

chmod 74- yoa 这里错误了。没注意到一个地方:在绝对模式下,如果想设置没有任何权限,不是使用"-",而是让其值为0即可。


针对目录拥有可执行权限与针对文件拥有可执行权限,由于对象不同。所表现的概念是不同的。下面区别:

读权限:文件则表示可以查看文件内容。目录表示能列出目录。其实读目录,也就是列出该目录中有什么内容。本质是一样的。读权限表示可以读内容,而想想目录的内容是什么呢?打开目录内容,就是列出目录。实际表现是:使用ls能够列出所有内容信息。如果没有该权限。则不行。

写权限:文件表示可以修改文件内容和删除文件(注意这点)。由于写权限可以对目标的内容进行修改。如果将目录的内容看成是所有文件和子文件夹的组合。那么写权限对于目录而言,就是能够在目录下创建文件(疑问:删除目录下的文件也算吗?)。

执行权限:针对文件就是当成可执行文件进行解析。那么针对目录,就是能否进入目录里面去。

我应该想到,既然在linux所有文件都涉及到权限。而linux中文件包含七种类型(目录和普通文件只是其中一种类型)。,实际上,文件权限只针对文件和目录表现上有区别。其他的不管你是普通文件,还是块设备文件、套接字文件。只要与目录进行区别了,权限对他们起作用都一样的


创建一个文件是,权限设置有个缺省模式:就是你不做设置。系统会自动设置拥有的权限是rw。而没有x权限(这是出于安全考虑,想想,假如别人把这个文件当成程序进行执行,会产生不可预料的效果)
然后,这里就可以明白umask命令了。它就是设置和显示文件的缺省权限的。


软链接术语:
符号链接包括软链接和硬链接。
符号链接就是一个指针,执行一个具体的对象。跟windows环境比较,就类似于"快捷方式"的功能
软链接的标识或者表现特征:1.使用ls查看信息中显示文件的类型是l 2.文件名显示类似 "->"的形式



umask学习:

1.可以这样解释:系统为每个用户分配了一个umask值。这样,用户所创建的文件默认拥有哪些权限,就是根据umask值确定的。

2.输入:umask  显示:002 。的含义是:当前用户(我)所拥有的umask值是002。也就是其创建的文件对应拥有什么样的权限



3.umask的值计算方法记住两点:一、文件的最大权限是6。目录的最大权限值是7 二、就是拿掉umask值中对应的权位。得到的就是文件和目录所拥有的权限。

umask值是3  。可以这样推测:3=2+1.那么 就要去掉写权限和执行权限。得到的对象所拥有的权限是读权限。
看了上面例子,那么不要这样理解了:文件最大权限 6-3=3 那么得到的权限应该是写权限和执行权限。这么理解,导致计算的结果错误了。

多用吧。就会明白的。还有看列出的那个表。


c h o w n命令总结:
1.干什么用的?
change own的缩写。作用是改变一个文件的属主(所有者)。通俗点,就是改变文件的所有权。

2.命令先要看得懂
chown 用户名 文件

3.chgrp命令跟chown一样。只是是改变一个文件的所属组。那个用户名变成了组名

这里想到一个疑问:假如一个文件所有权是b用户。而b用户所属组是g。那么该文件上是否是属于g组呢?

chgrp是change group的缩写。应该是专门针对文件属于某个组使用的。如果文件上所有权是一个用户,而不是一个组。那么使用chgrp命令起不到作用。你无法改变其所属组的。


suid/guid使用的比较少。只需要了解就行了。原因是出于安全性考虑。一般linux厂商都不支持该功能。



第一章(文件安全与权限)总结:
1.主要讲了文件分哪几种类型。在linux上文件拥有哪些权限,如何使用命令分配文件权限。
2.介绍的命令包括:chmod、umask、chown

3.附带涉及到的知识有:chmod命令设置分为符号模式和绝对模式。怎么显示当前用户所属组。软链接使用。


第二章:find命令和xargs
1.find命令功能就相当于windwos系统中的查找。find命令非常耗费系统时间。尤其是在根目录下进行查找。

2.find命令就是的参数位置:find ~ -name "*.txt" -print; 查找范围 查找选项(按什么进行查找) 查找对象 附加选项。

猜测:find程序应该是默认按固定位置进行解析。学了java才明白。命令行的形式传递参数,所有的参数保存在一个args数组中。一次读取数组的每个元素。哪个下标对应什么,都预定义好了的。比如第一个作为查找范围,第二个就使用if进行判断。根据不同的值进入对应的语句块中。


第三章:后台执行命令
1.crontab条目:crontab文件中的条目。一行就是一个条目,表示一个操作。
2.crontab文件:每个文件要提交给cron进程。使用命令:crontab davecron;这样cron进程能够知道
3.cron进程:

4.crontab命令向cron进程提交文件。而at命令是向进程提交作业,稍后运行。


5.每个命令执行后面加上&符号。那么表示将该命令在后台进行运行。这样就不占用屏幕。示例:命令 &

6.nohup命令:no  hang up 。表示不挂起。在退出系统前,想让命令继续在后台执行。使用该命令。

7.将脚本的输出重定向到一个文件:  脚本 > 文件名 2>1&

第三章总结:
主要内容:主讲了在后台执行的命令使用。cron进程。crontab文件的条目设置。如何建立crontab文件并提交给cron进程。如何向cron进程提交一个作业。将一个脚本的输出结果定向到一个文件。

学习到的命令:crontab(向cron进程提交一个crontab文件)、at(向cron进程提交一个作业)、nohup(提交一个作业。在我退出的时候,不挂起该作业)、ps(查看进程号的相关信息)、kill(杀死进程)

第四章总结 主要讲了替换中用到元字符介绍,使用方式。
元字符:像替换中用到的"?","*"这些用来替代的符号(对一个集合的字符用一个符号进行替代)。就是元字符。\
学过正则中的符号,就知道那些就是元字符了。


第五章:shell 输入与输出

原来:脚本执行结果,如果不指定输出到什么地方,默认总是会输出到屏幕的

第六章:命令执行顺序
&&表示左边命令执行成功。才执行右边命令。代码示范:mv /apps/bin /apps/dev/bin && rm -r /apps/bin
|| 表示左边执行失败,就执行右边命令。

小结:主要讲了&&和||两个符号的知识与作用。{}是子shell中执行。()是在当前shell执行。这个具体怎么理解?

"|"有的时候表示同时执行。



第八章:grep家族
我们常常使用的 ls -l | grep 'd' 原来是这样的意思:使用左边的结果作为右边的输入。原来grep命令是需要提供查找的文件名,也就是范围。现在这种方式,就将左边的结果视为文件即可。
什么时候使用单引号,何时使用双引号:查找具体的字符时,使用双引号,按照模式进行匹配的时候,使用单引号


第九章:awk介绍

awk '{}'  {}里面常常是具体的动作
awk命令专门 用来操作文件的。搜索查询之类的操作
awk视为一个单独的shell命令模块,它有着自己的命令格式。比如有if判断语句,可以实现逻辑业务

第十章:sed用法介绍
sed跟vi一样,是一个文本编辑器。唯一区别在于:sed是一个非交互性文本编辑器。非交互性,不需要获得输入信息,可以在后台执行操作。

使用它的好处在于:可以不在现场,节省用户时间。


网友评论

登录后评论
0/500
评论