《LINUX与UNIX SHELL编程指南》学习笔记
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是一个非交互性文本编辑器。非交互性,不需要获得输入信息,可以在后台执行操作。
使用它的好处在于:可以不在现场,节省用户时间。
转载于:https://www.cnblogs.com/wangtao_20/archive/2011/02/23/1962238.html
《LINUX与UNIX SHELL编程指南》学习笔记相关推荐
- 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术
本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...
- 第一行代码学习笔记第二章——探究活动
知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...
- 第一行代码学习笔记第八章——运用手机多媒体
知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...
- 第一行代码学习笔记第六章——详解持久化技术
知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...
- 第一行代码学习笔记第三章——UI开发的点点滴滴
知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...
- 第一行代码学习笔记第十章——探究服务
知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...
- 第一行代码学习笔记第七章——探究内容提供器
知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...
- 第一行代码学习笔记第五章——详解广播机制
知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...
- 第一行代码学习笔记第九章——使用网络技术
知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...
- 安卓教程----第一行代码学习笔记
安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...
最新文章
- 知识产权界福布斯排行榜公布:厉害了,我的中国!
- matlab基于dct的图像压缩编码解码_基于FPGA的扩频系统设计(下)
- 三步解决C语言中struct字节对齐问题,Python进阶篇-struct字节对齐问题
- mac的ideal终端中mvn命令不生效 commang not found
- calico 跨主机容器网络通信
- linux shc shell脚本_详解shell脚本加密解密软件—gzese和shc
- acquire方法_Python锁类| 带有示例的acquire()方法
- java ee me se_java EE ME SE有什么关系
- js 递归查询所有的叶子结点_浅谈mysql的查询过程
- docker快速搭建数据库测试环境
- verilog赋多位值_Verilog入门学习笔记——第一弹
- mybatis动态sql传ist集合參与传数组参数
- 在企业级开发中使用Try...Catch...会影响效率吗?
- 利用oc门或od门实现线与_OC和OD门、线与和线或
- java23种设计模式(十六) -- 中介者模式(行为设计模式)
- 回顾并总结关于复利计算器的三次实验
- Linux free命令中的Buffer和Cache
- vim ide_将Vim变成R IDE
- RL(十三)深度Q网络(DQN)
- Kurento实战之五:媒体播放
热门文章
- ExcelManager--基于.Net的Excel读写管理类库(一)
- Magento 产品推荐 extension Featured products 2.0 – revamped!
- Magento Helper简介
- FLEX常用验证控件
- Linux--shell脚本之正则表达式
- Ethercat解析(六)之功能概述
- numpy+pandas+matplotlib画箱形图
- LeetCode 669. Trim a Binary Search Tree
- 新到的电脑BIOS中无法识别U盘
- 对象流 ObjectOutputStream java