4-1 文件管理

文件管理

touch命令

touch:-m,-c,-anode

  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 $SHELLshell

  • 建立空文件:>,>>,touch
  • 某些状况使用>建立控股文件是失效的好比csh,不过能够cat /dev/null>FILE来建立
  • 这种是追加的方式>>
  • touch 建立空文件更加广泛
  • cat /dev/null >FILE清空文件更加方便

cp命令

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

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:                    #目标存在,覆盖先前备份

在分区内移动文件时很快,由于并无真正复制,而是将索引更改了一下而已,删除也是同样,将索引删除code

rm命令

rm:删除文件或文件夹blog

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

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

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

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

rename命令

rename:批量修改文件名称it

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保留属性

相关文章
相关标签/搜索