文件系统层次标准和文件操作

文章详细介绍了遵循FHS标准的Linux文件系统的层次结构,包括根目录/、用户家目录/home、系统配置目录/etc、程序目录/usr以及设备目录/dev等。同时,文章演示了如cd、ls、cat、mkdir、rm、cp、mv等常见的Linux文件操作,并提到了文件权限设置。此外,提到了/media用于挂载可移动介质,/opt用于可选软件,/tmp存放临时文件,/var保存动态文件,以及如何处理损坏文件系统的/lost+found目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件系统层次标准和文件操作

FHS - Filesystem Hierarchy Standard - 文件系统层次标准

目录介绍

/根目录,万物起源。

/home系统默认的用户家目录。在通常的配置环境下,系统会在/home下,给每个用户分配一个目录。普通用户只能在自己的目录下写文件。

~代表当前用户的家目录。

wnyxvo@Y:~$ cd /
wnyxvo@Y:/$ ll home/
total 12
drwxr-xr-x  3 root   root   4096  36 23:24 ./
drwxr-xr-x 20 root   root   4096  36 23:22 ../
drwxr-x--- 15 wnyxvo wnyxvo 4096  37 00:19 wnyxvo/
wnyxvo@Y:/$ cd ~
wnyxvo@Y:~$

/etc这个目录包含所有系统层面的配置文件。它也包含一系列的 shell 脚本,在系统启动时,这些脚本会开启每个系统服务。

wnyxvo@Y:/$ ll etc/apt
total 44
drwxr-xr-x   8 root root  4096  36 23:29 ./
drwxr-xr-x 131 root root 12288  37 22:02 ../
drwxr-xr-x   2 root root  4096  36 23:29 apt.conf.d/
drwxr-xr-x   2 root root  4096  48  2022 auth.conf.d/
drwxr-xr-x   2 root root  4096  48  2022 keyrings/
drwxr-xr-x   2 root root  4096  48  2022 preferences.d/
-rw-rw-r--   1 root root    90  36 23:36 sources.list
drwxr-xr-x   2 root root  4096  48  2022 sources.list.d/
drwxr-xr-x   2 root root  4096  419  2022 trusted.gpg.d/
wnyxvo@Y:/$ cat /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse

/usr - Unix Software Resource。它包含普通用户所需要的所有程序和文件。

binusr/bin内容一致,使用了符号链接。

wnyxvo@Y:/$ ls
bin    dev   lib    libx32      mnt   root  snap      sys  var
boot   etc   lib32  lost+found  opt   run   srv       tmp
cdrom  home  lib64  media       proc  sbin  swapfile  usr
wnyxvo@Y:/$ ll bin
lrwxrwxrwx 1 root root 7  36 23:19 bin -> usr/bin/

which 用于查找可执行文件的位置。

在当前发行版(Ubuntu22.04)中,cd属于内置命令,不会显示。

wnyxvo@Y:/$ which ls
/usr/bin/ls
wnyxvo@Y:/$ which chmod
/usr/bin/chmod
wnyxvo@Y:/$ which cd
wnyxvo@YSYX:/$

/dev 这是一个包含设备结点的特殊目录。“一切都是文件”,也适用于设备。在这个目录里,内核维护着所有设备的列表。

/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

