关于算法:Linux-文件目录都是什么鬼

48次阅读

共计 3544 个字符,预计需要花费 9 分钟才能阅读完成。

Linux 零碎大家肯定不生疏,学习工作中必定会和 Linux 打交道。不过谈及 Linux,给人的第一印象可能就是黑乎乎的命令行,乌七八糟的文件夹,甚至装置软件都不晓得是怎么装置下来的。

其实这些问题都是用惯了 Windows 的后遗症,多用用 Linux 就会发现这玩意还是挺好用的,要害还能 DIY,十分装逼:

言归正传,本文介绍一下 Linux 的文件系统(File System),简略介绍一下这些文件夹都是干什么的。

上图是 Linux 文件系统的一个整体构造,无论是什么版本的 Linux 发行版,根目录 / 基本上就是这些文件。不要胆怯这么多文件夹,大部分都不须要你操心,只有大略理解它们是干啥的就行了。

/bin 和 /sbin

binBinary 的缩写,寄存着可执行文件或可执行文件的链接(相似快捷方式),如下图:

你能够看到 cp, chmod, cat 等常用命令都在这里。留神不要被图标上的 TXT 字样误导了,Linux 不按后缀辨认文件类型,/bin 目录中的文件都是可执行的二进制文件,而不是文本文件。

/bin 相似的是 /sbin 目录,System Binary 的缩写,这里寄存的命令能够对系统配置进行操作。普通用户可能能够应用这里的命令查看某些零碎状态,然而如果想更改配置,就须要 sudo 受权或者切换成超级用户。

能够看到一些相熟的命令,比方 ifconfig, iptables。普通用户能够应用 ifconfig 查看网卡状态,然而想配置网卡信息,就须要受权了。

/boot

这里是系统启动须要的文件,你能够看到 grub 文件夹,它是常见的开机疏导程序。咱们不应该乱动这里的文件。

/dev

devdevice 的缩写,这里寄存这所有的设施文件。在 Linux 中,所有货色都是以文件的模式存在的,包含硬件设施。

比如说,sda, sdb 就是我电脑上的两块硬盘,前面的数字是硬盘分区:

鼠标、键盘等等设施也都能够在这里找到。

/etc

这个目录常常应用,寄存很多程序的配置信息,比方包管理工具 apt:

/etc/apt 中就寄存着对应的配置,比如说镜像列表(我配置的阿里云镜像):

如果你要批改一些零碎程序的配置,十有八九要到 etc 目录下寻找。

/lib

lib 是 Library 的缩写,相似于 Windows 零碎中寄存 dll 文件的库,蕴含 bin 和 sbin 中可执行文件的依赖。

也可能呈现 lib32lib64 这样的目录,和 lib 差不多,只是操作系统位数不同而已。

/media

这里会有一个以你用户名命名的文件夹,外面是主动挂载的设施,比方 U 盘,移动硬盘,网络设备等。

比如说我在电脑上插入一个 U 盘,零碎会把 U 盘主动给我挂载到 /media/fdl 这个文件夹里(我的用户名是 fdl),如果我要拜访 U 盘的内容,就能够在那里找到。

/mnt

这也是和设施挂载相干的一个文件夹,个别是空文件夹。media 文件夹是零碎主动挂载设施的中央,这里是你手动挂载设施的中央。

比如说,方才咱们在 dev 中看到了一大堆设施,你想关上某些设施看看外面的内容,就能够通过命令把设施挂载到 mnt 目录进行操作。

不过一般来说,当初的操作系统曾经很聪慧了,像挂载设施的操作简直都不必你手动做,都被主动挂载到 media 目录了。

/opt

opt 是 Option 的缩写,这个文件夹的应用比拟随便,一般来说咱们本人在浏览器上下载的软件,装置在这里比拟好。当然,包管理工具下载的软件也可能被寄存在这里。

比方我在这里寄存了 Chrome 浏览器(google),网易云音乐(netease),CLion IDE 等等软件的文件夹。

/proc

procprocess 的缩写,这里寄存的是全副正在运行程序的状态信息。

你会发现 /proc 外面有一大堆数字命名的文件夹,这个数字其实是 Process ID(PID),文件夹里又有很多文件。

后面说过,Linux 中所有都以文件模式贮存,相似 /dev,这里的文件也不是真正的文件,而是程序和内核交换的一些信息。比如说咱们能够查看以后操作系统的版本,或者查看 CPU 的状态:

如果你须要调试应用程序,proc 目录中的信息兴许会帮上忙。

