Linux学习笔记(一)—Linux文件和目录
一. Linux文件和目录
一切皆文件
Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,目录(Windows 下称为文件夹)是文件,硬件设施(键盘、监视器、硬盘、打印机)是文件,就连套接字(socket)、网络通信等资源也都是文件。
Linux系统中,文件具体可分为以下几种类型:
1) 普通文件
相似 mp4、pdf、html 这样,可直接拿来使用的文件都属于普通文件,Linux 客户根据访问权限的不同可以对这些文件进行查看、删除以及更改操作。
2) 目录文件
对于用惯 Windows 系统的客户来说,目录是文件可能不太好了解。
Linux 系统中,目录文件包含了此目录中各个文件的文件名以及指向这些文件的指针,打开目录等同于打开目录文件,只需你有权限,可以随便访问目录中的任何文件。
注意,目录文件的访问权限,同普通文件的执行权限,是一个意思。
3) 字符设施文件和块设施文件
这些文件通常隐藏在 /dev/ 目录下,当进行设施读取或者外设交互时才会被使用。
例如,磁盘光驱属于块设施文件,串口设施则属于字符设施文件。
Linux 系统中的所有设施,要么是块设施文件,要么是字符设施文件。
4) 套接字文件(socket)
套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信。
5) 符号链接文件(symbolic link)
相似与 Windows 中的快捷方式,是指向另一文件的简介指针(也就是软链接)。
6) 管道文件(pipe)
主要用于进程间通信。例如,使用 mkfifo 命令创立一个 FIFO 文件,与此同时,启用进程 A 从 FIFO文件读数据,启用进程 B 从 FIFO文件中写数据,随写随读。
在文件系统中,有两个特殊的目录,一个是客户所在的工作目录,即当前目录,可用一个点“.”表示;另一个是当前目录的上一层目录,也叫父目录,用两个点“..”表示。
表 1 Linux一级目录及其作用
| 一级目录 | 功能(作用) |
|---|---|
| /bin/ | 存放系统命令,普通客户和 root 都可以执行。放在 /bin 下的命令在单客户模式下也可以执行 |
| /boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
| /dev/ | 设施文件保存位置 |
| /etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件一律保存在此目录中,如客户信息、服务的启动脚本、常用服务的配置文件等 |
| /home/ | 普通客户的主目录(也称为家目录)。在创立客户时,每个客户要有一个默认登录和保存自己数据的位置,就是客户的主目录,所有普通客户的主目录是在 /home/ 下建立一个和客户名相同的目录。如客户 liming 的主目录就是 /home/liming |
| /lib/ | 系统调用的函数库保存位置 |
| /media/ | 挂载目录。系统建议用来挂载媒体设施,如软盘和光盘 |
| /mnt/ | 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设施,如 U 盘、移动硬盘和其余操作系统的分区 |
| /misc/ | 挂载目录。系统建议用来挂载 NFS 服务的共享目录。尽管系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是究竟在哪个目录中挂载什么设施可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设施的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的 |
| /opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其余软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件 |
| /root/ | root 的主目录。普通客户主目录在 /home/ 下,root 主目录直接在“/”下 |
| /sbin/ | 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通客户查看 |
| /srv/ | 服务数据目录。少量系统服务启动之后,可以在这个目录中保存所需要的数据 |
| /tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有客户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
Linux /usr目录
usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据正当的放置在 /usr 目录下的各子目录中,而不是为他们的产品创立单独的目录。
Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录相似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。
FHS 建议,/usr 目录应具有表 3 所示的子目录。
表 3 /usr 子目录及其功能
| 子目录 | 功能(作用) |
|---|---|
| /usr/bin/ | 存放系统命令,普通客户和超级客户都可以执行。这些命令和系统启动无关,在单客户模式下不能执行 |
| /usr/sbin/ | 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。 |
| /usr/lib/ | 应用程序调用的函数库保存位置 |
| /usr/XllR6/ | 图形界面系统保存位置 |
| /usr/local/ | 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置 |
| /usr/share/ | 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录 |
| /usr/src/ | 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中 |
| /usr/include | C/C++ 等编程语言头文件的放置目录 |
Linux /var 目录
/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。
<caption>表 4 /var子目录及其功能</caption>
| /var子目录 | 功能(作用) |
|---|---|
| /var/lib/ | 程序运行中需要调用或者改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中 |
| /var/log/ | 登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。 |
| /var/run/ | 少量服务和程序运行后,它们的 PID(进程 ID)保存位置 |
| /var/spool/ | 里面主要都是少量临时存放,随时会被客户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。 |
| /var/www/ | RPM 包安装的 Apache 的网页主目录 |
| /var/nis和/var/yp | NIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录 |
| /var/tmp | 少量应用程序在安装或者执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除 |
Linux命令行下如何识别文件类型?
通过 ls -l 命令,我们即可以查看当前目录下所有文件和目录各自的属性,如图 3 所示。
查看属性
图 3 显示的执行结构中,每行代表一个文件或者目录,其中第一个字符表示的就是文件的类型,其可能的取值以及表示的文件类型,如表 4 所示。
表 4 不同字符对应的文件类型
| 第一个字符 | 文件类型 |
|---|---|
| – | 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。 |
| d | 目录,相似 Windows 系统中的文件夹。 |
| b | 块设施文件,就是保存大块数据的设施,比方最常见的硬盘。 |
| c | 字符设施文件,例如键盘、鼠标等。 |
| s | 套接字文件,通常用在网络数据连接,可以启动一个程序开监听客户的要求,客户可以通过套接字进行数据通信。 |
| p | 管道文件,其主要作用是处理多个程序同时存取一个文件所造成的错误。 |
| l | 链接文件,相似 Windows 系统中的快捷方式。 |
命令的基本格式
接下来看看 Linux 命令的基本格式:
[root@localhost ~]# 命令[选项][参数]
使用 env 命令来查看到 Linux 系统中所有的环境变量,执行命令如下:
[root@localhost ~]# env
表 1 Linux系统中重要的10个环境变量
| 环境变量名称 | 作用 |
|---|---|
| HOME | 客户的主目录(也称家目录) |
| SHELL | 客户使用的 Shell 解释器名称 |
| PATH | 定义命令行解释器搜索客户执行命令的路径 |
| EDITOR | 客户默认的文本解释器 |
| RANDOM | 生成一个随机数字 |
| LANG | 系统语言、语系名称 |
| HISTSIZE | 输出的历史命令记录条数 |
| HISTFILESIZE | 保存的历史命令记录条数 |
| PS1 | Bash解释器的提醒符 |
| 邮件保存路径 |
可以使用 export 命令将其提升为全局环境变量,这样其余客户即可以使用它了:
[root@localhost ~]# mkdir /home/work1
[root@localhost ~]# WORKDIR=/home/work1
[root@localhost work1]# export WORKDIR
参考链接:
Linux文件和目录管理
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Linux学习笔记(一)—Linux文件和目录