Linux-文件管理

文件系统分层结构标准

http://www.pathname.com/fhs

http://www.pathname.com/fhs/pub/fhs-2.3.pdf

包括

boot bin sbin etc lib64 tmp usr mnt media dev var home net misc srv proc sys root opt selinux

 

FHS

 

ldd /bin/ls         查看ls命令需要的依赖库,一般在/lib64下

 

/misc目录,CentOS 6自动有,cd /misc然后cd cd/可自动挂载光盘,不用登管理员帐户

/proc         目录里的东西根本不在硬盘中,而是在内存中,所以ll查看文件大小为0

是个虚拟目录,映射到内存

echo ‘- – -‘ > /sys/class/scsi_host/host2/scan 不重启电脑的情况下识别新硬盘

 

ext4文件系统大小写敏感,U盘的FAT32等文件系统大小写不敏感

.开头的是隐藏文件

文件有两类数据:

元数据:metadata(ll看到的信息)

数据:data

 

各种文件的类型, vim /etc/DIR_COLORS可定制颜色

-:普通文件                    白色

d: 目录文件                     深蓝色

b: 块设备                         黄色

c: 字符设备                     黄色

l: 符号链接文件              浅蓝色

p: 管道文件pipe             深黄色

s: 套接字文件socket      紫色

可执行文件                    绿色

压缩包                            红色

 

某些文件名带空格、横杠等字符,要删的话带上路径

如rm /root/-a

 

b块设备,如/dev/sda

c字符设备,如/dev/zero

dd if=/dev/zero of=/data/bigfile bs=1M count=1024

 

ll -d /bin/ /usr/bin

ll -d /lib64 /usr/lib64

 

pwd -P      若进入链接目录时显示真实路径

 

带根/的是绝对路径,不带根/的是相对路径

 

basename        文件本身的名称,不带目录

dirname            目录名,不带文件名

 

cd ~                     进入当前用户的家目录

cd                 进入当前用户的家目录

cd ~qjy      进某个人的家目录

cd –               进入上一次目录路径,内在机制:echo $OLDPWD,OLDPWD变量存储了上一个目录

echo $PWD  或pwd,查看当前目录

 

环境变量     PS1,PATH,PWD,OLDPWD,HISTSIZE,SHELL

 

ls

ls -ld             等于ll -d,显示文件夹本身的信息

 

目录后边有没有/有区别么?大部分时候没区别,除了目录是软连接的情况。

例如:ll /bin和ll /bin/,不加/显示的是软链接本身,加/显示的是/bin/下的文件。

ll_bin

ll_bin2

 

ls -a 包含隐藏文件

ls -l 显示额外的信息

ls -R 目录递归通过

ls -ld 目录和符号链接信息

ls -1 文件分行显示

ls -S 按从大到小排序

ls -t 按mtime排序

ls -u 配合-t选项,显示并按atime从新到旧排序

ls -U 按目录存放顺序显示

ls -X 按文件后缀排序

 

ll –time=atime /data/A    访问时间

ll –time=ctime /data/A     元数据发生变化的时间

ll –time=mtime /data/A   修改时间(默认)

 

stat /data/A  可以看到3个时间

 

元数据存放在文件系统中,不是具体文件

有时可以不让更新读时间atime,减少硬盘负担

 

文件通配符

 

*匹配零个或多个字符

?匹配任何单个字符

~ 当前用户家目录

~mage 用户mage家目录

~+ 当前工作目录

~-前一个工作目录

[0-9]匹配数字范围

[a-z]:字母

[A-Z]:字母

[qjy]匹配列表中的任何的一个字符

[^qjy]匹配列表中的所有字符以外的字符

 

预定义的字符类:man 7 glob

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母

[:upper:]: 任意大写字母

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

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

[:blank:]:水平空白字符

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

[:punct:]:标点符号

[:print:]:可打印字符

[:cntrl:]:控制(非打印)字符

[:graph:]:图形字符

[:xdigit:]:十六进制字符

 

通配符只通配文件名称,不管内容

[root@centos7 data]#touch f{A..Z}

[root@centos7 data]#touch f{a..z}

