3 Linux文件和目录管理
3.1 Linux文件系统的层次结构
- 在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。如此反复就可以构成一个庞大的文件系统。使用这种树状、具有层次的文件结构主要目的是方便文件系统的管理和维护。
- 目录就相当于 Windows 中的文件夹,目录中存放的既可以是文件,也可以是其他的子目录,而文件中存储的是真正的信息。
注意,目录名或文件名都是区分大小写的,如 file、FILE和 File为 3 个不同的目录或文件。完整的目录或文件路径是由一连串的目录名所组成的,其中每一个目录由“/”来分隔。如 cat 的完整路径是 /home/cat。
-
在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 … 来表示。
- . :代表当前的目录,也可以使用 ./ 来表示;
- … :代表上一层目录,也可以 …/ 来代表。
-
如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
-
为了方便管理和维护,Linux 系统采用了文件系统层次标准,也称为 FHS 标准,它规定了根目录下各个目录应该存在哪些类型的文件(或子目录)
-
系统启动必须:
-
**/boot:**存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。(不动)
-
/etc:存放所有的系统需要的配置文件和**子目录列表,**更改目录下的文件可能会导致系统不能启动。(java,tomcat,redis配置文件)
-
/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。(不动)
-
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中
指令集合:
-
**/bin:**存放着最常用的程序和指令
-
**/sbin:**只有系统管理员能使用的程序和指令。
外部文件管理:
-
**/dev :**Device(设备)的缩写, 存放的是Linux的外部设备。**注意:**在Linux中访问设备和访问文件的方式是相同的。
-
/media:类windows的**其他设备,**例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
-
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了,本地目录挂载在这个目录下。
临时文件:
-
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
-
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
-
/tmp:这个目录是用来存放一些临时文件的,如:安装包解压后删除。
账户:
-
/root:系统管理员的用户主目录。
-
/home:用户的主目录,以用户的账号命名的,自定义的文件目录放这里面。
-
/usr:用户的很多应用程序和文件都安装在这个目录下,类似于windows下的program files目录。 、如:user/local本地安装软件 user/etc本地软件配置文件
-
**/usr/bin:**系统用户使用的应用程序与指令。
-
**/usr/sbin:**超级用户使用的比较高级的管理程序和系统守护程序。
-
**/usr/src:**内核源代码默认的放置目录。系统核心
运行过程中要用:
-
/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
-
/proc:管理**内存空间!**虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。(不用管)
-
/www:存放服务器网站相关的资源,环境,网站的项目(服务器才有此目录),可以查看ll server安装的Lnmp环境
扩展用的:
-
/opt:默认是空的,我们安装额外软件可以放在这个里面。
-
/srv:存放服务启动后需要提取的数据**(不用服务器就是空)**
-
3.2 Linux绝对路径和相对路径
- 文件的路径,指的就是该文件存放的位置,有 2 种方法,分别是使用绝对路径和相对路径
- 按上节所说的Linux 系统中所有的文件(目录)都被组织成以根目录“/”开始的倒置的树状结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cf4XPYos-1666522441767)(…/typora-user-images/d0c50-linux2bfile2bsystem2bhierarchy.jpg)]
- 绝对路径一定是由根目录 / 开始写起,如:/usr/sbin,若只传递给 Linux 系统一个文件名,它无法找到指定文件。可以在任意位置使用
- 相对路径和绝对路径不同,不是从根目录 / 开始写起,而是从当前所在的工作目录开始写起。使用相对路径表明某文件的存储位置时,经常会用到前面讲到的 2 个特殊目录,即当前目录(用 . 表示)和父目录(用 … 表示)。当我们使用 root 身份登录 Linux 系统时,当前工作目录默认为 /root,如果此时需要将当前工作目录调整到 root 的子目录 Desktop 中,当然可以使用绝对路径。只能在相对位置使用例如:由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法
[root@CncLucZK ~]# cd ~
[root@CncLucZK ~]# pwd # 显示当前所在的工作路径
/root
[root@CncLucZK ~]# cd /test #绝对路径跳转
[root@CncLucZK test]# pwd
/test
- 当然使用相对路径的方式会更简单
[root@CncLucZK /]# pwd
/
[root@CncLucZK /]# cd ./test #./test 表示的就是 test 文件相对于 / 所在的路径。
[root@CncLucZK test]# pwd
/test
- 可以在举例说明一下:
[root@CncLucZK /]# cd ~
[root@CncLucZK ~]# pwd
/root
[root@CncLucZK ~]# cd /usr
[root@CncLucZK usr]# pwd
/usr
[root@CncLucZK usr]# cd ~
[root@CncLucZK ~]# pwd
/root
[root@CncLucZK ~]# cd ../usr #相对 root,usr 位于其父目录 /,因此这里要用到 ..
[root@CncLucZK usr]# pwd
/usr
- 绝对路径是相对于根路径 / 的,只要文件不移动位置,那么它的绝对路径是恒定不变的;而相对路径是相对于当前所在目录而言的,随着程序的执行,当前所在目录可能会改变,因此文件的相对路径不是固定不变的。
3.3 Linux文件(目录)命名规则
-
在 Linux 系统中,一切都是文件,既然是文件,就必须要有文件名。同其他系统相比,Linux 操作系统对文件或目录命名的要求相对比较宽松。
-
Linux 系统中,文件和目录的命名规则如下:
- 除了字符“/”之外,所有的字符都可以使用,但是要注意,在目录名或文件名中,使用某些特殊字符并不是明智之举。例如,在命名时应避免使用 <、>、?、* 和非打印字符等。如果一个文件名中包含了特殊字符,例如空格,那么在访问这个文件时就需要使用引号将文件名括起来。
- 目录名或文件名的长度不能超过 255 个字符。
- 目录名或文件名是区分大小写的。如 file、FILE和 File为 3 个不同的目录或文件 ,是互不相同的目录名或文件名,但使用字符大小写来区分不同的文件或目录,也是不明智的。
- 与 Windows 操作系统不同,文件的扩展名对 Linux 操作系统没有特殊的含义,换句话说,Linux 系统并不以文件的扩展名开分区文件类型。例如,xxx.exe 只是一个文件,其扩展名 .exe 并不代表此文件就一定是可执行文件。
-
需要注意的是,在 Linux 系统中,硬件设备也是文件,也有各自的文件名称。Linux 系统内核中的 udev 设备管理器会自动对硬件设备的名称进行规范,目的是让用户通过设备文件的名称,就可以大致猜测处设备的属性以及相关信息。
-
udev 设备管理器会一直以进程的形式运行,并侦听系统内核发出的信号来管理位于 /dev 目录下的设备文件.Linux 系统中常见硬件设备的文件名。
硬件设备 | 文件名称 |
---|---|
IDE设备 | /dev/hd[a-d],现在的 IDE设备已经很少见了,因此一般的硬盘设备会以 /dev/sd 开头。 |
SCSI/SATA/U盘 | /dev/sd[a-p],一台主机可以有多块硬盘,因此系统采用 a~p 代表 16 块不同的硬盘。 |
软驱 | /dev/fd[0-1] |
打印机 | /dev/lp[0-15] |
光驱 | /dev/cdrom |
鼠标 | /dev/mouse |
磁带机 | /dev/st0 或 /dev/ht0 |
3.4 Linux命令基本格式
-
对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务、开放更多的端口,这对服务器的稳定性和安全性都有负面影响.服务器的稳定性、可靠性、安全性才是最主要的。而简单易用不是服务器需要考虑的事情。
-
命令提示符
[root@localhost ~]# [youaccount@CncLucZK ~]$
-
Linux 系统的命令提示符各元素含义
-
[]:这是提示符的分隔符号,没有特殊含义。
-
root:显示的是当前的登录用户,root是linux的超级用户。
-
@:分隔符号,没有特殊含义。
-
localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。
-
~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
-
#:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;
-
$:普通用户的命令提示符。
-
主目录(家目录) 用户登录后Linux 系统进入命令行界面,有一个初始登录的位置,这个初始登录位置就称为用户的家:
- 超级用户的家目录:/root。
- 普通用户的家目录:/home/用户名。
-
用户在主目录中拥有完整权限,所以我们也建议操作实验可以放在主目录中进行。切换一下用户所在目录,看看有命令提示符的效果。
[root@CncLucZK test]# cd /test/user
[root@CncLucZK user]#
#用户切换目录后,命令提示符中所在目录显示的是最后一个目录(不显示完整的所在目录 /test/user,只显示最后一个目录 user)。
- Linux 命令的基本格式:
[root@localhost ~]# 命令[选项][参数]
命令格式中的 [] 代表可选项,说明这些命令可以不带选项或参数,也能执行。那么,我们就用 Linux 中最常见的 ls 查看命令来解释一下命令的格式。如果按照命令的分类,那么 ls 命令应该属于目录操作命令>
[root@CncLucZK user]# ls
config demo.txt log logs tmp tmp.txt
- 选项的作用:ls 命令之后不加选项和参数也能执行,不过只能执行最基本的功能,即显示当前目录下的文件名。那么加入一个选项,看看结果?
[root@CncLucZK user]# ls -l
total 3176
drwxr-xr-x 2 root root 4096 Oct 8 23:49 config
-rw-r--r-- 1 root root 6 Oct 12 23:10 demo.txt
-rw-r--r-- 1 root root 0 Oct 16 13:52 log
-rw-r--r-- 1 root root 3234117 Oct 16 13:54 logs
drwxr-xr-x 2 root root 4096 Oct 6 09:09 tmp
-rw-r--r-- 1 root root 13 Oct 16 13:47 tmp.txt
-
如果加一个”-l”选项,则可以看到显示的内容明显增多了。”-l”是长格式(long list)的意思,也就是显示文件的详细信息。至于 “-l” 选项的具体含义。可以看到选项的作用是调整命令功能。如果没有选项,那么命令只能执行最基本的功能;而一旦有选项,则可以显示更加丰富的数据。
-
Linux 的选项又分为短格式选项(-l)和长格式选项(–all)。短格式选项是英文的简写,用一个减号调用,例如:
[root@localhost ~]# ls -l
- 而长格式选项是英文完整单词,一般用两个减号调用,例如:
[root@localhost ~]# ls --all
一般情况下,短格式选项是长格式选项的缩写,也就是一个短格式选项会有对应的长格式选项。当然也有例外,比如 ls 命令的短格式选项 -l 就没有对应的长格式选项。所以具体的命令选项可以通过后面我们要学习的帮助命令来进行査询。
可以使用 man [命令] 来查看各个命令的使用文档,如 :man ls。
若当前目录下文件是可见的,那么输入前两个字母按住tab自动补全
- 参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作。例如:
[root@CncLucZK test]# ll -d user #ll等同于ls
drwx--x--x 4 root root 4096 Oct 16 13:52 user
- 命令可以省略参数是因为有默认参数。命令一般都需要加入参数,用于指定命令操作的对象是谁。如果可以省略参数,则一般都有默认参数。例如:
[root@CncLucZK test]# ll
total 5296
-rw-r--r-- 1 root root 38 Oct 12 23:10 add.sh
-rw-r--r-- 1 root root 41 Oct 12 23:10 awk.sh
-rw-r--r-- 1 root root 5324748 Oct 12 23:10 blog.docx
...
- 这个 ls 命令后面没有指定参数,默认参数是当前所在位置,所以会显示当前目录下的文件名。所以,命令的选项用于调整命令功能,而命令的参数是这个命令的操作对象。
参考文献:
Linux 系统目录结构
Linux绝对路径和相对路径详解
Linux 文件与目录管理
下一篇:Linux学习-07-Linux目录常用操作命令1
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123785.html