wnyxvo@Y:/$ cd proc
wnyxvo@Y:/proc$ ls
1     1537  1936  237   274   428   6    89             kmsg
10    1546  1943  238   275   429   60   90             kpagecgroup
100   1554  1944  2381  276   43    61   904            kpagecount
101   1559  1948  239   277   430   625  91             kpageflags
102   1560  1949  241   278   431   63   92             loadavg
1027  1570  1950  242   279   432   631  928            locks
103   1577  1962  243   28    433   64   93             mdstat
104   1598  1967  244   280   434   65   932            meminfo
105   16    1970  245   281   435   699  94             misc
106   1604  1976  246   282   436   701  95             modules
107   1611  1981  247   283   437   707  96             mounts
108   1612  1989  2478  284   44    709  97             mpt
109   1619  1994  248   285   4432  71   98             mtrr
11    1623  1996  249   286   45    711  99             net
110   1634  2     25    287   4591  712  acpi           pagetypeinfo
111   1644  20    250   288   47    732  asound         partitions
112   1654  2001  251   289   49    741  bootconfig     pressure
113   1676  2008  252   29    5     743  buddyinfo      schedstat
114   17    202   253   290   50    757  bus            scsi
115   1704  2022  254   291   5025  760  cgroups        self
116   1705  2025  255   292   5028  78   cmdline        slabinfo
117   1715  2049  256   3     5093  781  consoles       softirqs
119   1744  2053  257   3025  51    784  cpuinfo        stat
12    1761  21    258   31    5143  79   crypto         swaps
120   1768  2108  259   32    52    793  devices        sys
1208  179   2111  26    321   5219  795  diskstats      sysrq-trigger
121   1792  2112  260   322   5226  8    dma            sysvipc
126   1798  2159  261   324   526   80   driver         thread-self
13    18    2172  262   33    53    81   dynamic_debug  timer_list
1306  1805  2187  263   34    5317  815  execdomains    tty
132   1815  22    264   347   5335  82   fb             uptime
133   1816  2235  265   348   5356  83   filesystems    version
14    1877  2280  266   35    5360  833  fs             version_signature
1449  19    229   267   37    54    84   interrupts     vmallocinfo
15    1905  23    268   38    56    85   iomem          vmstat
1512  1907  230   269   387   57    852  ioports        zoneinfo
1522  1920  232   27    39    576   86   irq
1523  1924  233   270   4     577   865  kallsyms
1529  1926  234   271   40    579   87   kcore
1530  1928  235   272   414   58    879  keys
1531  1935  236   273   419   59    88   key-users

其中cpuinfo记录了CPU的信息,meminfo记录了内存的信息。

wnyxvo@Y:/proc$ cat cpuinfo
wnyxvo@Y:/proc$ cat meminfo

/root是 root 用户的家目录。普通用户无法进入,可切换到 root 用户下进入。注意 root 用户进入了 /root 目录下出现了~

wnyxvo@Y:/$ sudo passwd
[sudo] password for wnyxvo:
New password:
Retype new password:
passwd: password updated successfully
wnyxvo@Y:/$ su root
Password:
root@Y:/# cd /root
root@Y:~# ls
snap
root@Y:~# pwd
/root
root@Y:~# su wnyxvo

/boot包含 Linux 内核、初始 RAM 磁盘映像(用于启动时所需 的驱动)和启动加载程序。

/media会包含可移动介质的挂载点,例如 USB 驱动器,CD-ROMs 等等。这些介质连接到计算机之后,会自动地挂载到这个目录结点下。

/opt目录被用来安装“可选的”软件。这个主要用来存储可能安装在系统中的商业软件产品。

/tmp 用来存储由各种程序创建的临时文件的 地方。一些配置导致系统每次重新启动时,都会清空这个目 录。

/var存放的是动态文件。各种数据库,假脱机文件,用户邮件等等, 都位于在这里。

/lost+found针对ext2、ext3、ext4。当部分恢复一个损坏的文件系统时,会用到这个目录。这个目录应该是空的,除非文件系统真正的损坏了。

文件操作

touch:如果文件不存在的话,touch 命令将会创建一个 0KB 的空文件。

mkdir :创建目录。

.:当前目录。

..:当前目录的父目录(上一级目录)。

~:当前用户所在的家目录。

-:表示上一次的工作目录。

-m:指定目录权限。

rmdir :删除空目录。待删除的目录中不能有文件。

rm :remove,删除文件和目录。rm -r递归删除全部文件,慎重使用。

cp :复制文件和目录。第一个参数:原文件路径,第二个参数:目的路径。cp -r:递归复制目录。

mv:移动或重命名文件。以下选项为cpmv共享:

在这里插入图片描述

