首页 > 代码库 > 巩固基础
巩固基础
知识回顾
最近学习了脚本,但是在学习以及练习过程中,我发现许多以前学过的知识都模糊了,甚至都忘了,在用到的时候必须翻笔记才能回忆起来。有感而发,所以写了这篇博文,来巩固一下先前所学的知识,加深记忆。
一、内部命令与外部命令
在创建完脚本并执行过之后,把脚本文件移动到别的目录再执行就会报错,这是因为在执行过一次之后该路径会被缓存到hash表,当你下次执行时会在hash表里边找,但是hash表里记录的是第一次执行时的路径,因此在移动了文件之后它就找不到了,便报错。这个点我当时也没想起来,因此在这里复习一下。
type COMMAND 判断一个命令的类型
enable -n COMMAND 禁用一个内部命令
enable -n 显示所有被禁用的内部命令
enable -n |wc -l 统计被禁用的内部命令数量
enable COMMAND 启动一个内部命令
enable 显示所有启用的内部命令
enable |wc -l 统计启用的内部命令数量
enable -a 显示所有的内部命令
enable -a |wc -l 统计所有的内部命令数量
hash 显示当前被hash的外部命令
-l 显示当前被hash的外部命令,包含别名
由上图可见,当使用hash查看没有使用过的外部命令时,hash表中没有该记录,当使用过时,该命令就会缓存到hash表,在下次使用时直接在hash表里找,不在其路径中找,这样能加快速度。而且hash -l 显示的内容比hash要详细
-p /.../.... name 手动增加一个hash缓存
-d name 删除一个hash
-r 清空所有的hash
二、man
man显示的帮助信息要比help多得多,因此在学习linux时要时刻借助man来帮助自己了解如何正确使用命令。在这里就不再详细示例了,就大致说一下里面包含的内容。总之在遇到自己模糊的命令时,man一下它就知道怎么用了,但是文档都是英文的,像博主英文这么差的人还得词典翻译一下。
man 章节: 1、用户命令
2、系统调用
3、C库调用
4、设备文件即特殊文件
5、配置文件格式
6、游戏
7、杂项
8、管理类的命令
9、Linux内核API
man 帮助段落说明:
N 名称及简要说明
SYNOPSIS 用法格式说明:
[] 可选内容
<> 必选内容
a|b 二选一
{} 分组
... 同一内容可出现多次
SESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORYING BUGS bug信息
SEE ALSO 其他帮助参考
其实info也可以查看帮助信息,但是内容实在太多,还得翻半天,不实用,用man 一般就足够了。
三、时间戳
在bash文件属性测试中,file1 -nt file2 是判断file1是否新于file2,新旧基于mtime,然而博主已经快忘了时间戳用法了,希望写出来能调取体内的洪荒之力。
atime 表示访问时间
mtime 表示文件数据修改时间
ctime 表示文件元数据修改时间,修改文件一定会触发ctime的更改(包含文件权限,大小,时间等等)
stat filename 可以查看文件时间戳
touch filename 当文件不存在时,则创建一个空文件,名为filename
当文件已存在时,则更新期时间戳
-a 仅更新atime,ctime
-m 仅更新mtime, ctime
touch filename 会更新全部时间戳
例 touch -a filename 对比可发现atime和ctime更改了,而mtime没有变化
四、链接:
硬链接本质:一个文件,多个名字,即inode都一样。修改其中一个文件,所有都变;删除源之后,不影响。
删除一个文件时,就会减少其硬链接数,当减少到0,就释放inode号。
硬链接不能跨分区。
ln filename linkfilename 创建硬链接。目录不能创建硬链接。
在创建链接前,test1显示的链接数目为1,创建链接后test1和test2的链接数目都变为2,test1和test2的inode号是一样的,test1和test2显示的文件大小也是一样。可见进行了ln命令的操作结果:test1和test2是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件test1的硬链接,就是为test1的文件索引节点在当前目录上建立一个新指针。
软链接:新建一个inode号,数据区存的路径,所以可以跨分区。删除源之后,链接就不管用了,删除链接不影响源。
ln -s filename [linkname] 创建软链接
软链接原文件和链接文件拥有不同的inode号,表明他们是两个不同的文件,而硬链接原文件和链接文件公用一个inode号,说明他们是同一个文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;在链接数目上也是不一样的,软链接的链接数目不会增加;文件大小也是不一样的,硬链接文件显示的大小是跟原文件是一样的,而软链接显示的大小与原文件就不同了。总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
五、特殊权限:
suid 当对一个可执行的二进制文件作用了SUID权限之后,任何拥有执行该文件权限的人, 在执行的过程时都临时拥有该文件所属人的权限。
suid是作用在工具上的,工具本身所属人是谁,用户使用工具时就以谁的身份。 例如:chmod u+s cat
表示给cat加上suid,则任何使用cat命令的用户都以cat所属人的身份执行
原本有x权限,权限位则显示小写s,原本没有则显示大写S
sgid 当对一个可执行的二进制文件作用了SGID权限之后,任何拥有执行该文件权限的人, 在执行的过程时都临时拥有该文件所属组的权限。
当对一个目录作用了SGID权限之后,任何对该目录有wx权限的用户在该目录下创建 的文件及目录的所属组均为该目录的所属组。
例如: chmod g+s /app
在root下给/app目录加上sgid权限,则其他用户在该目录下创建的文件所属组都 为/app目录的所属组
sticky 当对一个目录作用了sticky之后(只限制组用户,目录的owner不受影响),该目录 下的文件仅其所属人才能删除。
作用方式:chmod o+t directory
以上是我对以前一些知识的回顾,在重新复习之后又有了新的理解和掌握,希望大家都能时常巩固知识,直到把知识融汇贯通。如有其他知识或意见需要交流,欢迎留言。
巩固基础