鸟哥LINUX私房菜学习笔记(7)

来源:互联网 发布:linux usleep 返回值 编辑:程序博客网 时间:2024/06/10 00:01

相对路径和绝对路径的区别:

相对路径:相对于当前工作的路径,路径的写法不是从根目录写起。

绝对路径:整个的路径是从根目录开始的。


目录类型:

. 当前目录,代表的是一个目录文件

.. 上一级目录

- 前一个工作目录

~ 目前用户所在的主文件夹

 

另外有一点需要注意的是,大家一直以为根目录是整个文件系统的顶级目录,但是通过LS的命令来查看的时候发现根目录里面也是有当前目录和上一级目录的存在的,但是这两个目录的属性都相同,所以说跟目录有上一级目录,但是是根目录自己。所有的目录下都会存在当前目录和上一级目录这两个类型的目录。


PWD这个命令是显示当前所在的目录,但是如果我要找的这个路径的终点是一个连接文件,它实际上指向的是另外一个路径。此时利用PWD是显示不出它所连接的那个文件的路径的,当加入参数P的时候,就会显示出连接文件源头的路径。


普通权限的用户不能在命令行下不加文件的绝对路径直接执行sbin文件夹下面的命令或者可执行文件,但是可以利用绝对路径来执行。因为sbin的命令没有添加到普通用户的PATH变量里面。


给环境变量添加路径:PATH:$PATH:绝对路径



CP命令的作用:

1.复制文件,2,建立 连接文件 3.  对比文件的新旧予以更新 4、复制整个目录

利用CP命令赋值文件或者目录权限会改变,目标文件的所有者以及用户组都会变成命令的执行者以及他所在的组

-a参数在cp命令中作用很大,他在复制文件的时候会把这个文件的所有特性都复制过来。


-s创建的是软连接 -l创建的是硬连接

-u这个参数在源文件比目标文件新的时候,会针对两者之间的差异对目标文件进行修改。常用于备份工作中。、

使用CP命令如果不加任何参数,那么复制的是源文件,如果想复制的是这个源文件的连接文件,那么要用-d这个参数

用户的权限不同执行CP的结果也不会相同。所以,即使加上-a,普通用户可能也不会将文件的所有权限都复制过来,比如文件的所有者还有所属的用户组,普通用户是没有权利更改的。


rm命令的作用:

一般当我们在删除一个目录的时候,如果这个目录为空,那么可以直接用rmdir这个命令,但是如果里面有东西,可以利用-r这个参数进行递归删除,但是在root用户下,由于默认为这个命令增加了-i参数,也就是询问默认,所以要一直确认y,才能全部删除,忽略这种问题的有两种办法,一种是利用-rf强制忽略,另外一种是在命令的前面加上反斜杠。

在删除一个文件名是以-开头的文件的时候,由于rm的误判,可能会把这个文件名作为参数来识别,此时要强调一下这个是文件名,./加上这个当前目录的路径,也就是相对路径,就可以识别它是文件名了。


在查看文本文件的时候,输入/,在输入需要查找的字符串,那么在整个文章中就会查找出带有这个关键字的部分。

 head在查看文本的时候会自动返回返回文本的前十行,如果加上-n再加上数字就可以指定要显示开头多少行。如果是负数,那么该文章最后的绝对值的行数不会被显示出来。如果表明是整数,带有+号,那么会显示100行以后的数据。


在利用tail命令查看文件尾部的内容的时候,如果加上-f参数,那就证明这个命令一直监视着这个文件,如果这个文件有改动,那么就会把文件的新加入的几行显示出来,直到退出。



关于OD命令:

od命令主要是用来查看非文本文件的内容,比如可执行文件的内容,用vim打开的时候肯定会出现乱码,所以可以用这个命令来做。


有关文件的时间主要有三种类型:

1、mtime当我们真正的修改文件内容的时候这个时间就会更新

2、ctime当文件的权限和属性改变的时候这个时间就会更新

3、atime当这个文件被采用的时候,被调用的时候,这个时间就会被更新。


关于touch命令:

touch这个命令应该有两个作用,除了可以创建一个空的文件之外还有另外一个功能就是改变文件的一些时间,比如文件的mtime,atime等等。


一行中不同的命令被分号隔开,那么这些命令会依次被执行。


关于文件的默认权限和隐藏属性:

通过设置文件的一些系统隐藏属性,可能文件的所有者都不能更改。