wnyxvo@YSYX:~$ cd Downloads
wnyxvo@YSYX:~/Downloads$ ls
wnyxvo@YSYX:~/Downloads$ mkdir project
wnyxvo@YSYX:~/Downloads$ ll project/
total 8
drwxrwxr-x 2 wnyxvo wnyxvo 4096  39 23:16 ./
drwxr-xr-x 3 wnyxvo wnyxvo 4096  39 23:16 ../
wnyxvo@YSYX:~/Downloads$ cd ..
wnyxvo@YSYX:~$ pwd
/home/wnyxvo
wnyxvo@YSYX:~$ cd /usr/bin
wnyxvo@YSYX:/usr/bin$ pwd
/usr/bin
wnyxvo@YSYX:/usr/bin$ cd ../..
wnyxvo@YSYX:/$ cd -
/usr/bin
wnyxvo@YSYX:/usr/bin$ cd -
/
wnyxvo@YSYX:/$ cd Downloads
-bash: cd: Downloads: No such file or directory
wnyxvo@YSYX:/$ ls
bin    dev   lib    libx32      mnt   root  snap      sys  var
boot   etc   lib32  lost+found  opt   run   srv       tmp
cdrom  home  lib64  media       proc  sbin  swapfile  usr
wnyxvo@YSYX:/$ cd ~
wnyxvo@YSYX:~$ cd Downloads
wnyxvo@YSYX:~/Downloads$ ls
project
wnyxvo@YSYX:~/Downloads$ mkdir -m 711 test
wnyxvo@YSYX:~/Downloads$ ll
total 16
drwxr-xr-x  4 wnyxvo wnyxvo 4096  39 23:23 ./
drwxr-x--- 15 wnyxvo wnyxvo 4096  37 22:18 ../
drwxrwxr-x  2 wnyxvo wnyxvo 4096  39 23:16 project/
drwx--x--x  2 wnyxvo wnyxvo 4096  39 23:23 test/
wnyxvo@YSYX:~/Downloads$ cd test
wnyxvo@YSYX:~/Downloads/test$ touch hello
wnyxvo@YSYX:~/Downloads/test$ cd -
/home/wnyxvo/Downloads
wnyxvo@YSYX:~/Downloads$ ll test/
total 8
drwx--x--x 2 wnyxvo wnyxvo 4096  39 23:26 ./
drwxr-xr-x 4 wnyxvo wnyxvo 4096  39 23:23 ../
-rw-rw-r-- 1 wnyxvo wnyxvo    0  39 23:26 hello
wnyxvo@YSYX:~/Downloads$ rmdir test/
rmdir: failed to remove 'test/': Directory not empty
wnyxvo@YSYX:~/Downloads$ cd -
/home/wnyxvo/Downloads/test
wnyxvo@YSYX:~/Downloads/test$ rm hello
wnyxvo@YSYX:~/Downloads/test$ cd -
/home/wnyxvo/Downloads
wnyxvo@YSYX:~/Downloads$ rmdir test/
wnyxvo@YSYX:~/Downloads$ ll
total 12
drwxr-xr-x  3 wnyxvo wnyxvo 4096  39 23:28 ./
drwxr-x--- 15 wnyxvo wnyxvo 4096  37 22:18 ../
drwxrwxr-x  2 wnyxvo wnyxvo 4096  39 23:16 project/
wnyxvo@YSYX:~/Downloads$ cd project
wnyxvo@YSYX:~/Downloads/project$ ll
total 8
drwxrwxr-x 2 wnyxvo wnyxvo 4096  39 23:16 ./
drwxr-xr-x 3 wnyxvo wnyxvo 4096  39 23:28 ../
wnyxvo@YSYX:~/Downloads/project$ cp ~/.bashrc ./
wnyxvo@YSYX:~/Downloads/project$ ls -a
.  ..  .bashrc
wnyxvo@YSYX:~/Downloads/project$ cp ~/.bashrc bashrc
wnyxvo@YSYX:~/Downloads/project$ ls -a
.  ..  .bashrc  bashrc
wnyxvo@YSYX:~/Downloads/project$ mkdir ../test
wnyxvo@YSYX:~/Downloads/project$ mv bashrc ../test
wnyxvo@YSYX:~/Downloads/project$ ll ../test
total 12
drwxrwxr-x 2 wnyxvo wnyxvo 4096  39 23:44 ./
drwxr-xr-x 4 wnyxvo wnyxvo 4096  39 23:43 ../
-rw-r--r-- 1 wnyxvo wnyxvo 3771  39 23:36 bashrc

参考:

  1. https://jiuqulangan.com
  2. https://billie66.github.io/TLCL
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值