文件系统层次标准和文件操作
FHS - Filesystem Hierarchy Standard - 文件系统层次标准
目录介绍
/
根目录,万物起源。
/home
系统默认的用户家目录。在通常的配置环境下,系统会在/home下,给每个用户分配一个目录。普通用户只能在自己的目录下写文件。
~
代表当前用户的家目录。
wnyxvo@Y:~$ cd /
wnyxvo@Y:/$ ll home/
total 12
drwxr-xr-x 3 root root 4096 3月 6 23:24 ./
drwxr-xr-x 20 root root 4096 3月 6 23:22 ../
drwxr-x--- 15 wnyxvo wnyxvo 4096 3月 7 00:19 wnyxvo/
wnyxvo@Y:/$ cd ~
wnyxvo@Y:~$
/etc
这个目录包含所有系统层面的配置文件。它也包含一系列的 shell 脚本,在系统启动时,这些脚本会开启每个系统服务。
wnyxvo@Y:/$ ll etc/apt
total 44
drwxr-xr-x 8 root root 4096 3月 6 23:29 ./
drwxr-xr-x 131 root root 12288 3月 7 22:02 ../
drwxr-xr-x 2 root root 4096 3月 6 23:29 apt.conf.d/
drwxr-xr-x 2 root root 4096 4月 8 2022 auth.conf.d/
drwxr-xr-x 2 root root 4096 4月 8 2022 keyrings/
drwxr-xr-x 2 root root 4096 4月 8 2022 preferences.d/
-rw-rw-r-- 1 root root 90 3月 6 23:36 sources.list
drwxr-xr-x 2 root root 4096 4月 8 2022 sources.list.d/
drwxr-xr-x 2 root root 4096 4月 19 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。它包含普通用户所需要的所有程序和文件。
bin
与usr/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 3月 6 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
:移动或重命名文件。以下选项为cp
和mv
共享:
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 3月 9 23:16 ./
drwxr-xr-x 3 wnyxvo wnyxvo 4096 3月 9 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 3月 9 23:23 ./
drwxr-x--- 15 wnyxvo wnyxvo 4096 3月 7 22:18 ../
drwxrwxr-x 2 wnyxvo wnyxvo 4096 3月 9 23:16 project/
drwx--x--x 2 wnyxvo wnyxvo 4096 3月 9 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 3月 9 23:26 ./
drwxr-xr-x 4 wnyxvo wnyxvo 4096 3月 9 23:23 ../
-rw-rw-r-- 1 wnyxvo wnyxvo 0 3月 9 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 3月 9 23:28 ./
drwxr-x--- 15 wnyxvo wnyxvo 4096 3月 7 22:18 ../
drwxrwxr-x 2 wnyxvo wnyxvo 4096 3月 9 23:16 project/
wnyxvo@YSYX:~/Downloads$ cd project
wnyxvo@YSYX:~/Downloads/project$ ll
total 8
drwxrwxr-x 2 wnyxvo wnyxvo 4096 3月 9 23:16 ./
drwxr-xr-x 3 wnyxvo wnyxvo 4096 3月 9 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 3月 9 23:44 ./
drwxr-xr-x 4 wnyxvo wnyxvo 4096 3月 9 23:43 ../
-rw-r--r-- 1 wnyxvo wnyxvo 3771 3月 9 23:36 bashrc
参考:
- https://jiuqulangan.com
- https://billie66.github.io/TLCL