Linux学习笔记第1弹—目录结构

好早就听说Linux了,之前看到别人操作总觉得这是黑客用的玩意儿,简直太高端了。后来涉猎了一些计算机的书,才发现我们觉得高大上的东西,只不过是它的命令行而已,Windows也有这东西,就叫做命令行。

7月份去实习才算正式接触到Linux,有点相见恨晚的感觉🐯。实习每天都很忙,周末又要写论文,没时间学习Linux,只有赶鸭子上架了,不会的时候百度,再就是问运维勇哥和兴哥。特别感谢他们,有的时候问问题问的我自己都不好意思了😊。现在论文也差不多弄完了,终于可以安心下来学习Linux了,于是就有了这篇学习笔记

特别说明:我是通过慕课网上的Linux达人养成计划来学习的,老师讲的特别好,特别适合小白学习。唯一的不足就是视频有些年月了😊
视频传送门:Linux达人养成计划I

💷先来一个小火箭的特效🙋🏻

哈哈,这是最近发现的一个包,特别拉风!!

下面正式进入今天的主题,Linux的目录结构。

大家都比较熟悉Windows系统,一般而言,Windows系统都会磁盘都会进行分区,最典型就是系统所在的C盘。和Windows一样,Linux系统也会进行磁盘的分区,但是和Windows并不一样。具体的差别等到了高级篇的时候再说吧。Windows系统中C盘的目录结构一般如下所示:

Linux系统下,如果没有安装图形界面,一般都是通过bash来与内核进行交互。这里推荐使用Xshell,超级好用,谁用谁知道!(Xshell并不是bash,它只是一个终端模拟软件,Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。

Xshell中打印根目录下所有的文件,如下所示:

1
2
cd /
ll -hia

输出:

1
2
3
4
[root@i*****Z /]# cd /
[root@i*****Z /]# ls
bin boot data_information dev etc home lib lib64 lost+found media
mnt opt proc root run sbin srv sys tmp usr var

可以看到,同样存在很多文件。那么我们不禁要问,这些文件/文件夹是干什么用的呢?

图片来源:Linux公社

上面这幅图给出了根目录下所有的文件及文件夹。其中,不同类型的文件的显示颜色也不同,具体的规则是:

  • 蓝色:表示目录

  • 青色:表示链接

  • 黑色:表示文件

下面这幅图很好的描绘了Linux系统下目录结构图:

图片来源:Linux公社

下面分别说明这几个目录的含义:

1、/- 根

每一个文件和目录从根目录开始。
只有root用户具有该目录下的写权限。请注意,/rootroot用户的主目录,这与/.不一样

2、/bin中 - 用户二进制文件

包含二进制可执行文件。
在单用户模式下,你需要使用的常见Linux命令都位于此目录下。系统的所有用户使用的命令都设在这里。
例如:pslspinggrepcp

图片来源:Linux公社

3、/sbin目录 - 系统二进制文件

就像/bin/sbin同样也包含二进制可执行文件。
但是,在这个目录下的Linux命令通常由系统管理员使用,对系统进行维护。例如:iptablesrebootfdiskifconfigswapon命令

4、/etc - 配置文件

包含所有程序所需的配置文件。
也包含了用于启动/停止单个程序的启动和关闭shell脚本。例如:/etc/resolv.conf/etc/logrotate.conf/ect/shiny-server.conf

hosts:设备名称(或域名)到ip地址的解析,相当于本地存在的dns功能。

1
2
3
4
5
6
ping baidu.com
# output
PING baidu.com (111.13.101.208) 56(84) bytes of data.
64 bytes from 111.13.101.208 (111.13.101.208): icmp_seq=1 ttl=51 time=29.2 ms
64 bytes from 111.13.101.208 (111.13.101.208): icmp_seq=2 ttl=51 time=29.1 ms

5、/dev - 设备文件

包含设备文件。
这些包括终端设备、USB或连接到系统的任何设备。例如:/dev/tty1/dev/usbmon0

6、/proc - 进程信息

包含系统进程的相关信息。
这是一个虚拟的文件系统,包含有关正在运行的进程的信息。例如:/proc/{pid}目录中包含的与特定pid相关的信息。
这是一个虚拟的文件系统,系统资源以文本信息形式存在。例如:/proc/uptime

7、/var - 变量文件

var代表变量文件。
这个目录下可以找到内容可能增长的文件。
这包括 - 系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp);

1
2
3
4
# 我自己的服务器上`/var`目录的所有文件
[root@iZ*****Z /]# cd /var
[root@iZ*****Z var]# ls
adm cache crash db empty games gopher kerberos lib local lock log mail nis opt preserve run shiny-server spool tmp yp

8、/tmp - 临时文件

包含系统和用户创建的临时文件。
当系统重新启动时,这个目录下的文件都将被删除。

