设为首页 收藏本站
查看: 656|回复: 0

[经验分享] Centos 7 文件和目录管理

[复制链接]

尚未签到

发表于 2018-4-25 11:01:13 | 显示全部楼层 |阅读模式
               如若有错,请评论,虚心请教。
  文件系统结构:
      /boot:系统引导文件,内核
      /bin:用户的基本命令
      /dev:设备文件
      /etc:配置文件
      /home:用户家目录
      /root:root用户家目录
      /sbin:管理类的基本命令
      /tmp:临时文件存放地
      /usr:共享的只读数据
      /mnt:临时文件系统挂载点
      /media:移动设备挂载点
      /opt:第三方应用程序的安装位置
      /srv:系统运行的服务用到的数据
      /var:变化的数据文件
      /proc:用于输出内核与进程信息相关的虚拟文件系统
      /sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统
  

  文件类型:用ls -l filename 即可查看
      -:普通文件
      d:目录文件
      b:块设备文件
      c:字符设备
      l:符号链接
      p:管道
      s:套接字文件socket
  

  

  pwd:显示当前的工作目录
  #pwd   显示当前的工作目
          直接输出pwd命令,会显示出当前所在的完整路径
                  DSC0000.png
     
#$PWD   保存了变量当前目录路径
        pwd命令调用PWD变量内的值,当用户切换目录时,会自动更新变量内的值,输入pwd命令就会引用变量的值。
                  DSC0001.png
  #$OLDPWD 保存了上一次所在的目录路径
                  DSC0002.png
  
  

  

  cd:切换目录
  #cd  /PATH/TO/SOMEFILE   切换当前工作目录到指定目录(只能是目录,不能是文件)
  [root@localhost tmp]# cd /etc/sysconfig/network-scripts/
  #cd - 切换到上一个工作目录
  [root@localhost network-scripts]# cd -
  /tmp
  [root@localhost tmp]#
  #cd ..切换到上一层目录
  [root@localhost tmp]# cd ..
  [root@localhost /]#
  #cd  /cd ~ :切换到用户的家目录
  [root@localhost /]# cd
  [root@localhost ~]#
  [root@localhost etc]# cd ~
  [root@localhost ~]#
  
  #cd  -P /bin:切换到软链接的实际地址
  #cd ~ - /sysconfig  切换到当前目录的上一层然后在进入指定层。
  [root@localhost bin]# cd ~-/etc/      
  [root@localhost etc]#
      当前目录路径为/bin,然后使用'~-/etc' 就切换到etc下,因为bin的父目录为 / ,然后etc的父目录也为 /,那么就是bin切出去一层在进入etc。
  #cd ~+/sysconfig 切换到当前目录的指定层
  [root@localhost etc]# cd ~+/sysconfig/network-scripts/
  [root@localhost network-scripts]#
          在当前目录路径上切到子目录。
  

  

  

  ls:列出当前目录或指定目录的文件和目录
  -a :显示包含隐藏文件的所有文件
  [root@localhost /]# ls -a
  .  ..  .autofsck  .autorelabel  bin  boot  dev  etc  home  lib  lib64     //这里我没复制完。  带点‘.’的为隐藏文件。
  - l : 显示文件或目录的详细信息
  [root@localhost /]# ls -l
                 第一列    第二列   第三列到第五列       第六到八列 第九列
              dr-xr-xr-x.    2       root  root  4096      Jul 25 10:37  bin
              dr-xr-xr-x.    5       root  root  1024      Jul 25 09:10  boot
              drwxr-xr-x    20     root  root  3840      Jul 25 11:44  dev
              drwxr-xr-x.   102   root  root  12288    Jul 25 12:28  etc
              drwxr-xr-x.   3       root   root  4096     Jul 25 09:20  home
              dr-xr-xr-x.     11    root   root  4096     Jul 25 09:04  lib
              -rw-r--r--       1     root   root  151       Jul 25 14:10  testnet
              lrwxrwxrwx.  1      root   root   14         Jul 25 09:03  system-release -> centos-release
               // 列出当前目录的目录和文件的详细信息,其中:
           第一列第一位位字母:表示文件类型
  - : 表示普通文件
  d: 表示目录
   l: 表示符号链接文件
  b: 表示块设备文件
  c: 字符设备文件
  p: 命令管道
  s:  套接字文件
                     第一列第2到10位字母:表示权限,每三位一组
                              第一组三位权限owner(r,w,x):表示属主的权限,属主为第三列的 root,只有属主本身才能使用此类权限
                              第二组三位权限group(r,w,x ):表示属组的权限,属组为第四列的root,包含在此组的所有用户可用此类权限进行访问
                              第三组三位权限other(r,w,x ) :表示其他用户的权限,除了不是本文件的属组,或包含在属组里的用户之外的权限
                      第二列数字:表示此文件被硬链接的次数
                      第三列到第四列字母:表示此文件的属主(onwer)和属组(group)
  
                      第五列为此文件的大小(size)
  
                      第六到第八列为此文件的mtime(更改时间)
  
                      第九列:文件名
  -R:递归目录下的文件
          //显示目录下的目录和文件。
              [root@localhost /]# ls -R /etc/
              /etc/abrt:
              abrt-action-save-package-data.conf  abrt.conf  gpg_keys  plugins
              

              /etc/abrt/plugins:
              CCpp.conf  oops.conf  python.conf
              

              /etc/acpi:
              actions  events
              

              /etc/acpi/actions:
              power.sh
              

              /etc/acpi/events:
              power.conf  video.conf
  -d:目录自身,配合 -l  选项使用
              //列出目录自身的详细属性,不列出其内部的文件或目录
                  [root@localhost /]# ls -ld /
                  dr-xr-xr-x. 25 root root 4096 Jul 25 13:01 /
                  [root@localhost /]#
                   
  -1:每个文件分行显示
      //将目录下的所有文件或目录每个文件为独立一行来显示
      [root@localhost /]# ls -1
              bin
              boot
              dev
              etc
              home
              tmp
              usr
              var
              [root@localhost /]#
  -S: 按文件大小排序(从大到小排序)
    [root@localhost /]# ls -lS /
  total 106                       此列为文件大小
  drwx------.   2 root root        16384   Jul 25 08:59 lost+found
  drwxr-xr-x. 102 root root      12288   Jul 25 12:28 etc
  dr-xr-xr-x.   2 root root         4096     Jul 25 10:37 bin
  drwxr-xr-x.   3 root root       4096     Jul 25 09:20 home
  drwxr-xr-x   20 root root       3840    Jul 25 11:44 dev
  dr-xr-xr-x.   5 root root         1024     Jul 25 09:10 boot
  drwxr-xr-x    2 root root        0 Jul     25 11:44 misc
  drwxr-xr-x   13 root root       0 Jul       25  2016 sys
  
  
  

  

  文件名通配(glob)
  *:匹配0个或多个任意字符
              //显示’ / ‘ 下面的以’ t ‘ 开头,后面跟0次或多次的任意字符的目录或文件
  [root@localhost /]# ls -d /t*
  /testdir  /tmp
  

  ?:匹配任意单个字符
           // 显示’ / ‘ 下面的以’ s ‘ 开头,后面跟两个任意的1个字符的目录或文件
  [root@localhost /]# ls -d /s??
  /srv  /sys
  
  []:指定范围内的任意单个字符[a-c]=aAbBc
          //显示’ / ‘ 下面的以’ d ‘ 开头,中间为 a到z 之间的任意一个字符,以b结尾的目录或文件。其中[a-z]包括(a,A,b,B,c,C,d,D.....到z,不包括大写Z)
  [root@localhost /]# ls -d /l[a-z]b
  /lib
  [^]:指定范围外的任意单个字符[^a-c]=[aAbBc]
           //显示’ / ‘ 下面的以’ d ‘ 开头,中间为非数字,以b结尾的文件
  [root@localhost /]# ls -d /l[^0-9]b
  /lib
      可用于[],[^]的常用元字符。
          [0-9]:指定0-9之间的任意一个数字
          [a-z]:指定a-z之间的任意一个字母(其中有 a,A,b,B,c,C,d,D,e,E......一直到小z)
      以下元字符用在[],[^]里,列如:
  [root@localhost /]# ls -d /s[[:alpha:]]*
  /sbin  /selinux  /srv  /sys/sTmp
       //表示以s开头,中间是字母(不区分大小写),以任意一个或个多字符结尾的目录或文件
  [:lower:]:所有小写字母
  [:upper:]:所有大写字母
  [:punct:]:所有标点字符
  [:digit:]:所有数字
  [:alnum:]:所有字母和数字
  [:alpha:]:所有字母(不区分大小写)
  [:space:]:所有空格字符
  
  

  

  stat:查看文件或目录状态
   stat  FILE...
        [root@localhost /]# stat /test
    File: `/test'      //文件名
    Size: 12288     //文件大小Blocks: 24        IO Block: 4096   directory
  Device: fd00h/64768d //设备地址Inode: 1179649 //索引节点    Links: 102 //链接次数
  Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)     //访问此目录权限,以及此文件属主和属组
  Access: 2016-07-25 12:38:37.884763443 +0800     //最后一次访问此文件时间
  Modify: 2016-07-25 12:28:44.165763586 +0800      //最后一次更改此文件的时间
  Change: 2016-07-25 12:28:44.165763586 +0800     //最后一次改变此文件的时间
  文件有两个数据:
          元数据:matedate
                  //文件的属性值
          数据:date
                  //文件内的文本数据
      元数据内的时间戳:
  access time(atime):访问时间,在读取文件或者执行文件时更改
  modify time(mtime) : 修改时间,,在写入文件时随文件内容的更改而更改。
  change time (ctime):改变时间,在文件的属性值更改儿更改,如更改权限、大小、索引值等。
  

  

  

  

  用ls查看文件指定时间戳
DSC0003.png

  

  touch:创建空文件课刷新文件时间戳
  touch [OPTION]... FILE....
  -a:仅改变文件的atime(访问时间)
          1、当使用 -a 重复创建已存在的文件时,会更改文件的访问时间和改变时间为当前系统时间。,因为-a相当于重新创建一次,只是内容没变罢了,所以属性值也就不一样了。每重复创建一次修改一次。
        DSC0004.png
  

   2、当对此文件进行(如 cat)查看文件或执行时,只会更改文件的访问时间为当前系统时间,其余不会更改。
           DSC0005.png

      3、当对此文件编辑(如 vi )编辑文件内容时,所有时间(atime,mtime,ctiam)都会更改为当前系统时间,因为用编辑文件已经(查看或执行atime)、更改文件内容(mtime)、文件内容改变大小也就改变了(ctime),所以三个时间都会更改,每修改一次更改一次。
               DSC0006.png
  

      4、当对此文件进行追加内容(如 echo "123" >> /testdir/testnet)时,atime不会改变,因为我们并没有实际的去查看文件,但mtime和ctime会改变,因为我追加内容到文件更改了文件的内容数据,那么mtime就会改变,那么文件内容数据更改了,文件属性也变了,自然也更改了ctime。
DSC0007.png

  

  
  -m:仅改变文件的mtime(修改时间)
      1、当使用 -m 重复创建已存在的文件时,会更改文件的更改时间(mtime)时间和改变时间(ctime)为当前系统时间。因为mtime时间更改之后系统会认为更改了数据,从而也更改ctime。每重复创建一次修改一次。
               DSC0008.png
  

  -t:手动指定时间更改文件时间,格式为:[[CC]YY]MMDDhhmm[.ss]
                    DSC0009.png
  

  
  

  

  cp:复制文件或目录
      选项[OPTION]
  -i:与用户交互
  //复制时会给用户发出确认信息。         
              -r:递归复制目录
                      //复制目录时加上此选项会复制目录内的所有内容
              -f:强制覆盖目标文件
                      //复制文件或目录时,若目标存在时,可以加此选项对其进行强制覆盖
              -d:复制符号链接本身,并不是链接指向的地址
                      //复制文件类型为符号链接时,加此选项可以只复制链接,不复制链接的实际地址。
              -p:保留源文件属性
                      //复制文件或目录时保留原有的属性值
              -a:-dR --preserve=all  用于实现归档备份,复制所有属性信息
                      //其中preserve有:mode(权限)、ownership:属主属组、timestamps(时间戳)、context(安全标签)、xattr(扩展属性)、links:符号链接、all(以上所有属性)
  

          [OPTION]... [-T] SOURCE DEST
  单源复制:
  如果目标不存在:
  则新建与源文件名相同的文件,并将内容填充至DEST中
  如果目标存在:
  如果为文件:
  将源文件的内容覆盖至原有的文件内,用 i 选项可以与用户交互。
  如果为目录:
  在目标目录里新建一个与源文件同名的文件,并将源文件的内容填充至文件内
  
  

           [OPTION]... SOURCE... DIRECTORY
  多源复制:
  如果目标不存在:错误
  如果目标存在:
  如果目标为文件:报错
  如果目标为目录:
  在目标目录里新建一个与源文件同名的文件,并将源文件的内容填充至文件内
  

  

          [OPTION]...  -t DIRECTORY SOURCE
  复制目录:
  如果目标不存在:
  创建于源目录同名的目录,并将目录内的所有文件填充到目标目录内
  如果目标存在:
  如果目标为文件:错误
  如果目标为目录:
  在存在的目标目录内新建与源目录同名的目录,并将内容填充至目录内。
  

  

  练习:复制
  1、使用别名命令,每日将/etc/目录下所有文件,备份到/testdir/下独立的新目录下,并要求新目录格式为 backupYYYY-mm-dd ,备份过程可见。
         定义别名,然后自定义别名名称,使用cp -rpv 复制目录到指定路劲,其中 r=递归复制目录下的所有目录和文件   p=保留源目录或文件的属性值   v:显示复制的详细过程,这里只截图了一小部分。
         backup后面的反引号代表命令引用,引用date命令加%F 参数实现备份的时候创建目录为backup+当前日期,如第二张图。
DSC00010.png

  

  我们执行完别名命令之后就可以看到testdir目录下的“backup+当前日期的目录了”
  用ls查看一下,这题完成了。
   DSC00011.png
  

  2、创建/testdir/rootdir目录,再复制/root所有下文件到该目录内,并要求保留原有权限
          复制root家目录到/testdir/rootdir中,题目要求说创建/testdir/rootdir,然后再复制root家目录的文件,这里我并没有先创建/testdir/rootdir ,而是直接开始复制,简单说明一下,这里我们使用cp 复制目录,就涉及到上面的cp复制目录的知识,当cp复制目录到另一个地址时,如果目标目录不存在,即会创建指定的目录名称并把内容填充至指定的目录里,所有这里我们并没有先创建目标目录。当然先创建目标目录也可以,如果先创建好目标目录再复制源目录,那么源目录只会放在目标目录的下一层并且保留原名。   
        其中,r=递归复制目录,a=归档存放,--preserve=mode表示源目录权限不变。
DSC00012.png

  
  用ls -ld 查看对比一下两个文件夹的大小以及权限等。
DSC00013.png

  

  

  

  mv:移动  用法和上述cp相同
      mv [OPTION]... [-T] SOURCE DEST
          

      mv [OPTION]... SOURCE... DIRECTORY
     
      mv [OPTION]... -t DIRECTORY SOURCE..
  

  

  

  

  rm:删除目录或文件
                  也可以递归删除目录,但是如果删除的是链接文件,那么删除的只是链接文件,而不是链接的实际文件。
  rm [OPTION]... FILE...
  -i: 与用户交互
              //在删除某目录或某文件时会跟用户发出确认信息,回复 n 则不删除,y 则删除。
           DSC00014.png
  

              -f: 强制删除某文件或目录
                      //递归删除目录时默认会向用户发出确认信息,加 - f 之后直接删除不确认了。
           DSC00015.png

  

              -r / R: 递归目录
                  //递归删除某目录,删除其目录内的所有数据(包括目录自己也删除)。
            DSC00016.png
          -v:显示详细过程:
            //删除目录或文件时会显示删除的过程
            DSC00017.png
  
            -no-preserve-root:递归删除根,如同 rm -rf  /  但后者只限用于centos6以下版本,centos6以上就只能用前者删除根了。
  没事的童鞋可以试一试:rm -rf --no-preserve-root /  
  

  

  

  tree:用树状性显示层级目录,不加路径则默认显示当前目录的结构
      -d: 只显示目录
          //只列出当前路径内的目录,不包括文件
           DSC00018.png
  

      -L level:指定显示的层级数目
              //显示当前路径内的目录及文件,但只列出两层。
            DSC00019.png
  

  -P pattern: 只显示由指定pattern匹配到的路径
  

  

  

   mkdir :创建目录
          -p: 自动创建所需的各目录
                  创建目录时,命令就会一层一层往下找目录一直到最后,如果发现没有要找的目录就自动创建目录直到最后。如图示,过程中没有的目录会创建出来。
  

           DSC00020.png
          -v: 显示创建的详细信息,如上图。
  

          -m MODE: 创建目录时直接指定权限;
          //创建目录时给定权限,权限为属主(读、写、执行),属组(读、写、执行)其他用户(读、执行)。
            DSC00021.png
  

  

  

  rmdir: 删除空目录
          -p: 递归删除父空目录
                  //用-p选项会删除指定路径的目录,如果指定路径目录被删除之后其父目录为空,也会将其删除,一直到非空为止。
   DSC00022.png
                  -v: 显示删除详细信息,如上图。
  

  

  

  练习:创建目录
  (1) 如何创建目录/testdir/dir1/x, /testdir/dir1/y,/testdir/dir1/x/a, /testdir/dir1/x/b,/testdir/dir1/y/a, /testdir/dir1/y/b  
           DSC00023.png
  

  (2) 如何创建目录/testdir/dir2/x, /testdir/dir2/y,/testdir/dir2/x/a, /testdir/dir2/x/b
        DSC00024.png
  (3) 如何创建目录/testdir/dir3, /testdir/dir4, /testdir/dir5,/testdir/dir5/dir3, /testdir/dir5/dir4
        DSC00025.png
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-451798-1-1.html 上篇帖子: CentOS下搭建SVN服务器 下篇帖子: CentOS关于quota的总结与实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表