2019/12/10学习内容摘要(Linux文件和目录管理)

Posted xqzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019/12/10学习内容摘要(Linux文件和目录管理)相关的知识,希望对你有一定的参考价值。

1.绝对路径和相对路径

 *绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql

 *相对路径:路径的写法不是由根目录 / 写起的,例如 首先用户进入到 /home,然后再进入到test,执行的命令为 “#cd /home,#cd test”。此时用户所在的路径为 /home/test。第一个cd命令后紧跟/home,前面有斜杠;而第二个cd命令后紧跟test,前面没有斜杠。这个test是相对于/home目录来讲的,所以称为相对路径

2.与目录相关命令

1. cd  (change directory简写)  用来变更用户所在目录,如果后面什么都不跟,就会直接进入当前目录的根目录下。如果后面跟目录名,则会切换到指定目录下。(命令cd后面只能跟目录名)

2.pwd 用于显示当前所在目录

*  “ . ”表示当前目录  “ .. ”表示当前目录的上一级目录

技术图片技术图片

 

 

3.mkdir(make directory的简写)用于创建目录

 选项【-p】创建连级目录,并且当创建一个已经存在的目录时,不会报错。

 选项【-m】用于指定要创建目录的权限

技术图片

 

4.ls  列出目标目录中所有的子目录和文件。(不包含.开头的文件)

   选项【-l】      除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来

   选项【-d】     针对目录,通常和-l并用

技术图片

 

5. rmdir 用于删除空目录 只能删除目录 不能删除文件

6.rm 用于删除目录或文件

选项【-r】删除目录用的选项 可以删除非空目录 

技术图片

 

 

选项【-f】表示强制删除 不询问是否删除。且有不存在文件时不会报错。

技术图片

 

 

7.cp 用于复制文件或目录 格式为 cp【选项】【来源文件】【目的文件】

选项【-r】  如果要复制一个目录 必须加-r选项,否则不能复制。

选项【-i】如果遇到一个已存在的文件,会询问是否覆盖。

8.mv 是move的简写  格式为 mv【选项】【源文件或目录】【目标文件或目录】有如下几种情况

*目标文件是目录,但该目录不存在。
*目标文件是目录,且该目录存在。
*目标文件是文件,且该文件不存在。
*目标文件是文件,但该文件存在。
当目标文件是目录时,其存在与否,执行后的结果是不一样的。如果该目录存在,则会把源文件或目录移动到该目录中。如果该目录不存在,则会把源目录重命名为给定的目标文件名。
当目标文件是文件时,其存在与否,执行后的结果也是不一样的。如果该文件存在,则会询问是否覆盖。如果该文件不存在,则会把源文件重命名为给定的目标文件名。

技术图片

 

 3.几个与文档相关的命令

1.cat 用于查看一个文件的内容并将其显示在屏幕上

选项【-n】查看文件时,把行号也显示到屏幕上

选项【-A】显示所有内容 包括特殊字符

2.tac  也用于查看文件内容  显示结果为cat的反序

3.more 分页查看文件内容 空格键向下翻页 Ctrl+b向上翻页 q键退出

4.less    命令less的作用和命令more一样,后面直接跟文件名,但命令less比more功能要多一些。按空格 键可以翻页,按键可以向下移动(按一下就向下移动一行),按k键可以向上移动。在使用more和less查看某个文件时,你可以按一下/键,并输入一个字符串(如root),然后回车,这样就可以查找这个 字符串了。如果是查找多个该字符串,可以按n键显示下一个。另外,也可以用?键替代/键来搜索字符串,唯一不同的是,/是在当前行向下搜索,而?是在当前行向上搜索。

5.head 用于显示文件前10行 后面直接跟文件名 

选项【-n】如果加-n选项 则显示文件的前n行

6.tail 显示文件的后10行 后面直接跟文件名 

选项【-n】如果加-n选项 则显示文件的后n行

*选项【-f】动态显示文件后10行

4.文件的所有者和所属组

文件所有者:文件的拥有者(user)

文件所属组:文件属于哪一个用户组(group)

其他用户 (others)

可以通过ls -l命令来查看这些属性 

技术图片

图中第三列 和第四列就是所有者和所有组

 

5.linux的文件属性

第一列包含文件的类型,所有者,所属组,以及其他用户对该文件的权限

1.文件类型包括;

                     d 表示该文件为目录

                     -表示该文件为普通文件

                     l 表示该文件为链接文件

                     b表示为块设备      

                    c表示为串行端口设备文件  (键盘,鼠标,打印机)

                    s表示为套接字文件

