zoukankan      html  css  js  c++  java
  • 4-1 文件管理

    文件管理

    touch命令

    touch:-m,-c,-a

    1. 文件不存在创建空文件
    2. 文件存在刷新时间戳
    touch -a        #仅改变atime和ctime
    touch -m        #仅改变mtime和ctime
    touch -t        #[[CC]YY]MMDDhhmm[.ss]指定atime和mitme的时间戳
    touch -c        #如果文件不存在,则不予创建
    

    查看shell:cat /etc/shells
    查看当前shell:echo $SHELL

    • 创建空文件:>,>>,touch
    • 某些情况使用>创建控股文件是失效的比如csh,不过可以cat /dev/null>FILE来创建
    • 这种是追加的方式>>
    • touch 创建空文件更加普遍
    • cat /dev/null >FILE清空文件更加方便

    cp命令

    root用户的cp是别名,使用了cp -i命令
    不加选项的cp是会改变文件属性的,比如时间属性,比如属主属组属性,用法:

    cp /PATH/TO/FILE /DIR                   #直接复制
    cp /PATH/TO/FILE1 /PATH/TO/FILE2 DEST   #多个文件复制到一个文件夹
    cp -t DEST /PATH/TO/FILE1...            #将目的和源位置呼唤
    cp -r /PATH/TO/DIR /DIR/                #将前一个目录复制到后一个目录
    cp -r /PATH/OT/DIR /DIR/DIR1            #如果DIR1不存在会将DIR改名为DIR1,如果存在会进入目录在DIR1下建立DIR目录复制
    
    源目标 不存在 存在且为文件 存在且为目录
    一个文件 新建DEST,并将SRC的内容填充至DEST中 将SRC中的内容覆盖至DEST中 在DEST下新建与源文件同名的文件,并将SRC中内容填充至新文件中
    多个文件 提示错误 提示错误 在DEST下新建与源文件同名的文件,并将源文件内容复制到目录中
    目录(须使用-r选项) 创建指定的DEST同名目录,复制SRC目录中所有文件至DEST下 提示错误 在DEST下新建与源目录同名的目录,并将SRC中内容复制至新目录中
    -i                          #覆盖前提示
    -n                          #不覆盖
    -R                          #等于-r递归复制目录及内部所有内容
    -d                          #--no-dereference --preserv=links 不复制原文件,只复制链接名
    -p                          #等同--preserv=mode,ownership,timestmp
    -preserv=ownership          #作用与保留属性,保留属组属主
        mode:权限
        ownership:属组属主
        timestamp:时间戳
        links:链接
        xattr:文件扩展属性
        context:
        all:所有
    -f                          #等同--force如果文件存在且不能被打开,将文件删除后尝试复制
    -a                          #相当于-dR --preserv=all既可以保留属性,还可以保留链接和整个目录
    -u                          #等同--update只复制源比目标更新文件或目标不存在的文件
    -b                          #目标存在,覆盖钱先备份,形式为FILENAME~,能治保留一份
    --backup=numbered           #目标存在,覆盖前先备份加数字后缀
    -v                          #--verbose显示复制详细信息
    
    

    mv命令

    mv:移动文件或者更改文件名称

    mv SRC DEST
    mv SRC... DEST
    mv -t DEST SRC...
    #常用选项
    -i:                    #交互式
    -f:                    #强制
    -b:                    #目标存在,覆盖先前备份
    

    在分区内移动文件时很快,因为并没有真正复制,而是将索引更改了一下而已,删除也是一样,将索引删除

    rm命令

    rm:删除文件或文件夹

    -i                      #交互式
    -r                      #递归删除文件
    -f                      #不询问也不报错
    

    rm -rf命令太过危险,在重要环境中应该使用别名,将rm改为mv移动至其他文件夹中rm='mv -t /tmp/trash'

    有特殊文件名的情况下使用绝对路径或者相对路径删除

    删除大文件时,正在使用的文件不会释放空间,必要时可以使用>将文件清楚并删除,就会释放空间(文件描述符被占用)

    rename命令

    rename:批量修改文件名称

    rename txt txt.bak f*       #将f开头的所有txt文件改为txt.bak为后缀的名称
    

    tree命令

    tree:列出目录的梳妆结构
    -d:只显示目录
    -L:指定显示的层级数目
    -P pattern:只显示由指定wild-card 通配符匹配到的路径

    mkdir命令

    mkdir:建立文件夹
    -p:没有路径上的文件夹时建立文件夹
    -v:显示详细信息
    -m:创建目录时直接指定权限

    rmdir命令

    rmdir:删除空目录
    -p:删除掉目标目录后如果父目录为空,删除,依次类推
    -v:显示详细信息

    df

    df:查看磁盘使用信息
    -h:使用k,M,G的方式显示大小
    -t:指定查看某个文件系统的分区
    -i:查看分区节点编号的使用情况

    索引节点编号:inode

    Inode:节点编号,为文件的唯一标识
    节点编号也是文件的元数据之一

    元数据:metadata
    存放了节点编号,权限大小,文件位置。属组属主信息等
    stat命令可以查看节点编号
    ll -i也可以查看节点编号

    df -i查看inode号使用情况,由于在inode号用光后也会提示设备没有空间,所以当空间还有,却提示没有剩余空间,这就是节点编号用完

    inode表结构
    图中左边是元数据信息,而其中的指针信息为标识文件存放位置的地方,假设一个数据块存放为4k大小,那么直接指针可以直接指向数据块,ext4系列中有12个直接指针,12x4k为48k大小,所以直接指针存放的文件最多为48k大小,大于48k时需要双重间接指针,一级指针指的是指针数据块,二级指针指的才是文件数据,依次类推,不同的文件系统细节不同

    一个目录是目录下的文件名和inode号之间的映射
    一般inode表会占用文件系统磁盘空间的1%

    cp命令执行过程:分配一个空闲的inode号,在inode表中生成新条目,在目录中创建一个目录项,将名称与inode编号关联拷贝数据生成新的文件

    rm命令执行过程:链接数递减,释放的inode号可以被重用,把数据块放在空闲列表中,删除目录项,数据实际上不会被马上删除,但当另一个文件使用数据块时将被覆盖

    ln命令

    ln FILE1 FILE2:创建的文件inode号是完全一样的,所以指的是同一个文件,这属于硬链接

    ln命令执行过程:在目录中创建一个目录项,将名称与inode号关联

    链接数:有几个硬链接,当硬链接为1时删除文件将会删除文件,否则只会删除一个目录项
    ll可以查看链接数

    由于硬链接是同一个文件,所以不能跨分区
    且硬链接不可以链接文件夹,文件夹的硬链接数是可以增长的,多一个子文件夹就可以增加一个连接数,因为子目录的..目录就是此目录

    ln -s软链接

    ln -s就是建立软连接,通过一个文件指向另一个文件

    ln -s f1.txt f1.txt.link            #创建了f1.txt的软链接,软连接是根据文件名的,且软连接可以跨设备,也可以链接文件夹。软连接创捷的时候的相对路径有些奇特,软连接的相对路径必须相对于软连接的路径,例如:
    ln -s ../f1.txt f11.txt.link
    
    #软链接不识别inode号,只根据文件名判断,所以当原文件被删除时,软链接不会被删除,在建立与原文件名同名的文件,软连接即可回复使用
    
    #删除时,rm -rf /data/dir11/ 会删除dir1下的内容,而rm -rf /data/dir11 会删除dir11这个软连接  
    dir1 
    dir11 -> dir1
    

    软硬链接区别:

    1. 本质:
      硬:本质是一个文件
      软:本质不是同一个文件
    2. 跨分区
    3. inode
    4. 链接数
    5. 文件夹
    6. 相对路径
    7. 删除原文件
    8. 文件类型,颜色

    shared命令

    shared:清理数据
    可以使用随机数或者1,0重新覆盖数据区域,可以应付一般的数据清理场景

    file命令

    file:识别文件类型

    file FILE
    -b:                #只显示结果不显示文件名
    -f:                #列出文件列表中的文件名的文件类型,将文件目录放进一个文件中
    -F:                #输出指定分隔符,默认是:
    -L:                #查看对应软连接类型
    

    magic number:文件类型的标识
    readelf 查看二进制头即可看到magic

    /dev/zero不能随意cp如果要复制-a保留属性

  • 相关阅读:
    通过Relect反射方法创建对象,获得对象的方法,输出对象信息
    Spring框架中获取连接池常用的四种方式
    Spring框架的七大模块
    Java线程池的四种创建方式
    递归算法
    将字符串反转的 Java 方法
    [String]split()方法
    [String] intern()方法
    案例>>>用绝对值的方法打印出菱形
    数组的简单理解
  • 原文地址:https://www.cnblogs.com/kjalbert/p/11588024.html
Copyright © 2011-2022 走看看