Linux目录和文件管理:pwd、cd、ls、alias、du(上)

简介: 目录和文件管理由于 Linux 系统免费开源,使得 Linux 发行版本有很多,利用 Linux 开发产品的团队也有很多,如果任由每个人都按照自己的想法来配置 Linux 系统文件目录,后期可能会产生诸多的管理问题。试想,如果你进入一家公司,所用 Linux 系统的文件目录结构与所学的完全不同,实在令人头疼。为了避免诸多使用者对 Linux 系统目录结构天马行空,Linux 基金会发布了 FHS 标准。多数 Linux 发行版系统都遵循这一标准。

目录和文件管理


由于 Linux 系统免费开源,使得 Linux 发行版本有很多,利用 Linux 开发产品的团队也有很多,如果任由每个人都按照自己的想法来配置 Linux 系统文件目录,后期可能会产生诸多的管理问题。试想,如果你进入一家公司,所用 Linux 系统的文件目录结构与所学的完全不同,实在令人头疼。

为了避免诸多使用者对 Linux 系统目录结构天马行空,Linux 基金会发布了 FHS 标准。多数 Linux 发行版系统都遵循这一标准。

  • FHS 标准

FHS(Filesystem Hierarchy Standard),文件系统层次化标准,该标准规定了 Linux 系统中所有一级目录以及部分二级目录的用途。发布此标准的主要目的就是为了让用户清楚地了解每个目录应该存放什么类型的文件。

FHS 认为,Linux 系统的根目录(/)最为重要(没有之一),其原因有以下 2 点:

(1) 所有目录都是由根目录衍生出来的;

(2) 根目录与系统的开机、修复、还原密切相关;

因此,根目录必须包含开机软件、核心文件、开机所需程序、函数库、修复系统程序等文件,如表 1 所示。


1.目录层次

1.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/ 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空


1.2 常见非一级目录

1.2.1 Linux /usr目录

usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。

Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。

子目录 功能(作用)
/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++ 等编程语言头文件的放置目录


1.2.2 Linux /var 目录

/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。

/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 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除


  • 根(/)相当于一个入口,文件的总入口,也是唯一入口
  • bin (sbin) 二进制文件,可执行文件,也可能存在别处,默认使用较多所有用户软连接文件
  • sbin 管理员可使用的二进制文件
  • boot 系统内核、启动文件
  • dev 硬件文件(黄色)
  • etc 配置文件等同于windows 注册表,一般都是文本文件
  • run 运行的内存中文件
  • tmp 临时文件 -t
  • usr应用程序和操作系统相关的文件
  • var日志文件,数据变化的
  • home 普通用户的家目录的上级目录zhangsan目录会在 home
  • root系统管理员的目录上 /root
  • lib 动态库文件 类似于windows 的dll文件
  • proc 主要保存系统的内核、进程、外部设备状态和网络状态等
  • media 可移动设备
  • mnt 默认挂载点
  • opt 第三方应用程序安装所在目录程序

网络异常,图片无法展示
|


2 文件类型

2.1 七类常见的linux的文件

  1. d 目录文件directory
  2. b 块设备文件block 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
  3. c 字符设备character 这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用; 一个字符一个字符读取 /dev/zero (/dev/null)
  4. l 符号链接文件link
  5. p 管道文件pipe 主要用于进程间通信单向传输, 一个只读、另一个只写 ,其主要作用是解决多个程序同时存取一个文件所造成的错误。
  6. s 套接字文件socket 套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信。(可以双向)
  7. -普通文件 普通文件,包括纯文本文件、二进制文件、各种压缩文件等
第一个字符 文件类型
- 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
d 目录,类似 Windows 系统中的文件夹。
b 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
c 字符设备文件,例如键盘、鼠标等。
s 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。
p 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
l 链接文件,类似 Windows 系统中的快捷方式。


注意:

file命令可以识别文件类型,文件后缀无法判断文件类型。

2.2 颜色表示的文件类型

  • 黑色 普通文件
  • 绿色 可执行文件
  • 黄色 块设备文件
  • 红色 压缩包
  • 蓝色 文件夹
  • 天蓝色 链接文件(快捷方式)
[root@localhost ~]# vim /etc/DIR_COLORS   //颜色在这里显示
复制代码


3 查看、切换、显示、统计目录或文件

3.1 pwd(print work directory) 打印当前目录

示例:

[root@localhost ~]# pwd       //显示当前路径
/root
[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 8月   6 20:57 /bin -> usr/bin
[root@localhost bin]# pwd -P   //显示真实路径
/usr/bin
复制代码


3.2 cd(change directory)切换目录

命令格式:

cd 目标位置

命令 效果
cd 或 cd ~ 若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd - 到前一次目录
一个点号“.”开头 表示以当前的工作目录作为起点
两个点号“..”开头 表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头 表示以指定用户的宿主目录(家目录)作为起点
"."开头文件 表示隐藏文件


示例:

[root@localhost ~]# cd /etc/    //切换到/etc目录
[root@localhost etc]# 
[root@localhost etc]# cd        //切换到当前用户家目录
[root@localhost ~]# 
[root@localhost ~]# cd  ~       //切换到当前用户家目录
[root@localhost ~]# 
复制代码


相关文章
|
4天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
22 3
|
9天前
|
存储 Linux Windows
linux常用目录
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一版该目录名是以用户的账号命名的。 /root 该目录为系统管理员,也称为超级权限者的用户主目录。 /lib 系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /etc 所有的系统管理所需要的配置文件和子目录。 /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。 /bo
24 2
|
8天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
21 4
|
4月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
|
5月前
|
存储 Unix Linux
深入解析Linux命令:pwd
`pwd`命令在Linux中显示当前工作目录。它默认显示逻辑路径,含符号链接,但用`-P`参数可显示物理路径。在脚本中,`pwd`能确定脚本执行目录,常用于路径操作。注意事项包括:脚本中直接调用`pwd`获取目录,理解符号链接处理,以及考虑命令的跨平台兼容性。了解这些能提升系统管理和脚本编写效率。
|
6月前
|
Linux Shell
Linux命令之pwd
linux命令之pwd
115 2
|
Linux
初学[linux]基础命令“ls,cd,pwd,mkdir“
初学[linux]基础命令“ls,cd,pwd,mkdir“
124 1
|
11月前
|
SQL Linux Ruby
linux(十)目录相关命令ll、pwd、cd(2)
这里有两种情况需要做一下区分: 1):逗号相隔的字符串 ruby 复制代码
70 0
|
11月前
|
SQL Linux Shell
linux(十)目录相关命令ll、pwd、cd(1)
Linux的常用基本命令,大概先了解下他目录相关的命令,linux的目录其实就是windows下的文件夹,文件夹,是windows系统引入的一个概念。这个大概了解一下。
58 0
|
Ubuntu Linux Shell
linux第三课:目录文档操作命令(内含绝对/相对路径+1.pwd+2.cd+3.mkdir(创建目录)+4. rmdir(删除目录)+5. ls+6. cp+7.rm+8cat+9touch命令)
linux第三课:目录文档操作命令(内含绝对/相对路径+1.pwd+2.cd+3.mkdir(创建目录)+4. rmdir(删除目录)+5. ls+6. cp+7.rm+8cat+9touch命令)
222 0
linux第三课:目录文档操作命令(内含绝对/相对路径+1.pwd+2.cd+3.mkdir(创建目录)+4. rmdir(删除目录)+5. ls+6. cp+7.rm+8cat+9touch命令)