zoukankan      html  css  js  c++  java
  • 文件系统

    1、一切皆文件:linux的基本原则之一就是一切皆文件。配置文件保存为存文本格式;目录也是文件,是文件路径的映射。

    2、创建文件

      文件命名:文件的命名规则是长度不能超过255个字符,且路径中不能包含/字符,并且是严格区分大小写的。

      文件类型:因为一切皆文件,所以必须对它进行细分以便不同的作用。一共有7种,分别是 b块文件 c字符文件 d目录 f文本文件 l链接文件 p管道文件 s套接字。

      创建命令

        创建目录:mkdir -p父目录不存在就创建父目录 -v显示详细信息

        创建文本:touch。touch的本意并不是创建文件,而是修改文件的时间戳,但是在文件不存在的时候就会创建文件,可用-c选项指定不创建文件。其修改文    件时间戳的选项有-a修改访问时间 -m修改文件内容改变时间 -t指定时间。

    3、文件编辑

      文本编辑

        文本处理:移动mv;复制cp 选项 -p为原文件为链接文件时只复制链接;删除 -i显示删除信息 -f强制删除 -r迭代删除父目录;查看的命令比较多有stat、     cat、tac、head、tail、more、less,以及对内容的选择查看命令cut,sort,uniq,wc。

          stat查看文件的属性。

          cat与tac为一组,前者为正向输出,后者为反向输出,常用选项有-A显示包括非打印字符 -E显示每行最后的$符 -n显示每行的行号

          head与tail为一组,前者是从头查看,后者是从尾查看,用-n指定显示前/后几行。并且tail还有另一个用途,就是-f选项,可用于对某文件的监控查看,      它会显示追加至文件尾部的内容。

          more和less为一组,都可以实现分页查看,但more只支持向后翻,因此用的没有less多。less和man查看的帮助文档操作一样,支持向前向后,space      键向后,B键向前,k一行行向前,enter一行行向后。

          cut对有规律的文本可以指定查看,用-d指定分隔符 -f指定查看的位置。

          sort是对文本内容排序的命令,-n按数字排序 -r逆向排序 -t指定分隔符 -k按分隔符确定的第几个位置排序 -f忽略大小写 -u不显示重复行。

          uniq常结合sort使用,它的功能是不显示相邻的重复行,-d可只显示相邻的重复行 -c显示重复的次数

          wc是对文本内容的统计包括行数、词数、字节数,可用-l只显示行数 -w只显示词数 -c只显示字节数,-L用于显示最长行的字节数。

        文件查找:文件的查找命令用到find,用到它就不能不想到grep,grep是在文本中匹配相关内容,find是在目录中查找相关文件。早期的文件查找命令还有      locate,但locate需要在本地建立数据库,建立数据库的命令是updatedb,但这个过程相当占用cpu,因为是用本地的数据库,因此查找速度十分块,且查找是模    糊查找。相比之下,find用的更为广泛,它是精确匹配,实时查找,因此速度相对比较慢。find使用格式如下:

        find [options] [查找路径] [查找条件] [处理动作] 

        查找路径默认是当前路径,可以手动指定。

        查找条件:-name指定名称,支持通配符 -iname忽略大小写 -user指定属主 -group指定属组 -uid指定(uid) -gid指定(gid) -nouser -nogroup指定没有属主或属组    的 -type指定文件类型 -size指定大小 -perm指定权限 -time指定时间。其中-size -time当指定大小*时它表示的范围在(*-1,*],+*表示(*,..) -*表示(..,*-1);-perm指定    权限mode时,若为mode则表示精确匹配,不能多也不能少,+mode则表示只要有匹配的就可以,-mode表示指定的都要匹配。

        处理结果:-print将结果以标准流输出,-ls以长格式输出,-exec COMMAND {} ; 和-ok COMMAND {} ;都是对查找的结果执行命令,可用占位符。除此之外还可以用find | xargs COMMAND重定向。

      目录管理:ls cd pwd rmdir(只能删除空目录,一般用rm -rf)

    3、文件的权限

      权限种类:文件的权限是对用户而言的,因此说到权限就不能不说是哪个用户。用户分三种ugr,文件的属主、属组和其他,权限有rwx。

      修改权限:chown改变文件的属主,若想改变文件下目录的属主,可用-R 具体例子为chown staff:staff /u

       chgrp其实chown就可以改变属组 chgrp staff /u,同样可以使用-R

      chmod修改文件的三类用户rwx权限,chmod 664 /u或者chmod g+x /u 或者chmod g=rw-

    4、特殊权限

      可执行文件suid:除了上面所说的rwx外,对于某些文件还有一些特殊权限。在说suid之前应该先搞明白用户访问文件的权限具体细节。例如用户hadoop访问一个文件1.txt(rw-rw-r-- root root)时,首先看文件的属主和访问它的用户是否一致,如果一致,就按属主的权限访问,如果不一致,就看hadoop是否属于文件的属组,属于就用属组的权限,不属于就用其他的权限。因此当我们用hadoop执行/bin/cat(rwxr-xr-x. 1 root root) 这个命令的时候,将会以其他的权限来执行这个文件,在执行这个文件后,它会产生一个进程去访问指定文件,此时访问这个文件用户还是最初的hadoop。但是当我们复制/bin/cat到/tmp(rwsr-xr-x. 1 root root)目录,并给它suid权限时,再用这个命令去访问文件就会发生变化。当我们用hadoop去访问/tmp/cat这个文件,还是一样会以其他权限执行,但是执行完这个文件后,这个文件产生的进程将以/tmp/bin的属主去访问指定的文件。这就是suid的用途。可用命令chmod u+s file实现。

      目录的sgid:具有sgid的目录,在此目录下创建的文件属组不是用户的基本组,而是此目录的属组。

      粘滞位sticky:用于控制在一个公共的可写目录中,每个用户只能删除自己创建的文件,不能删除别人的,但是每个人都可以对文件进行编辑。

    5、facl 文件访问控制列表

      产生的需要:对于普通的用户(非管理员),想将属主为自己的文件让另一个用户可读写,而让其他用户不可读写。facl就是对文件的这样一种控制访问机制。

      常用的命令

        设定权限:setfacl -m u:username:mode file 或者setfacl -m g:group:mode file

        取消权限:setfacl -x u:username file或者setfacl -x g:group file

        查看:getfacl file

  • 相关阅读:
    LeetCode 8 有效的括号
    String源码学习
    LeetCode 7最长公共前缀
    LeetCode 5回文数
    LeetCode 6罗马数字转整数
    LeetCode 4.反转整数
    LeetCode 3.无重复字符的最长子串
    区分子串和子序列
    LeetCode 1.两数之和
    一个十分好用的动画工具:Velocity.js
  • 原文地址:https://www.cnblogs.com/Jc-zhu/p/4622640.html
Copyright © 2011-2022 走看看