Linux文件管理 | Linux 文件基础知识
目录
一、Linux 常用文件类别
1、文件
在Linux上系统上,有一切皆文件的说法,就是说任何软件和I/O设备都被视为文件。
Linux中文件最大支持256个字符(A ~ Z、a ~ z、0 ~ 9)。另外需要注意的是Linux系统中是大小写敏感的,也就是说在Linux系统中文件Hello.c
和hello.c
是两个文件,这点和Windows系统不同。
此外,Linux没有盘符这个概念(即Windows下的C盘、D盘等),在Linux系统下我们通常把文件夹称作目录,不同硬盘分区是被挂载在不同目录下的。
Linux文件不以后缀名区分文件类型,所以,在Linux系统中文件是没有文件名的。注意:由于Linux下文件后缀与文件中类没有关系,所以当你在操作Linux系统时,看见a.exe
时,不要下意识的认为这是一个可执行文件,它也有可能是一个文本文件或者其他种类的文件。
由于Linux系统是基于 Unix 操作系统原理的开源操作系统,所以Linux大部分特性都与Unix系统以及 类Unix系统 一致。
2、文件种类
Linux下文件可分为5中不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。在Shell中输入命令ls -l
可以显示文件信息。
- 普通文件(-)
这是最常见的一种文件类型,其特点是不包含有文件系统的结构信息。如图形文件、数据文件、文档文件、声音文件等都是普通文件。这种类型的文件按其内部结构又可细分为文本文件和二进制文件。 - 目录文件(d)
目录文件是用于存放文件名及其相关信息的文件。它是内核相关组织文件系统的基本节点。Linux目录采用树形结构,以根目录/向下延伸呈一个倒置的树的形状,每个目录文件可以包含下一级文件或普通文件。在Linux中,目录也是一种文件。 - 链接文件(l)
链接文件是一种特殊的文件,实际上是指向一个真实存在的文件链接,类似Windows下的快捷方式。根据链接文件方式的不同,它又可以细分为硬连接(Hard Link)文件和符号链接(Symbolic Link,又称为软连接)文件。 - 设备文件
设备文件是Linux下最特殊的文件。Linux系统可以十分方便地访问外部设备,正是依赖于设备文件的存在。Linux为外部设备提供了一种标椎接口,将外部设备视为一种特殊的文件,使用户可以像访问普通文件一样访问任何外部设备。通常Linux系统将设备文件放在/dev
目录下。设备文件使用设备的主设备号和次设备号来指定某外部设备。根据访问数据方式的不同,设备文件又可以分为块设备文件和字符设备文件。 - 管道文件
管道文件也是一种很特殊的文件,主要用于不同进程间的通信。当两个进程间需要进行数据交换或信息传递时,可以使用管道文件。一个进程将需要传递的数据或信息写入管道的一端,另一进程则从管道的另一端取得所需的数据或信息。通常管道是建立在调整缓存中的。
二、Linux 目录结构概述
1、概述
在计算机使用的过程中会产生大量的文件,如何有效的组织并管理它们,并且让用户可以方便的使用时一个文件系统的首要任务。Linux 系统一文件目录的方式来组织和管理系统中的所有文件。
所谓的文件目录就是将所有的文件说明信息采用树形结构组织起来。整个文件系统在一个名为“根”的目录下,以类似树枝分杈的结构向下延伸,其中每一个分杈的节点都是一个目录,延伸至树枝尾端的树叶就是文件。实践证明,这种结构的文件系统是非常高效的,现代操作系统基本上都采用这种结构方式。
在Linux 系统下每个目录中至少都会包含两个特殊文件。一个是.
文件,代表的是当前目录,比如在当前目录下有个hello
的可执行文件,用户可以通过使用 绝对路径 1+文件名 的方式运行该文件,如/xx/xx/xx/hello
; 或通过 相对路径2 + 文件名 的方式,如./hello
。另一个特殊目录是..
目录,它表示当前目录的父目录,比如使用CD
命令切换路径时,cd ..
便可回到上级目录(父目录)。
除此之外,还有目录的权限、属性以及目录的访问、修改、共享等,由于涉及内容过多这里先不做过多提及。
2、目录及常见概念
- 路径
路径简单来讲就是从某个目录到达另一个目录所经过的道路。在Linux 系统中对文件进行访问时,首先要得到文件的路径,通过文件所在的路径对特定文件进行访问。根据上面路径的定义可知文件的路径可以由多个不同的目录确定多条不同的路径,所以,我们引入了绝对路径1和 相对路径2这两个概念。其中绝对路径也称完全路径,指从根目录出发到目标文件的路径,并且文件的绝对路径时唯一的。相对路径时相对于用户当前的工作目录而言的,并且相对路径时可变的,随着用户的工作目录改变相对路径也随之改变。
- 根目录
Linux 系统的根目录(/)是Linux 系统中最特殊的目录,是所有目录的起点。操作系统本身驻留的程序就是存放在以根目录开始的专用目录中,如Linux 下的守护进程就是存放在目录/usr/sbin/
中。另外,对于根目录而言,本身不存父目录,所以 ‘’.
’’ 和 ‘’..
’'都代表其自身。 - 家目录
家目录也称用户主目录,是系统管理员增加用户时建立起来的。每个用户都有自己的主目录,不同的用户一般主目录不相同。用户刚登陆系统时,其工作目录便是该用户的主目录,通常与用户登陆名相同,用户可以通过’’cd ~
’‘命令回到自己的主目录,’’~
’'符号通常可以表示当前用户的主目录的绝对路径。例如:用户tr
所在的主目录为/home/tr/
,对应该用户而言,访问桌面的hello.c
时,使用绝对路径/home/tr/Desktop/hello.c
和使用主目录访问~/Desktop/hello.c
是完全一样的。 - 工作目录
从逻辑上将,Linux 用户时时刻刻都处于工作目录中,工作目录(Working Directory)其实就是当前目录,在访问当前目录下的文件时,通常采用 “点”+文件名 的方式./filenae
。前面也提到了,要想访问文件就得知道文件的路径,因为文件系统采用树状结构设计的方式,如果我们想要运行可执行程序run
,而在当前工作目录下有两个目录,在这两个目录下都存在一个run
程序,那么直接运行run程序时系统也不知道用户想要运行哪一个程序。而系统规定在访问文件时必须用 “路径 + 文件”的方式。’’.
’'符号表示当前的工作目录,因此,可以用 “点”+文件名 的方式访问该目录下的所有文件。 - 环境变量
试一试使用ls
命令查看目录下的文件,使用ping
命令测试网络是否通畅。我们会注意到一个问题,上面也提到了运行(访问)某个程序时需要用 路径+文件名 的方式,这里怎么又可以省略路径了。其实,这里并没有省略路径而是以另一种方式实现。当我们在Shell 中给出所要执行的命令后,shell会自动在PATH环境变量所包含的目录列表中查找对应的可执行文件。PATH通常定义在/etc/environment或/etc/profile或~/.bashrc 中。使用$PATH
可以查看环境变量中的路径。Shell中还有许多环境变量这里就不不再做过多赘述,详情搜索Shell环境变量。
LInux 系统目录及说明
-
/:根目录。在Windows 、DOS 或者其他类似的操作系统里,每个分区都会有一个相对应的根目录。而Linux 和 其他 UNIX系统则是把所有文件都放在一个目录树里面。一般来说,根目录下很少保存什么文件,或者只有一个内核印像在里面。
-
/bin:
bin是Binary的缩写, 这个目录存放着经常使用的命令。 -
/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。 -
/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。 -
/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。 -
/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 -
/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 -
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 -
/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。 -
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。 -
/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 -
/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all -
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。 -
/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 -
/selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 -
/srv:
该目录存放一些服务启动之后需要提取的数据。 -
/sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。 -
/tmp:
这个目录是用来存放一些临时文件的。 -
/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。 -
/usr/bin:
系统用户使用的应用程序。 -
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。 -
/usr/src:
内核源代码默认的放置目录。 -
/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 -
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。 -
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
-
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。 -
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。