/root

这是 root 用户的家目录,普通用户须要受权能力拜访。

/run 和 /sys

用来存储某些程序的运行时信息和零碎须要的一些信息。比如说这个文件:

sudo vim /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brightness

外面存储着一个数字,是你的显卡亮度,你批改这个数字就能够批改屏幕亮度。

须要留神的是,这两个地位的数据都存储在内存中,所以一旦重启,/run/sys 目录的信息就会失落,所以不要试图在这里寄存任何文件。

/srv

srvservice 的缩写,次要用来寄存服务数据。

对于桌面版 Linux 零碎,这个文件夹个别是空的,然而对于 Linux 服务器,Web 服务或者 FTP 文件服务的资源能够寄存在这里。

/tmp

tmptemporary 的缩写,存储一些程序的临时文件。

临时文件可能起到很重要的作用。比方常常据说某同学的 Word 文档解体了,好不容易写的货色全没了,Linux 的很多文本编辑器都会在 /tmp 放一份以后文本的 copy 作为临时文件,如果你的编辑器意外解体,还有机会在 /tmp 找一找临时文件抢救一下。

比方上图的 VSCode Crashes 应该就是 VScode 编辑器寄存临时文件的中央。

当然,tmp 文件夹在零碎重启之后会主动被清空,如果没有被清空,阐明零碎删除某些文件失败,兴许须要你手动删除一下。

/usr

usr 是 Universal System Resource 的缩写,这里寄存的是一些 非零碎必须的资源,比方用户装置的应用程序。

/usr/usr/local 目录中又含有 binsbin 目录,也是寄存可执行文件(命令),但和根目录的 binsbin 不同的是,这里大都是用户应用的工具,而非零碎必须应用的。

比如说 /usr/bin 中含有我通过包管理工具装置的应用程序 Chrome 浏览器和 goldendict 字典的可执行文件:

值得一提的是,如果应用 Linux 桌面版,有时候在桌面找不到应用程序的快捷方式,就须要在 /usr/share/applications 中手动配置桌面图标文件:

/var

varvariable 的缩写,这个名字是历史遗留的,当初该目录最次要的作用是存储日志(log)信息,比如说程序解体,防火墙检测到异样等等信息都会记录在这里。

这是我的 /var/log 目录:

日志文件不会主动删除,也就是说随着零碎应用工夫的增长,你的 var 目录占用的磁盘空间会越来越大,兴许须要适时清理一下。

/home

最初说 home 目录,这是普通用户的家目录。在桌面版的 Linux 零碎中,用户的家目录会有下载、视频、音乐、桌面等文件夹,这些没啥可说的,咱们说一些暗藏的比拟重要的文件夹(Linux 中名称以 . 结尾就是暗藏文件)。

这是我的家目录的局部文件:

其中 .cache 文件夹存储利用缓存数据,.config 文件夹存储了一部分应用程序的配置,比如说我的 Chrome 浏览器配置就是那外面。然而还有一部分应用程序并不把配置贮存在 .config 文件夹,而是本人创立一个暗藏文件夹,寄存本人的配置文件等等信息,比方你能够看到 Intellij 的配置文件就不在 .config 中。

最初说 .local 文件夹,有点像 /usr/local,外面也有 bin 文件夹,也是寄存可执行文件的。比如说我的 python pip 以及 pip 装置的一些工具,都寄存在 ~/.local/bin 目录中。然而,存在这里的文件,只有该用户能力应用。

这就是为什么,有时候普通用户能够应用的命令,用 sudo 或者超级用户却被告知找不到该命令。因为有的命令是特定用户家目录里的,被增加到了该用户的 PATH 环境变量里,他能够间接用。你超级用户想用当然能够,然而得写全绝对路径才行。

最初总结

如果批改系统配置,就去 /etc 找,如果批改用户的应用程序配置,就在用户家目录的暗藏文件里找。

你在命令行里能够间接输出应用的命令,其可执行文件个别就在以下几个地位:

/bin    
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/home/USER/.local/bin
/home/USER/.local/sbin

如果你写了一个脚本 / 程序,想在任何时候都能间接调用,能够把这个脚本 / 程序增加到上述目录中。

如果某个程序解体了,能够到 /val/log 中尝试寻找出错信息,到 /tmp 中寻找残留的临时文件。

设施文件在 /dev 目录,然而一般来说零碎会主动帮你挂载诸如 U 盘之类的设施,能够到 /media 文件夹拜访设施内容。

正文完
 0