[root@centos7 data]#ls f[A-D]

fA  fb  fB  fc  fC  fd  fD

[root@centos7 data]#ls f[[:upper:]]

fA  fC  fE  fG  fI  fK  fM  fO  fQ  fS  fU  fW  fY

fB  fD  fF  fH  fJ  fL  fN  fP  fR  fT  fV  fX  fZ

 

man 7 glob

 

touch     创建空文件或刷新时间

touch [OPTION]… FILE…

-a仅改变atime和ctime

-m 仅改变mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss]

指定atime和mtime的时间戳

-c如果文件不存在,则不予创建

 

cp

cp -a      可以作为备份手段,把数据的所有信息都复制

cp -av    备份同时显示过程,使用-v要小心,文件太大的话终端容易死

cp -u      更新,只复制源比目标更新文件或不存在文件

cp –backup=numbered 可定义到别名里

 

[root@centos7 data]#ls

file1.conf  file2.conf  file3.conf  file4.conf  file5.conf

[root@centos7 data]#rename “conf” “conf.bak” file*

[root@centos7 data]#ls

file1.conf.bak  file3.conf.bak  file5.conf.bak

file2.conf.bak  file4.conf.bak

 

rm

rm -rf /被禁,但rm -rf /*或者 rm -rf /data /*能执行!

强烈建议把rm改名或者定义成别名mv

alias rm=’mv -t /data/’

有别人正在使用某文件时释放不了空间,用lsof | grep deleted可查看被删除但未释放空间的文件,方法一是kill掉进程,但不建议,因为有些进程不能kill,方法二是> file先清空,释放空间,再rm删掉。

> bigfile

rm -f bigfile

 

目录操作

tree

tree /boot

tree -L 1 /boot     只显示当前目录下的第一层

tree -d /boot       只显示文件夹

tree -P                 可跟正则表达式

 

mkdir     创建空目录

mkdir -p       /data/dir1/dir2/dir3/dir4 能创建比较深的空目录

mkdir -v /data/dir1/dir2/dir3/dir4 显示详细信息

 

rmdir [-p]     删除空文件夹

 

 

备份小技巧

cp /etc/hosts{,.bak}

 

索引节点

inode

inode table   节点表

inode在每个分区中唯一

直接指针有12个,每个block是4K,最多直接指向48K的数据

间接指针            4M

二重间接指针    4G

三重间接指针    4T

 

df -i        df的inode形式

 

shred -zvu -n 6 /data/hosts      擦除文件,-z最后以0覆盖,-v显示过程,-u删除文件,-n 6覆写6次(默认3次)

 

硬链接

创建硬链接会增加额外的记录项以引用文件

对应于同一文件系统上一个物理文件

每个目录引用相同的inode号

创建时链接数递增

 

删除文件时:

rm命令递减计数的链接

文件要存在,至少有一个链接数

当链接数为零时,该文件被删除

不能跨越驱动器或分区

 

语法:

ln filename [linkname]

任何文件夹最少有2个链接数,本身和. ,如果还有子文件夹的话,子文件夹的.. 也是他的名字,就有3个以上的链接数

 

软连接(符号链接)

一个符号链接指向另一个文件

ls -l的显示链接的名称和引用的文件

一个符号链接的内容是它引用文件的名称

可以对目录进行

可以跨分区

指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

 

语法:

ln -s filename [linkname]

软连接的文件大小是源文件的文件名大小

软连接ln -s f1 f1_link,如果f1和f1_link在不同目录,要用相对目录的话是相对于f1_link的目录,不是相对于f1的目录

readlink /etc/grub2.cfg可直接读到源文件的路径

 

 

软,硬链接区别:

本质

硬链接:同一个文件多个名字

软链接:一个文件对应快捷方式,不同文件

 

1、链接数

2、跨分区

3、用于目录

4、原始和链接文件关系

5、删除

 

确定文件内容

file file1

检查文件的类型,然后确定适当的打开命令或应用程序使用

文件的头部,又称魔数magic number

hexdump -C file -n 100     显示一个文件的前100个字节

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/93844

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班