zoukankan      html  css  js  c++  java
  • Linux系统目录结构和文件基本属性

    一.Linux系统目录结构

    二.Linux 文件基本属性 

    三.touch stat tar 命令

    一.Linux系统目录结构

    不同颜色文件的含义: 

    inux 文件颜色的含义,蓝色代表目录,绿色代表可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其他文件,红色闪烁表示链接的文件有问题了,黄色表示设备文件。
    蓝色文件----------目。录
    白色文件----------一般性文件,如文本文件,配置文件,源码文件等。
    浅蓝色文件----------链接文件,主要是使用ln命令建立的文件。
    绿色文件----------可执行文件,可执行的程序。
    红色文件-----------压缩文件或者包文件。
    绿色背景-----------others拥有x权限 

    登录系统后,在当前命令窗口下输入命令:

    ls /

    你会看到如下图所示:

    树状目录结构:

    以下是对这些目录的解释:

    • /bin
      bin是Binary的缩写, 这个目录存放着最经常使用的命令。

    • /boot:
      这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

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

    • /etc:
      这个目录用来存放所有的系统管理所需要的配置文件和子目录。

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

    • /lib
      这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

    • /lost+found
      这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

    • /media linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

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

    • /opt
       这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

    • /proc
      这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
      这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

      echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    • /root
      该目录为系统管理员,也称作超级权限者的用户主目录。

    • /sbin
      s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

    • /selinux
       这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

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

    • /sys
       这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

      sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

      该文件系统是内核设备树的一个直观反映。

      当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

    • /tmp
      这个目录是用来存放一些临时文件的。

    • /usr
       这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。

    • /usr/bin:
      系统用户使用的应用程序。

    • /usr/sbin:
      超级用户使用的比较高级的管理程序和系统守护程序。

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

    • /var
      这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

    在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

    /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

    /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

    值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

    /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

    二.Linux 文件基本属性

    Linux 文件基本属性

    Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

    在Linux中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

    [root@www /]# ls -l
    total 64
    dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
    dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
    ……

    实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。

    在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。

    • 当为[ d ]则是目录
    • 当为[ - ]则是文件;
    • 若是[ l ]则表示为链接文档(link file);
    • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

    接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

     新创建的目录默认权限为 rwxrwxr-x  新建文件的默认权限为 rw-rw-r--

    每个文件的属性由左边第一部分的10个字符来确定(如下图)。

     

    从左至右用0-9这些数字来表示。

    第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。

    第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

    其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;

    第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。

    Linux文件属主和属组

    [root@www /]# ls -l
    total 64
    dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
    dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
    ……

    对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。

    同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

    文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

    因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

    在以上实例中,bin文件是一个目录文件,属主和属组都为root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。

    更改文件属性

    1、chgrp:更改文件属组

    语法:

    chgrp [-R] 属组名文件名
    

    参数选项

    • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

    2、chown:更改文件属主,也可以同时更改文件属组

    语法:

    chown [–R] 属主名 文件名
    chown [-R] 属主名:属组名 文件名
    

    进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

    [root@www ~] cd ~
    [root@www ~]# chown bin install.log
    [root@www ~]# ls -l
    -rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log
    

    将install.log的拥有者与群组改回为root:

    [root@www ~]# chown root:root install.log
    [root@www ~]# ls -l
    -rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

    3、chmod:更改文件9个属性

    Linux文件属性有两种设置方法,一种是数字,一种是符号。

    Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

    先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

    • r:4
    • w:2
    • x:1

    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:

    • owner = rwx = 4+2+1 = 7
    • group = rwx = 4+2+1 = 7
    • others= --- = 0+0+0 = 0

    所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

     chmod [-R] xyz 文件或目录

    选项与参数:

    • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
    • -R : 进行递归(recursive)的持续变更,亦即连同此目录下的所有文件都会变更

    举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

    [root@www ~]# ls -al .bashrc
    -rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
    [root@www ~]# chmod 777 .bashrc
    [root@www ~]# ls -al .bashrc
    -rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

    那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

    符号类型改变文件权限

    还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦! 那么我们就可以藉由u, g, o来代表三种身份的权限!

    此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

    chmod u
    g
    o
    a
    +(加入)
    -(除去)
    =(设定)
    r
    w
    x
    文件或目录

    如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

    [root@www ~]# ls -al .bashrc
    -rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc
    [root@www ~]# chmod  a+w  .bashrc
    [root@www ~]# ls -al .bashrc
    -rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

    而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

    [root@www ~]# chmod  a-x  .bashrc
    [root@www ~]# ls -al .bashrc
    -rw-rw-rw-  1 root root 395 Jul  4 11:45 .bashrc

     三.touch stat tar 命令
    Linux命令行——touch命令详解

    touch命令用于创建文件或修改文件/目录的时间戳(了解时间戳,可以查看Linux命令行——stat命令详解

    Linux命令行——stat命令详解
    1.命令功能

      stat命令主要用于显示文件或文件系统的详细信息。

    2.语法格式
      stat [option] file

    3.参数选项
    -L:显示符号链接所指向文件的信息
    -f:显示文件所在文件系统的信息

    -t:以简洁方式输出信息

    -c:以特定格式输出文件的某些信息

      


    以上两例选择的参数分别为“%A”(可读格式表示的访问权限)、“%i”(Inode 号),下面全部是可用的选项:

    %a 八进制表示的访问权限
    %A 可读格式表示的访问权限
    %b 分配的块数(参见 %B)
    %B %b 参数显示的每个块的字节数
    %d 十进制表示的设备号
    %D 十六进制表示的设备号
    %f 十六进制表示的 Raw 模式
    %F 文件类型
    %g 属主的组 ID
    %G 属主的组名
    %h 硬连接数
    %i Inode 号
    %n 文件名
    %N 如果是符号链接,显示器所链接的文件名
    %o I/O 块大小
    %s 全部占用的字节大小
    %t 十六进制的主设备号
    %T 十六进制的副设备号
    %u 属主的用户 ID
    %U 属主的用户名
    %x 最后访问时间
    %X 最后访问时间,自 Epoch 开始的秒数
    %y 最后修改时间
    %Y 最后修改时间,自 Epoch 开始的秒数
    %z 最后改变时间
    %Z 最后改变时间,自 Epoch 开始的秒数
    
    针对文件系统还有如下格式选项:
    
    %a 普通用户可用的块数
    %b 文件系统的全部数据块数
    %c 文件系统的全部文件节点数
    %d 文件系统的可用文件节点数
    %f 文件系统的可用节点数
    %C SELinux 的安全上下文
    %i 十六进制表示的文件系统 ID
    %l 文件名的最大长度
    %n 文件系统的文件名
    %s 块大小(用于更快的传输)
    %S 基本块大小(用于块计数)
    %t 十六进制表示的文件系统类型
    %T 可读格式表示的文件系统类型

    4.其它
    stat命令从文件的索引节点获取信息。
    文件的三个时间:

    Linux命令行——touch命令详解

    1.命令功能
      touch命令用于创建文件或修改文件/目录的时间戳(了解时间戳,可以查看Linux命令行——stat命令详解)。

    2.语法格式
      touch [option] file

    3.参数选项
    无选项:若文件不存在,则创建新的空文件,access time,modify time和change time均为当前时间;若文件存在,则将三个时间戳均修改为当前时间
     

    -a:只修改文件的access time 

    注意:access time修改后,change time也被修改(因为状态发生了改变)。

     -m:只修改文件的modify time 

    注意:modify time修改后,change time也被修改(因为状态发生了改变)。

    1. -c:不创建不存在的文件(当touch后操作多个文件时,不存在的文件将不会被创建)
    2. -d:使用指定的日期时间,而非现在的时间,可以使用各种不同的格式。 

      -t:将时间修改为参数指定的日期,如:07081556代表7月8号15点56分  

    3. 注意:change time发生了变化,变成了当前时间。 
      该选项的时间格式为[[CC]YY]MMDDhhmm[.ss] 

    4. -r file:使用指定file文件的时间戳(access,modify)更新文件的时间戳(access,modify) 

     

     注意:change time发生了变化,变成了当前时间。

    
    

    linux Tar 命令参数详解 

    tar命令
      1. 作用 tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户。
      2. 格式 tar [主选项+辅选项] 文件或目录  eg:  tar zxvf libiconv-1.13.tar.gz ./libiconv    tar cxvf libiconv-1.13.tar.gz ./*.php
      3. 主要参数
      使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
      3.1 主选项:
      -c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
      -r 把要存档的文件追加到档案文件的未尾。例如用户已经做好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
      -t 列出档案文件的内容,查看已经备份了哪些文件。
      -u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
      -x 从档案文件中释放文件。
      3.2 辅助选项:
      -b 该选项是为磁带机设定的,其后跟一数字,用来说明区块的大小,系统预设值为20(20×512 bytes)。
      -f 指定档案文件名或设备名,这个选项通常是必选的。
      -k 保存已经存在的文件。例如把某个文件还原,在还原的过程中遇到相同的文件,不会进行覆盖。
      -m 在还原文件时,把所有文件的修改时间设定为现在。
      -M 创建多卷的档案文件,以便在几个磁盘中存放。
      -v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
      -w 每一步都要求确认。
      -z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
      例如: 

      #1.将当前目录下所有.txt文件打包并压缩归档到文件this.tar.gz,我们可以使用 
      tar czvf this.tar.gz ./*.txt
      #2.将当前目录下的this.tar.gz中的文件解压到当前目录我们可以使用 
      tar xzvf this.tar.gz ./
  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/lukelook/p/11122352.html
Copyright © 2011-2022 走看看