文件管理--当你使用Linux时,大部分时间都会和文件打交道,我们需要了解基本的文件操作,如创建文件、删除文件、复制文件、重命名文件以及为文件创建链接等。


目录

     文件的组成

    目录结构 

    文件类型

    pwd命令

    更改目录 cd

    查看文件状态 stat  --时间戳

    文件通配符

    复制文件和目录 cp

    移动,重命名文件 mv rename

    目录操作 mkdir rmdir


详细内容


一、文件的组成

      ①元数据 -- 元数据就是数据的数据,用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息等;

 对文件系统元数据的更改都被保存到一份单独的日志里,当发生系统崩溃时可以利用日志正确地恢复数据。除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。

      ②数据-- 普通文件中的实际数据



二、目录结构

     Linux下文件和目录组织成一个单根倒置树结构:

blob.png


/     根目录

/boot 引导文件存放目录

/bin  供所有用户使用的基本命令

/sbin 管理类的基本命令

/lib  库文件以及内核模块文件

/lib64 专用于x86_64系统上的辅助共享库文件存放位置

/etc  配置文件目录

/home  普通用户家目录,软件的个性化配置             

        如用户自己设置的别名就存放在该目录下

/root 管理员家目录


/dev    设备文件,Linux下一切皆文件

/media  便携式移动设备挂载点

/mnt    临时文件系统挂载点

/opt    第三方应用程序的安装位置

/tmp    临时文件存储位置

/usr    read-only,以后不发生变化的数据

/var    可变数据文件 如运行程序缓存的数据,日志文件等

/proc   虚拟文件系统

        /proc/cpuinfo  查看CPU信息

/proc/meninfo  查看内存信息

/sys    虚拟文件系统



查看根目录下的文件和目录:


blob.png


  以.开头的文件为隐藏文件

  文件名最长255个字节(linux没有文件扩展名的概念,这一点和Windows不同)

  蓝色->目录 

  绿色-> 可执行文件

  红色-> 压缩文件

  浅蓝色-> 链接文件


tree--以树形结构列出目录结构

    -d  只列子目录,不列子文件

    -L+n 查看n级目录

*******运行tree命令的时候可能会遇到命令不存在等的问题**********

如下图所示操作:

VI(X~)7%`95P}4VSNIBD3G3.png

***********************************************************************


三、文件类型

-   普通文件

d   目录文件

b   块设备 

c   字符设备

l   软链接

s   套接字文件socker 

p   管道文件


L23BTIV2AEZ4~V~_AX(AEA3.png


四、pwd命令

   pwd--显示当前文件所在路径

        -p 显示真实物理路径,当目录为软链接时,显示源目录


   . 代表当前目录

   .. 代表上一级目录 (任何目录下都有. 和..两个目录  ;  cd ../.. 代表进入上上一级目录)


   basename  显示基名(最后一项)

   dirname   显示目录名(除最后一项)


[{}99RXZM`PQZM)$S4KMZ~C.png


五、更改目录  cd 

    cd  进入家目录

    列出目录内容  ls 

      -a  显示所有文件

      -A  显示所有文件,不包含.和..

      -l  显示详细信息 

      -R  递归展开目录

      -d  不列出子目录

      -1(数字1) 以一纵列显示

      -S  从大到小排列

      -t  从今往前的修改时间排序

      -ut 从今往前的访问时间排序

      -U  按目录存放信息排序

      -X  按文件后缀排序


六、查看文件状态  stat

    三个时间戳

    access time访问时间 atime

    midify time修改时间 mtime (文件的数据更改的时间)

    change time改变时间 ctime (文件的元数据更改的时间,mtime变ctime一定也跟着变)

    touch 当文件存在时,可以更新三个时间戳

            当文件不存在时,则创建

     touch -a 更新atime 和 ctime

     touch -m 更新mtime 和 ctime

     touch -t  [CC[YY]]MMDDHHmm[.ss] (年月日时分.秒) 更新atime mtime到指定时间

     touch -c 当文件已存在时,更新全部时间戳;当文件不存在时,不创建


七、文件通配符

*  0或多个任意字符

一个任意字符

~  当前用户家目录

~name 用户name的家目录

[0-9]  数字范围

[a-Z]  字母范围   注意:ls +字母范围  是按aAbBcCdD....zZ排列的

[任意字符] 匹配方括号内的任何的一个字符

[^任意字符]  匹配方括号内的字符以外的任何字符


[:digit:]  任意数字    例如:ls [[:digit:]]*

[:lower:]  任意小写字母

[:upper:]  任意大写字母

[:alpha:]  任意大小写字母

[:alnum:]  任意字母或数字

[:blank:]  水平空白字符

[:space:]  水平或垂直空白字符

' '        也可以表示空格

[:punct:]  任意符号

案例:

1、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录

   ls -d /etc/rc[0-6]*

2、显示/etc目录下,所有以.d结尾的文件或目录

   ls -d /etc/*.d

3、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录

   ls -d /etc/[mnrp]*.conf

4、只显示/root下的隐藏文件和目录(三种写法)

   ls -a --ignore=[^.]*  /root

   ls -a -I "[^.]*"  /root

   ls -d .*  /root

5、只显示/etc下的非隐藏目录

   ls -d /etc/*/

6、显示/etc目录下所有以k开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

   ls -d /etc/k*[[:digit:]]*[[:lower]]

7、显示/etc目录下,所有以一个大写字母开头,以两个数字结尾的文件或目录

   ls -d /etc/[[:upper]]*[0-9][0-9]

8、显示/etc目录下,文件名至少包含一个小写字母和一个数字并以.conf结尾的文件或目录

   ls -d /etc/*[[:lower]]*[0-9]*.conf


八、复制文件和目录  cp

  cp + source + dest 

  1、source是单个文件

     如果目标不存在,新建dest,并将文件内容填充至dest

     如果目标存在且是文件,内容覆盖

     如果目标存在且是目录,在dest下新建与源文件名同名的文件,并填充至新文件

  2、source是目录——要加选项 -r(此选项下面有说明)

     如果目标不存在,则新建指定目录,然后复制source下所有文件至新建目录 

     如果目标存在,在dest下新建与源目录同名的目录,并复制源目录内容至新建目录   

   总结如下图

    7)F0~WCPY3S2X6}5GST`0MR.png   

  cp

     -i覆盖前提示 –n:不覆盖,注意两者顺序

     -r, -R: 递归复制目录及内部的所有内容

      -a: 归档,相当于-dR --preserv=all

     -d:--no-dereference --preserv=links 不复制原文件,只复制链接名

     --preserv[=ATTR_LIST]

       mode: 权限

       ownership: 属主属组

       timestamp: 

       links

       xattr

       context

       all

 -p: 等同--preserv=mode,ownership,timestamp

 -v: --verbose  显示复制的过程

 -f: --force  当普通用户对某目录有rx权限时,使用-f可以将没有修改权限的文件强制覆盖。即删除再创建

案例

1、定义别名命令baketc,将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见

   alias baketc='mkdir -p(递归创建) /testdir/backup$(date +%F);cp -av /etc/* /testdir/backup$(date +%F)'

2、创建/testdir/rootdir目录,并复制root下所有文件到该目录内,要求保留原有权限 

   mkdir -p /testdir/rootdir;cp -a /root/*  /testdir/rootdir/rootdir

   

未完待续:http://blog.51cto.com/13570193/2060547