1
2
3
4
5
6
7
8
9
# 我自己的服务器上`/tmp`目录下的部分文件
[root@iZ*****Z var]# cd /tmp
[root@iZ*****Z tmp]# ls
rstudio-rsession RtmpggBwzB RtmprDhIJE
Rtmp0Dw0UX Rtmpgjgx2W RtmprkMQCv
Rtmp0MdUqP RtmpGmG3NA Rtmps0Tb6S
Rtmp1kfzyr RtmpHkxTJF RtmpSH0S8W
Rtmp1ONanS RtmphSBXVe RtmpsZ217R
Rtmp1uQOcx Rtmphw8HnI Rtmpt62huM

9、/usr - 用户程序

包含二进制文件、库文件、文档和二级程序的源代码。
/usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。例如:atawkcclessscp
/usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。例如:atdcronsshduseradduserdel
/usr/lib中包含了/usr/bin和/usr/sbin用到的库。
/usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apache2中。

1
2
3
4
# 我自己的服务器上`/usr`目录下的部分文件
[root@iZ****Z tmp]# cd /usr
[root@iZ****Z usr]# ls
bin etc games include java lib lib64 libexec local sbin share src tmp

10、/home - HOME目录,即用户的主目录

所有用户用home目录来存储他们的个人档案。
例如:/home/john/home/nikita

1
2
3
4
5
6
7
8
9
# 我自己的服务器上`/home`目录下的部分文件
[root@i*****Z usr]# cd /home
[root@i*****Z home]# ls
imooc
mysql-community-client-5.7.16-1.el7.x86_64.rpm mysql-community-server-minimal-5.7.16-1.el7.x86_64.rpm
mysql-community-common-5.7.16-1.el7.x86_64.rpm mysql-community-test-5.7.16-1.el7.x86_64.rpm
mysql-community-devel-5.7.16-1.el7.x86_64.rpm shiny
mysql-community-embedded-5.7.16-1.el7.x86_64.rpm tomcat
mysql-community-embedded-compat-5.7.16-1.el7.x86_64.rpm

11、/boot - 引导加载程序文件

包含引导加载程序相关的文件。
内核的initrdvmlinuxgrub文件位于/boot下。
例如:initrd.img-2.6.32-24-genericvmlinuz-2.6.32-24-generic

1
2
3
4
5
6
7
8
# 我自己的服务器上`/boot`目录的部分文件
[root@i*****Z home]# cd /boot
[root@i*****Z boot]# ls
config-3.10.0-327.22.2.el7.x86_64 symvers-3.10.0-327.36.3.el7.x86_64.gz
config-3.10.0-327.36.3.el7.x86_64 symvers-3.10.0-327.el7.x86_64.gz
config-3.10.0-327.el7.x86_64 symvers-3.10.0-693.11.1.el7.x86_64.gz
config-3.10.0-693.11.1.el7.x86_64 symvers-3.10.0-693.5.2.el7.x86_64.gz
config-3.10.0-693.5.2.el7.x86_64 System.map-3.10.0-327.22.2.el7.x86_64

12、/lib - 系统库

包含支持位于/bin/sbin下的二进制文件的库文件.
库文件名为 ld*lib*.so.*
例如:ld-2.11.1.solibncurses.so.5.7

1
2
3
4
5
6
7
# 我自己的服务器上`/lib`目录的部分文件
java libaudit.so.1 libcrypt.so.1 libgssrpc.so.4
java-1.5.0 libaudit.so.1.0.0 libc.so.6 libgssrpc.so.4.2
java-1.6.0 libauparse.so.0 libdb-5.3.so libk5crypto.so.3
java-1.7.0 libauparse.so.0.0.0 libdb-5.so libk5crypto.so.3.1
java-1.8.0 libBrokenLocale-2.17.so libdl-2.17.so libkdb5.so.8
java-ext libBrokenLocale.so.1 libdl.so.2 libkdb5.so.8.0

13、/opt - 可选的附加应用程序

opt代表可选的。
包含从个别厂商的附加应用程序。
附加应用程序应该安装在/opt/或者/opt/的子目录下。

14、/mnt - 挂载目录

临时安装目录,系统管理员可以挂载文件系统。

15、/media - 可移动媒体设备

用于挂载可移动设备的临时目录。
举例来说,挂载CD-ROM的/media/cdrom,挂载软盘驱动器的/media/floppy;

16、/srv - 服务数据

srv代表服务。
包含服务器特定服务相关的数据。
例如,/srv/cvs包含cvs相关的数据。

附:Linux系统中与用户相关的几个目录

1
2
3
4
5
6
cd / # 定位到根目录,/表示根目录
cd ~ # 定位到当前用户的家目录,例如/home/owner
cd # 同上
cd - # 进入上次目录
cd .. # 进入上一级目录
cd . # 进入当前目录

参考: