谈到Linux文件管理,首先我们需要了解的是,我们要对文件做些什么事?其实无非就是对一个文件进行创建,复制,移动,查看,编辑,压缩,查找,删除等等。例如:当我们想修改系统的主机名称,是否应该知道文件在哪,才能去做对应的修改
几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支,所以该结构又被称为目录树。
Windows以多根的方式组织文件C:\,D:\,E:\
Linux以单根的方式组织文件\
下图为centos7的目录结构:

配置指的其实就是一种参数;技术的参数都存储在某一个文件中,将文件称为配置文件;配置文件可以变更某个软件的运行效果;
/dev :
Device(设备)的缩写, 存放的是Linux的外部设备,包括键盘,光盘,磁盘,终端。注意:在Linux中访问设备和访问文件的方式是相同的,在Linux中这些称为文件。
/dev/null:黑洞,就是存储在这个设备中的数据都会丢失;
/dev/random:产生随机数;
/media:
类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
/mnt:
临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
/lost+found:
一般情况下为空的,系统非法关机后,这里就存放一些文件。
每一个用户都有自己的家;每一个家都有环境,如果破坏掉环境,那么再进入家,可能得到的结果和预期不一致;
/boot:
存储系统启动时加载的文件,比如:内核文件,grub菜单,救援内核系统等
/tmp:
这个目录是用来存放一些临时文件的,谁都可以在这里面存储数据,但是自己的数据只能自己移除,别人无法移除;所有用户都可以看,但是不能删除;root用户既可以看,也可以删除;

/usr:
用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录,非常重要;
在我们开始操作文件之前,首先需要对文件的路径进行定位。Why?你要在哪个文件下创建什么文件?你要将文件复制到什么地方?或者你要删除的文件在什么地方?比如:/etc/hostname,整个文件中包含文件名称以及文件所在的位置,我们将这个叫做路径,也就是说我们是通过路径对文件进行定位。
绝对路径:只要从/开始的路径都是绝对路径,比如/home/alice.file 相对路径是相对于当前目录来说。
相对路径:相对于当前你在哪个目录;/root
一般情况下,查找文件使用绝对路径:/root/abc/file.txt;如果我就在/root目录下可以使用相对:abc/file.txt
.表示当前目录,…表示上级目录
在根下创建linux-76目录;
[root@destiny ~]# mkdir /linux-76
[root@destiny ~]# ls /
bin boot dev etc home lib lib64 linux-76 media mnt opt proc root run sbin srv sys tmp usr var

在linux-76目录中创建student.txt文件
#第一种,绝对路径写法:
[root@destiny ~]# touch /linux-76/studen.txt#第二种,相对路径写法:
[root@destiny ~]# cd /linux-76/
[root@destiny linux-76]# touch student.txt
希望在/linux-76目录下继续创建11/22/33/44/55
[root@destiny linux-76]# mkdir /linux-76/11/22/33/44/55 -pv
mkdir: created directory ‘/linux-76/11’
mkdir: created directory ‘/linux-76/11/22’
mkdir: created directory ‘/linux-76/11/22/33’
mkdir: created directory ‘/linux-76/11/22/33/44’
mkdir: created directory ‘/linux-76/11/22/33/44/55’
#-p是递归创建 -v显示创建的详细过程
总结命令的使用
#创建目录命令 mkdir#-p:递归创建#-v:显示过程#mkdir -pv 文件目录的路径+文件目录的名称#创建文件命令 touch#touch 文件路径+文件名称
删除:移除文件或者目录
#移除/student,txt文件(原生rm没有提示;为了防止误删,增加了别名)
[root@destiny linux-76]# ls /
bin boot dev etc home lib lib64 linux-76 media mnt opt proc root run sbin srv student.txt sys tmp usr var
[root@destiny linux-76]# rm /student.txt
rm: remove regular empty file ‘/student.txt’? y
[root@destiny linux-76]# ls /
bin boot dev etc home lib lib64 linux-76 media mnt opt proc root run sbin srv sys tmp usr var
#我们可以用 rm -f /student.txt忽略提示#删除/linux-76目录;目录下有很多子目录,希望递归移除
[root@destiny ~]# rm -fr /linux-76/
总结rm使用方法:
# rm:移除文件或者目录#-r 移除目录以及目录下的文件,并且采用递归方式#-f force 强制删除不提示#-i 提示是否删除;系统已为我们添加好别名,所以每次都会提示;
给文件建立一个副本;源(要拷贝的内容)——>目录(拷贝到哪里)
# cp - copy files and directories# -p:保持源文件的属性在拷贝的过程中不发生变化;# -r:递归;# -i:提示;# iv:显示拷贝的过程;#语法:# cp 源文件 目标位置;# cp 源文件..源文件..目标位置;# cp 源文件a 目标位置b;#1.拷贝/etc/hosts 文件至于/tmp目录;
[root@destiny ~]# cp /etc/hosts /tmp/
[root@destiny ~]# ls /tmp/# 建议,如果目标是个目录,应该添加/
[root@destiny ~]# cp /etc/hosts /tmp #不加/是知道这个目录一定存在
[root@destiny ~]# cp /etc/hosts /tmp/
[root@destiny ~]# cp /etc/hosts /tmpqqq #预期是/etc/hosts 存储至/tmpqqq目录下,但如果目录不存在,则自动将文件存储至/目录下,并且改名为/tmpqqq#2.希望拷贝 /etc 目录 至 /tmp目录,并重新命名为etc_back;#-r 递归;
[root@destiny ~]# cp -r /etc /tmp/etc_back
[root@destiny ~]# ls /tmp#3.一次拷贝多个文件:/etc/hostname /etc/fastab /var /tmp /root /home ——> /backup
[root@destiny ~]# cp -r /etc/hostname /etc/fstab /var/ /home/ /tmp/ /root/ /backup/
[root@destiny ~]# ls /backup
fstab home hostname root tmp var
#前提:/backup目录必须存在;
#最后一个目录一定是目标;
移动:将一个文件剪切到某个目录下;
#1.在当前用户家目录创建test目录,然后移动到/tmp目录;
[root@destiny ~]# cd
[root@destiny ~]# mkdir test
[root@destiny ~]# mv test/ /tmp/
[root@destiny ~]# ls /tmp/test/ -d
/tmp/test/
#ll=ls -l
[root@destiny ~]# ls /tmp/test/ -dl
drwxr-xr-x. 2 root root 6 Dec 22 16:04 /tmp/test/#2.移动多个目录至于/tmp目录;#{a..z}集合,创建a到z的所有目录
[root@destiny ~]# mkdir {a..z}
[root@destiny ~]# ls
a anaconda-ks.cfg b c d e f g h i j k l m n o p q r s t u v w x y z
[root@destiny ~]# mv {a..z} /tmp
[root@destiny ~]# ls
anaconda-ks.cfg