2.文件类型后面的9位,每3位为一组,上例中均为rwx这3个参数的组合。其中,r代表可读,w代表可写,x代表可执行。前3位为所有者(user)的权限,中间3位为所属组(group)的权限,最后3位为其他非本群组用户(others)的权限。

 

第2列:表示该文件占用的节点(inode),如果是目录,那这个数值与该目录下是子目录数量有关。

第3列:表示该文件的所有者。
第4列:表示该文件的所属组。
第5列:表示该文件的大小。
第6列、第7列和第8列:表示该文件最后一次被修改的时间(mtime),依次为月份、日期以及时间
第9列:表示文件名。

6.更改文件权限

1.命令chgrp 可以更改文件所属组 格式为chgrp【组名】【文件名】

选项【-R】连级更改子目录和子文件所属组

*groupadd 【组名】为增加用户组

*userad【用户名】为增加用户

 2.chown 可同时更改所有者和所有组 格式为chown【所有者】.【所属组】【文件名】

选项【-R】连级更改子目录和子文件所有者,所属组

3.chmod 用于更改文件权限  格式为chmod xxx 【文件名】 (为了方便更改Linux使用数字代替rwx   r=4  w=2 x=1      例如 rwxrwx---用数字表示就是770)

选项【-R】连级更改子目录和子文件权限

*Linux目录默认权限为755 文件默认权限为644

4.umask 用于改变文件的默认权限 其格式为 umask xxx 如果要查看umask的值 在命令行之后输入umask然后回车即可

这里umask预设值为0022  

这表示什么含义呢?咱们先来看以下两条规则。
 若用户建立普通文件,则预设没有可执行权限,只有r、w两个权限,最大值为666(-rw-rw-rw-)。
 若用户建立目录,则预设所有权限均开放,即777(drwxrwxrwx)。
umask数值代表的含义为以上两条规则中的默认值(文件为666,目录为77)需要减掉的权限,所以:
目录的权限为rwxrwxrwx - ----w--w-=rwxr-xr-x普通文件的权限为rw-rw-rw- - ----w--w-=rw-r--r--
 umask的值是可以自定义的,比如设定umask为002 命令如下
# umask 002 回车即可

5.chattr 用于修改文件特殊属性 其格式为chattr【+-=】【Asaci】【文件或目录名】其中+-=分别表示增加减少和设定 各个选项含义如下

A:增加该属性后,表示文件或目录的atime将不可修改。
s:增加该属性后,会将数据同步写入磁盘中。
a:增加该属性后,表示只能追加不能删除,非rt用户不能设定该属性
c:增加该属性后,表示自动压缩该文件,读取时会自动解压。
i:增加该属性后,表示文件不能删除、重命名、设定链接、写人以及新增数据。

技术图片

 

 6.lsattr 用于读取文件或目录的特殊权限 格式为lsattr 【-aR】【文件名、目录名】

选项【-a】显示隐藏文件

选项【-R】连同子目录数据一同列出

7.set uid,set gid和sticky bit

set uid 该权限针对二进制可执行文件 使文件在执行阶段拥有文件所有者权限

set gid 该权限可作用在文件上 也可作用在目录上 使文件在执行阶段拥有文件所属组权限

sticky bit 可以理解为防删除位及时用户具有写权限 也不能删除其他用户文件

配置这些特殊权限的方法和之前一样。比如,我想给一个文件增加set uid权限,那么命令为chmodu+s filename,而去掉这个权限的命令则为chmod u-s filename。同理,想设置set gid权限的命令为| chmod g+s dirname,设置sticky bit权限的命令为chmod o+t dirname。
|  有时候,你可能会发现set_uid上的权限为大写的S,而不是小写的s,比如rwS,这是因为该文件没有x权限所致,不管是大写的S还是小写的s,都表示它存在setuid或者set_gid权限,同理sticky bit也一样。

7.在Linux下搜索文件

1.which 用于查找可执行文件的绝对路径

如 ;

# which vi

/usr/bin/ni 

2.whereis 用于查找文件 格式为whereis 【-bms】【文件名称】

选项【b】只查找二进制文件

选项【m】只查找帮助文件

选项【s】只查找源代码文件

3.find  同于搜索文件 格式为 find【路径】【参数】

常用参数:

-atime +n/-n:表示访问或执行时间大于或小于n天的文件。
-ctime +n/-n:表示写入、更改inode属性(如更改所有者、权限或者链接)的时间大于或小于n天的文件
-mtime +m/-n:表示写入时间大于或小于n天的文件,该参数用得最多。

stat命令可以列出文件的atime。ctime和mtime

 

技术图片

 

 find其他常用选项

-name filename 直接查找该文件名的文件 (支持*通配 如find . -name "test*")

