`

Linux文件系统

阅读更多

 

1、Linux文件系统是从/开始的

在Linux操作系统的文件管理中,命令行模式(在控制台或终端下)的文件或目录管理,要涉及路径这一概念,这是Linux命令行操作的最基础的基础。如果我们了解了路径的概念,就可以随心所欲的进入任何目录,进行我们想的工作。

Linux 文件系统,是一个呈树形结构,是从/做为入口,/(也被称为根目录)下有子目录,比如etc、usr、lib等,在每个子目录下又有文件或子目录,这样就形成了一个树形结构,这种树形结构比较单一。而Windows文件系统呢?它引入了C盘、D盘类似的磁盘概念,使得习惯Windows操作的用户在转向Linux时,会发现Linux根本就有C盘、D盘的概念,有时甚至不知所措。

2、理解路径概念的目的

引入路径概念目的最终是找到我们所需要的目录或文件。比如我们想要编辑 file.txt 文件,我们首先要知道他存放在哪里,也就是说我们要指出他所在的位置,这时就要用到路径了。

3、路径的构成要素

路径是由目录或目录和文件名构成的。比如/etc/X11 就是一个路径,而/etc/X11/xorg.conf也是一个路径。也就是说路径可以是目录的组合,分级深入进去,也可以是文录+文件构成。比如我们想用vi编辑xorg.conf文件,在命令行下输入 vi /etc/X11/xorg.conf ,如果我们想进入/etc/X11目录,就可以通过cd /etc/X11来实现。

4、路径的分类

路径分为绝对路径和相对路径。

4.1 绝对路径

在Linux中,绝对路径是从/(也被称为根目录)开始的,比如/usr、/etc/X11。如果一个路径是从/开始的,它一定是绝对路径,这样就好理解了。

[root@localhost ~]# pwd 注:判断用户当前所处的位置,也就是说他到底位于哪?

/root 注:用户当前位于/root。

[root@localhost ~]# cd /usr/share/doc/ 注:我们以绝对路径方式进入/usr/share/doc目录下。

[root@localhost doc]# pwd 注:判断用户当前所处的位置。

/usr/share/doc 注:用户位于/usr/share/doc,看来已经达到我们的目的了。

4.2 相对路径

相对路径是以 . 或 .. 开始的,.表示用户当前操作所处的位置,而.. 表示上级目录;在路径中,.表示用户当前所处的目录,而..上级目录,要把.和..当做目录来看。

[root@localhost ~]# pwd 注:通过pwd来判断当前用户所在的位置。

/root 注:得出目录处于/root目录中。

[root@localhost ~]# cd . 注:我们进入。

[root@localhost ~]# pwd 注:判断当前用户所处的位置。

/root 注:得出在/root 目录中 。

[root@localhost ~]# cd .. 注:我们切入/root的上级目录。

[root@localhost /]# pwd 注:判断当前用户所处的位置。

/ 注:用户当前位于/(根目录)中。

5、在路径中一些特殊符号的说明

这些符号在相对路径中应用的,这些符号能为我们带来方便,所以有必要说说。

. 表示用户所处的当前目录;

.. 表示上级目录;

~ 表示当前用户自己的家目录;

~USER 表示用户名为USER的家目录,这里的USER是在/etc/passwd中存在的用户名。

5.1 符号.应用示例

通过下面的例子,让我们增强.所表示的意义。

[root@localhost ~]# pwd 注:判断用户当前所处的目录;

/root 注:位于/root目录;

[root@localhost ~]# cd . 注:进入.目录,这里的.就是用户当前所处的位置;

[root@localhost ~]# pwd 注:在哪呢;

/root 注:在/root中。

理解./的意义:

[root@localhost ~]# pwd 注:判断用户当前所处的目录;

/root 注:位于/root目录;

[root@localhost ~]# ls 注:显示用户所处/root目录的文件及子目录;也可以用ls .或[root@localhost ~]# ls .

mkuml-2004.07.17-ananas.tar.bz2 mydir openQreadme.txt sun.txt tmp upgrade.log;

[root@localhost ~]# ls ./tmp/ 查看用户所处当前目录下的tmp目录的内容;

kernelBak youdir或 [root@localhost ~]# ls tmp/;

kernelBak youdir;

[root@localhost ~]#。

在有些文档中,我们看到类似./filename 来运行一个脚本或程序的例子。其实它就是在用户当前目录下运行的;请看下面的示例;

[root@localhost ~]# pwd 注:判断用户当前所处的目录;

/root 注:位于/root目录;

[root@localhost ~]# touch lsfile.sh 注:创建一个文件名为lsfile.sh的文件;

[root@localhost ~]# chmod 755 lsfile.sh 注:修改权限让其可执行;

[root@localhost ~]# echo "ls -la"> lsfile.sh 注:向lsfile.sh文件中加入ls -la 一句指令

[root@localhost ~]# more lsfile.sh 注:用more 工具来查看lsfile.sh 文件的内容;

ls -la

[root@localhost ~]# ./lsfile.sh 注:运行lsfile.sh ,在这里用的是相对路径;

[root@localhost ~]# /root/lsfile.sh 注:这是绝对路径运行lsfile.sh 脚本。

5.2 符号..应用示例

[root@localhost ~]# pwd 注:判断用户当前所处的目录;

/root

[root@localhost ~]# cd /etc/X11/ 注:进入/目录下的etc目录下的X11目录;

[root@localhost X11]# pwd 注:判断用户当前所处的目录;

/etc/X11 注:看来用户真的位于/etc/X11目录了;

[root@localhost X11]# cd .. 注:退到上级目录;

[root@localhost etc]# pwd 注:判断用户当前所处的目录;

/etc

[root@localhost etc]# cd ../root/ 注:退到上级目录,也就是退到/,然后再进入root目录;

[root@localhost ~]# pwd 判断是不是进入/目录下的root目录?

/root 注:的确是实现了。

 

5.3 符号~和~USER示例

~表示当前操作用户的家目录,看下面的例子:

[root@localhost ~]# id 注:查看当前用户的用户信息;我们用哪个用户来操作命令的?

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) 注:看到了,是root用户;

[root@localhost ~]# finger root 注:查看root用户的信息;

Login: root Name: root

Directory: /root 注:这表示root用户的家目录位于/root目录中 Shell: /bin/bash;

[root@localhost ~]# pwd 注:判断用户所处的目录;

/root 注:是/root目录;

[root@localhost ~]# cd /etc/X11/ 注:进入/etc/X11

[root@localhost X11]# pwd 注:判断用户所处的目录;

/etc/X11 注:看来已经到了/etc/X11;

[root@localhost X11]# cd ~ 注:我们返回root用户的家目录;

[root@localhost ~]# pwd

/root 注:是不是返回了??

~USER的示例:

如果我们添加一个用户时,系统会添加一条用户纪录到/etc/passwd文件中,所以/etc/passwd 就是用户的管理文件;~USER中的USER是必须在/etc/passwd中“注册“的用户,这样在~USER中的USER才是有效的。怎么“注册“,当然是用户管理工具来添加用户了。关于用户管理工具,请参考:《Linux 用户管理工具介绍》;

为了说明~USER的应用,我们首先添加一个新用户:

[root@localhost ~]# adduser linuxsirorg 注:添加linuxsirorg这个用户;

[root@localhost ~]# passwd linuxsirorg 注;为linuxsirorg 设置密码;

Changing password for user linuxsirorg.

New UNIX password: 注:添加linuxsirorg用户密码

Retype new UNIX password: 注:再输入一次;

passwd: all authentication tokens updated successfully.注;添加用户成功;

[root@localhost ~]# finger linuxsirorg 注:查看linuxsirorg用户信息;

Login: linuxsirorg Name: (null)

Directory: /home/linuxsirorg Shell: /bin/bash

注:我们看到新添加的用户家目录在/home/linuxsirorg。

 

~USER的示例:

比如我用root用户操作,并且处于/root目录中;我想进入linuxsirorg用户的家目录;

[root@localhost ~]# pwd;

/root

[root@localhost ~]# cd ~linuxsirorg/ ;

注:进入linuxsirorg用户的家目录;其等效命令是cd /home/linuxsirorg;

[root@localhost linuxsirorg]# pwd 注:判断用户所处位置;

/home/linuxsirorg ;

[root@localhost linuxsirorg]# cd ~root 注:等同于cd /root ,或等同行cd ~ ;表示返回root的家目录。

 

6、切换用户当前目录的指令 cd

用户从一个当前目录时入另一个目录的指令就是用cd ;我们在前面示例中大量应用过,在这里不再多说了。

用法:#cd 路径

举例:

[root@localhost ~]# cd /usr/share/man/。更多的帮助,请参考 man cd 或cd --help。

7、判断用户当前所处的工作目录的指令 pwd

pwd 指令用来显示用户当前所处的位置的,前面我们也说的很多。

示例:

[root@localhost man]# pwd 注;判断用户当前所处的目录;

/usr/share/man 注:位于/usr/share/man 中.

8、关于用户环境变量PATH的设置

在一般情况下,Linux文件系统中bin或sbin目录中的文件都是可执行的。有时我们为了方便不输入路径就能调用指令或工具,这时要就要设置用户的环境变量PATH。

看下面的一例:

 

[root@localhost ~]# ls
adduml.sh lsfile.sh mkuml-2004.07.17 
mkuml-2004.07.17-ananas.tar.bz2 mydir 
openQreadme.txt sun.txt tmp upgrade.log
[root@localhost ~]# /bin/ls
adduml.sh lsfile.sh mkuml-2004.07.17
 mkuml-2004.07.17-ananas.tar.bz2 mydir openQreadme.txt sun.txt tmp upgrade.log

上面的例子,第一个指令就是直接运行了ls命令来显示当前目录下的文件和子目录;第二条/bin/ls 指令是用绝对路径的ls来运行的;这两种方式运行的结果看来是一样的。

在论坛上,有些弟兄总是我已经安装了某某软件包,却没有某个指令。其实就是环境变量设置的事。如果您直接输入某个指令不存在,解决办法有两个,一个方法是要指定用可执行文件的绝对路径(也可以是相对路径,怎么方便怎么用吧),另一个方法是设定用户的环境变量。

我们可以用export PATH来设置环境变量。比如把下面一行加入到用户家目录下的.bashrc 或.profile文件中:

 

export PATH=".:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/
bin:/usr/X11R6/bin"

解释:您可以找出Linux文件系统中所有bin或sbin目录的的绝对路径,然后把它们用:号分割,比如上面所设置的。第一个.表示用户当前所处的目录.添加好后,我们再运行一下source,也就是:

 

#source .bashrc
或
#source .profile

如果发现指令只有root权限才运行,这时您要用到su; 如果您用的是普通用户,可能无权查看一些文件的目录的内容,您也需要用到su来切换身份;请参考:《Linux 系统中的超级权限的控制》。

9、有关目录的操作指令

有关目录的操作,比如创建、复制、移动、删除,请参见:《Linux 文件和目录管理之显示、删除、复制、移动及改名》。也就是ls、mkdir、cp、mv、rmdir、rm 等工具的运用。

分享到:
评论

相关推荐

    模拟LINUX文件系统及终端

    (8)copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝。 (9)del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10)check:检测并恢复文件...

    Linux文件系统及文件管理 上机实验报告

    本次实验是关于Linux文件系统及文件管理的上机操作,旨在让学生深入理解和熟练运用Linux操作系统中的文件系统管理和文件操作。实验涵盖了文件系统的格式化、挂载与卸载,目录和文件的创建、移动、复制、删除,以及...

    C语言模拟实现Linux文件系统

    C语言模拟实现Linux文件系统 1、在内存中开辟一块空间来模拟文件系统的运行,不读写硬盘。 2、面向单用户、单任务,不考虑并发,不考虑文件属主、组等概念。 3、程序开始后,初始化并接收用户输入。若输入”enter”...

    Linux文件系统的模拟实现.pdf

    "Linux文件系统的模拟实现" Linux文件系统是操作系统的核心组件之一,负责管理存储设备上的数据组织和访问。 Linux文件系统的模拟实现是指通过软件模拟实现一个Linux文件系统,来加深对文件系统的理解。 文件系统...

    linux文件系统结构分析

    本篇将深入探讨Linux文件系统的结构,并阐述进程如何操作文件。 首先,Linux文件系统采用了一种层次式的目录结构,这种结构起始于根目录 `/`。所有其他目录和文件都是从这个根目录开始的,通过斜线 `/` 分隔的路径...

    Linux文件系统.pdf

    这篇学习资料详细介绍了Linux文件系统的一些关键概念和技术。 1. 文件系统类型 Linux支持多种文件系统类型,如EXT2、EXT3、EXT4、XFS、Btrfs、FAT、NTFS等。EXT4是目前最常用的一种,它在EXT2的基础上进行了优化,...

    linux文件系统电子书籍

    ### Linux文件系统基础知识详解 #### 一、文件系统概述 文件系统是操作系统中不可或缺的核心组成部分之一,它负责管理和组织存储设备(如硬盘、SSD等)上的数据。具体而言,文件系统定义了一套规则和数据结构,用...

    linux 文件系统源码

    Linux 文件系统源码是了解操作系统核心机制的重要组成部分,特别是对于那些想要深入理解Linux内核以及文件系统工作原理的开发者和研究者来说。在这个压缩包中,包含了一系列的源码文件,涉及到了多种不同的文件系统...

    linux文件系统.pdf

    Linux文件系统是Linux操作系统的核心组成部分,它负责管理和存储数据,为用户提供访问文件和目录的统一接口。Linux的一大特性是支持多种文件系统,包括但不限于ext、ext2、xia、minix、umsdos、msdos、vfat、proc、...

    浅析Linux文件系统管理.pdf

    本文主要探讨了在Red Hat 9.0环境下Linux文件系统的管理,包括磁盘管理的各个方面。 1. Linux 文件系统类型 Linux 支持多种文件系统,如ext2、ext3和ext4,其中Red Hat 9.0默认使用ext3文件系统。ext3是一种日志...

    模拟linux文件系统

    模拟Linux文件系统。在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的 模拟Linux文件系统 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序对此空间进行管理,以...

    Linux文件系统详解.pdf

    Linux 文件系统详解 Linux 文件系统是 Linux 操作系统的核心组件之一,负责管理和组织存储在磁盘等存储设备上的文件。Linux 文件系统的核心是树状目录结构,目录提供了管理文件的一个方便而有效的途径。Linux 使用...

    Linux文件系统目录结构的详细解说2.pdf

    Linux 文件系统目录结构的详细解说 Linux 文件系统目录结构是 Linux 操作系统的根目录结构,它是 Linux 文件系统的组织者,也是最上级的领导者。 Linux 文件系统的目录结构可以用树形结构来形象地描述。在 Linux ...

    C/C++仿真实现Linux文件系统

    用C编写的一个Unix/Linux文件系统

    Linux文件系统概念解释

    Linux文件系统概念

Global site tag (gtag.js) - Google Analytics