umask就是指定当前用户在创建文件的时候默认的权限。

umask有两种表现方式,一种是数字性质,另外一种是字符性质,字符形式的表示很清楚,但是数字显示方式可能代表意义是不同的。

大家都知道,权限分为三种rwx,分别对应的数值是421.umask上面的数字是多少,就证明这个用户在创建文件和目录的时候没有这个权限。 umask数字显示方法是有四个数字,默认的权限值只是对应后三个数字,第一个有其他用处。

一般文件的创建也不具有执行权限。

可以临时改变umask的值,直接输入umask后面加上要改的结果就可以,但是这是临时的,当你重新启动shell的时候,就又恢复到没有更改之前的样子了。


文件的隐藏属性:
主要是利用chattr这个命令来设置文件的隐藏属性。

chattr [+-=] -a(只能增加数据,除了root用户不能删除这个文件里面的数据)

  -i(不能删除,增加数据,也不能改名,除了root用户可以)

并且隐藏属性一旦设置好,那么root仅仅 能通过改变属性,相应的操作才会成功,不然如果你设置了i这个属性,那么即使是root 用户也不能 更改删除这个文件,只有root用户把这个属性改了之后,才能够进行一些操作。

由于现在设置的都是隐藏属性,那么查看的时候也要 用一个特殊的命令,lsattr。


文件的特殊权限:

SUID权限:这个权限仅对二进制的正在运行的程序有用。加入在该文件所有者可执行权限的位置上,把X替换成了s,那么任何可以执行这个进程的用户,在执行这个进程的时候都会暂时获得文件所有者的权限。

(不能用在shell脚本上面,仅仅可以用在二进制程序上面。并且这个命令对于目录也是无效的。)

SGID权限:这个权限可以对目录和文件来设置。并且它的S标志的位置是在相应文件组权限的X权限的位置,而SUID实在文件所有者x权限的位置。

SBIT权限:这个权限是针对文件目录的,当一个用户对于一个目录有W,X权限的时候,那么这个用户在这个目录下创建的额文件只有这个用户自己与root才能删除这个文件。

上面所提出的三个特殊的权限,在文件的整个权限中,都是要被添加到文件X权限的位置上,如果这个文件具有X权限,那么在设置的时候会有小写的s,t写入到相应的位置。如果这个文件本身没有x的权限 ,比如一般用于记录数据的文件,那么这个时候你对这种文件进行设置特殊权限的时候,相应的x的位置上就会变成大写的S和T,这就表示是空的,没有的,既然文件都没有执行权限,那么何来这三个特殊的权限呢。


file命令用于查看一个文件的基本信息记忆这个文件的类型。并且可以看见这个文件的格式。



which [-a] command  在用户指定的PATH这个环境变量的路径中,需要一个可执行文件名,也就是你要查询的命令实际所在的位置。加上-a就会把查找到的全部显示出来,什么也不加的话,默认只显示第一条。

因为是在PATH中提供的路径找,所以root用户和普通用户执行查询某些命令的位置结果是不一样的,因为二者的PATH不太一样。

关于locate 和 whreris:

查找文件名的方法应该有两种,第一个就是find,这个命令是针对硬盘上的数据进行查找,速度较慢,还有一个就是locate or whereis,这两个命令是利用数据库来查找,比较快速,一般都是后两个没有找到,然后采用find来找。

whreris查找一个命令的文件名,不会像which这个命令一样,会区分不同的用户不同的PATH,只要系统中确实有这个东西,那么whereis都会帮你找到。 还可以通过-m指定关键字进行查找。

locate和whereis这两个命令的原理是一样的,他们之所以比find命令的查询要快速,就是因为他们并没有去硬盘上实际的遍历所有的文件去查找,而是查找了一个数据库文件,这个数据库文件记录了整个操作系统内部所有的文件。但是同时也就出现了一个问题,我每次查找的是一个文件,不同的系统中,这个数据库文件的更新时间是不同的,很可能在我增加文件和删除文件之后,这个数据库文件没有更新,那么你的查找结果就会出错。这个数据库的文件的绝对路径是/var/lib/mlocate.如果一直想用 这种方式去查找文件名的话,那么就要保证,这个数据库的文件是最新的。所以要用updatedb这个命令来更新这个文件,执行这个命令的时候,他会读取/etc/updatedb.conf这个配置文件,然后在硬盘里面查找一些更新,进而更新那个数据库的文件。



0 0
原创粉丝点击