-type filetype 表示通过文件类型查找文件 (包括 f,b,c,d,l,s等类型)

9.Linux文件类型

1.普通文件     2.目录    3.链接文件   4.设备

Linux的链接文件

       硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块区域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块区域,即进行硬链接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制:(1)不能跨文件系统,因为不同的文件系统有不同的inode table;(2)不能链接目录
       软链接:与硬链接不同,软链接是建立一个独立的文件,当读取这个链接文件时,它会把读 取的行为转发到该文件所链接的文件上。例如,现在有一个文件a,我们做了一个软链接文件b(只是一个链接文件,非常小),b指向了a。当读取b时,b就会把读取的动作转发到a上,这样就读取了文件a。当我们删除文件a时,链接文件b不会被删除;但如果再次读取b时,会提示无法打开文件。然而,当我们删除b时,a是不会有任何影响的。

命令ln  用于建立硬链接/软连接  格式 ln【-s】【来源文件】【目的文件】

选项【-s】添加-s选项就是建立软连接 否则为创建硬链接

10.Linux的目录结构

 /bin:bin是Binary的缩写,该目录下存放的是最常用的命令。?

/boot:该目录下存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。?

/dev:dev是Device(设备)的缩写。该目录下存放的是Linux的外部设备。在Linux中,访问设备的方式和访问文件的方式是相同的。?

/etc:该目录下存放的是所有系统管理所需要的配置文件和子目录。?

/home:这是用户的主目录。在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。?

/lib和/lib64:这两个目录下存放的是系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。其中/lib64为64位的软件包的库文件所在目录。?

/media:系统会自动识别一些设备(如U盘、光驱等),当识别后,Linux会把识别的设备挂载到该目录下。?

/mnt:系统提供该目录是为了让用户临时挂载别的文件系统。我们可以将光驱挂载到/mnt/上,然后进入该目录查看光驱里的内容。?

/opt:这是给主机额外安装软件所设置的目录,该目录默认为空。比如你要安装一个ORACLE数据库,可以放到该目录下。?

/proc:该目录是一个虚拟的目录,是系统内存的映射,我们可以通过直接访问来获取系统信息。该目录的内容在内存里,我们可以直接修改里面的某些文件。比如可以通过下面的命令来屏蔽主机的ping命令,使其他人无法ping你的机器。后续,在日常工作中,你会经常用到类似的用法。

# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all ?

/root:该目录是系统管理员的用户主目录。?

/run:这个目录其实和/var/run是同一个目录,这里面存放的是一些服务的pid,一个服务启动完后,是有一个pid文件的。至于为什么说是同一个目录,Linux是如何做到的,后续我们再介绍。? /sbin:s就是Super User的意思,该目录存放的是系统管理员使用的系统管理程序。?

/srv:该目录存放的是一些服务启动之后需要提取的数据。?

/sys:该目录存放的是与硬件驱动程序相关的信息。?

/tmp:该目录是用来存放一些临时文件的。?

/usr:这是一个非常重要的目录,类似于Windows下的Pro

 /usr/bin:该目录存放的是系统用户使用的应用程序。?

/usr/sbin: 该目录存放的是超级用户使用的比较高级的管理程序和系统守护程序。?

/usr/src :该目录是内核源代码默认的放置目录。?

/var:该目录存放的是在不断扩充且经常被修改的目录,包括各种日志文件或者pid文件,刚刚提到的/var/run就是在/var目录下面在Linux系统中,有几个重要的目录需要注意,不要误删除或者随意更改其内部文件。下面阿铭再简单总结一下这几个重要的目录。?

/etc目录下是系统的配置文件,如果更改了该目录下的某个文件可能会导致系统无法正常启动。 ?

/bin、/sbin、/usr/bin和/usr/sbin目录是系统预设的执行文件的放置目录,其中/bin和/usr/bin目录下是供系统用户使用的指令(除root外的通用账户),而/sbin和/usr/sbin目录下则是供root使用的指令。比如ls指令就存放在/bin/目录下。 ?

/var也是一个非常重要的目录,系统上运行各个程序时所产生的日志都被记录在该目录下(即/var/log目录中),另外mail指令的预设也放置在这里。

 

 

 

 

 

 

 

 

 

 

以上是关于2019/12/10学习内容摘要(Linux文件和目录管理)的主要内容,如果未能解决你的问题,请参考以下文章

2019/12/12学习内容摘要(Linux系统用户与用户组管理②)

linux---学习

20169217 《Linux内核原理与分析》 课程总结

最全的大数据入门学习路线

关于linux操作系统中进程相关问题的学习笔记

Tmux 学习摘要2--配置