Linux-4 文件管理

Linux-4 文件管理

文件管理概述

谈到Linux文件管理,首先我们需要了解的是,我们要对文件做些什么事?其实无非就是对一个文件进行创建,复制,移动,查看,编辑,压缩,查找,删除等等。例如:当我们想修改系统的主机名称,是否应该知道文件在哪,才能去做对应的修改

系统目录结构

几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支,所以该结构又被称为目录树

Windows以多根的方式组织文件C:\,D:\,E:\

Linux以单根的方式组织文件\

下图为centos7的目录结构:

image-20221222093515603

1、配置文件目录

配置指的其实就是一种参数;技术的参数都存储在某一个文件中,将文件称为配置文件;配置文件可以变更某个软件的运行效果;

  • /etc:
    存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
    • 修改IP地址:/etc/sysconfig/network-scripts/ifcfg-xxx
    • 修改主机名称:/etc/hostname
    • 修改…
    • 变更完配置如何生效(根据实际情况决定):
      1. 修改立即生效;运行时即可生效;
      2. 修改后重启服务生效;
  • /lib:
    存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /sys:
    这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
    sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
    该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中。
2、命令目录
  • /bin- ->/usr/bin:
    存放着最常用的程序和命令,一般来说,普通用户和超级管理员都可以运行;
  • /sbin- ->/usr/sbin
    存放特殊命令,只有系统管理员能使用的程序和指令,普通用户可以申请操作权限;
3、设备目录
  • /dev :
    Device(设备)的缩写, 存放的是Linux的外部设备,包括键盘,光盘,磁盘,终端。注意:在Linux中访问设备和访问文件的方式是相同的,在Linux中这些称为文件。

    • /dev/null:黑洞,就是存储在这个设备中的数据都会丢失;

    • /dev/random:产生随机数;

      image-20221222103527159
  • /media:
    类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。

  • /mnt:
    临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  • /run:
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

  • /lost+found:
    一般情况下为空的,系统非法关机后,这里就存放一些文件。

4、用户家目录

每一个用户都有自己的家;每一个家都有环境,如果破坏掉环境,那么再进入家,可能得到的结果和预期不一致;

  • /root:
    超级管理员的家目录,一般来说普通用户没资格进入;
  • /home:
    普通用户的家目录(除了root以外都是普通用户);以用户的账号命名的,默认普通用户的家目录:/home/username- ->jack /home/jack
5、启动目录
  • /boot:

    存储系统启动时加载的文件,比如:内核文件,grub菜单,救援内核系统等

    • 如果删除目录中的文件,会造成无法启动系统;
6、临时目录
  • /tmp:

    这个目录是用来存放一些临时文件的,谁都可以在这里面存储数据,但是自己的数据只能自己移除,别人无法移除;所有用户都可以看,但是不能删除;root用户既可以看,也可以删除;

7、可变目录
  • /var:
    是一个可变的目录,存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
    • 可变:会随着系统的运行(产生一些数据,记录),而不断地发生变化;
    • /var/log:存储日志;启动的日志;系统操作的日志;系统登录的日志等;
8、运行时状态目录
  • /proc:
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,记录设备(CPU,内存,磁盘)运行状态,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    image-20221222104735665
9、系统目录
  • /usr:

    用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录,非常重要;

    • /usr/lib:存放的是库文件(共享);
    • /usr/lib64:存放的是库文件(共享);
    • /usr/local:存储我们字型安装软件的路径;
    • /usr/src:存储安装包(安装前的软件存储的路径)
    • /usr/bin:系统用户使用的应用程序与指令。
    • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
    • /usr/src:内核源代码默认的放置目录。
10、扩展文件目录
  • /opt:
    默认是空的,我们安装额外软件可以放在这个里面。
  • /srv:
    存放服务启动后需要提取的数据(不用,服务器就是空)。
文件路径定位

在我们开始操作文件之前,首先需要对文件的路径进行定位。Why?你要在哪个文件下创建什么文件?你要将文件复制到什么地方?或者你要删除的文件在什么地方?比如:/etc/hostname,整个文件中包含文件名称以及文件所在的位置,我们将这个叫做路径,也就是说我们是通过路径对文件进行定位。

  • 操作文件之前,需要知道这个文件的路径;路径==文件的位置;路径可以定位文件的位置;
绝对路径与相对路径

绝对路径:只要从/开始的路径都是绝对路径,比如/home/alice.file 相对路径是相对于当前目录来说。

相对路径:相对于当前你在哪个目录;/root

一般情况下,查找文件使用绝对路径:/root/abc/file.txt;如果我就在/root目录下可以使用相对:abc/file.txt

.表示当前目录,…表示上级目录

文件管理-命令
创建(mkdir-touch)
  • 在根下创建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
    

    image-20221222144951816

  • 在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显示创建的详细过程
    
    image-20221222145743504
  • 总结命令的使用

    #创建目录命令 mkdir
    	#-p:递归创建
    	#-v:显示过程
    	#mkdir -pv 文件目录的路径+文件目录的名称
    	
    #创建文件命令 touch
    	#touch 文件路径+文件名称
    
删除(rm)
  • 删除:移除文件或者目录

  • #移除/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)
  • 给文件建立一个副本;源(要拷贝的内容)——>目录(拷贝到哪里)

    image-20221222151310709
  • #  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目录必须存在;
    #最后一个目录一定是目标;
    
移动(mv)
  • 移动:将一个文件剪切到某个目录下;

  • #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
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游子无寒衣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值