-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path10.html
More file actions
278 lines (278 loc) · 21.4 KB
/
Copy path10.html
File metadata and controls
278 lines (278 loc) · 21.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="CodeClub - Linux 文件与目录管理" />
<meta name="author" content="Jackson" />
<title>Linux 文件与目录管理 - CodeClub</title>
<link rel="icon" type="image/x-icon" href="../../img/logo.png" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"
rel="stylesheet"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
crossorigin="anonymous"
referrerpolicy="no-referrer"
/>
<link rel="stylesheet" href="../../css/main.css" />
<link rel="stylesheet" href="../../css/dark-mode.css" />
<link rel="stylesheet" href="../../css/mobile-optimizations.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.0/marked.min.js"></script>
<style>
.tutorial-page {
max-width: 1200px;
margin: 70px auto 40px;
padding: 0 20px;
display: flex;
gap: 20px;
}
.tutorial-sidebar {
width: 240px;
flex-shrink: 0;
position: sticky;
top: 70px;
max-height: calc(100vh - 90px);
overflow-y: auto;
background: var(--bg-secondary, #fff);
border-radius: 8px;
padding: 16px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.tutorial-sidebar h3 {
font-size: 15px;
margin: 0 0 12px;
color: var(--text-primary, #1a1a2e);
padding-bottom: 8px;
border-bottom: 2px solid var(--primary, #3b82f6);
}
.tutorial-sidebar a {
display: block;
padding: 5px 8px;
color: var(--text-secondary, #666);
text-decoration: none;
font-size: 13px;
border-radius: 4px;
line-height: 1.4;
}
.tutorial-sidebar a:hover {
background: var(--primary, #3b82f6);
color: #fff;
}
.tutorial-sidebar a.active {
background: var(--primary, #3b82f6);
color: #fff;
font-weight: 600;
}
.tutorial-main {
flex: 1;
min-width: 0;
}
.tutorial-article {
background: var(--bg-secondary, #fff);
border-radius: 8px;
padding: 32px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.tutorial-article h1 {
font-size: 26px;
margin-bottom: 16px;
color: var(--text-primary, #1a1a2e);
border-bottom: 2px solid var(--primary, #3b82f6);
padding-bottom: 12px;
}
.markdown-body {
font-size: 15px;
line-height: 1.8;
color: var(--text-secondary, #333);
}
.markdown-body h1 {
font-size: 24px;
border-bottom: 1px solid var(--border, #e5e7eb);
padding-bottom: 8px;
}
.markdown-body h2 {
font-size: 20px;
border-bottom: 1px solid var(--border, #e5e7eb);
padding-bottom: 6px;
}
.markdown-body h3 {
font-size: 17px;
}
.markdown-body pre {
background: #1e1e2e;
color: #cdd6f4;
padding: 16px;
border-radius: 8px;
overflow-x: auto;
}
.markdown-body code {
font-family: 'Fira Code', 'Cascadia Code', monospace;
font-size: 14px;
}
.markdown-body p code {
background: #f1f5f9;
padding: 2px 6px;
border-radius: 4px;
color: #e83e8c;
}
.markdown-body blockquote {
border-left: 4px solid var(--primary, #3b82f6);
padding: 12px 20px;
margin: 16px 0;
background: #f8fafc;
border-radius: 0 8px 8px 0;
}
.markdown-body img {
max-width: 100%;
border-radius: 8px;
}
.markdown-body table {
border-collapse: collapse;
width: 100%;
margin: 16px 0;
}
.markdown-body table th,
.markdown-body table td {
border: 1px solid var(--border, #e5e7eb);
padding: 8px 12px;
text-align: left;
}
.markdown-body table th {
background: var(--bg-primary, #f8fafc);
font-weight: 600;
}
.markdown-body table tr:nth-child(2n) {
background: var(--bg-primary, #f8fafc);
}
.markdown-body ul,
.markdown-body ol {
padding-left: 24px;
margin: 12px 0;
}
.markdown-body li {
margin: 4px 0;
}
.markdown-body hr {
border: none;
border-top: 1px solid var(--border, #e5e7eb);
margin: 24px 0;
}
.markdown-body a {
color: var(--primary, #3b82f6);
text-decoration: none;
}
.markdown-body a:hover {
text-decoration: underline;
}
.page-navigation {
display: flex;
justify-content: space-between;
margin-top: 24px;
padding-top: 16px;
border-top: 1px solid var(--border, #e5e7eb);
}
.page-nav-link {
color: var(--primary, #3b82f6);
text-decoration: none;
font-weight: 500;
font-size: 14px;
}
.page-nav-link:hover {
text-decoration: underline;
}
.source-link {
margin-top: 16px;
font-size: 13px;
color: var(--text-secondary, #999);
}
.source-link a {
color: var(--primary, #3b82f6);
}
@media (max-width: 768px) {
.tutorial-page {
flex-direction: column;
}
.tutorial-sidebar {
width: 100%;
position: static;
max-height: 200px;
}
}
</style>
</head>
<body>
<nav class="navbar">
<div class="navbar-container">
<a class="navbar-brand" href="../../index.html">
<img src="../../img/logo.png" alt="CodeClub" width="32" height="32" />
<span>CodeClub</span>
</a>
<button class="mobile-menu-toggle" aria-label="切换导航菜单"><span></span><span></span><span></span></button>
<ul class="navbar-nav">
<li><a class="nav-link" href="../../index.html">首页</a></li>
<li><a class="nav-link" href="../../nav.html">网址导航</a></li>
<li><a class="nav-link" href="../../blog/">博客</a></li>
<li><a class="nav-link" href="../../wiki/index.html" target="_blank">WiKi</a></li>
<li><a class="nav-link active" href="../index.html">教程</a></li>
<li><a class="nav-link" href="../../book.html">图书</a></li>
<li><a class="nav-link" href="../../contact.html">联系我</a></li>
<li><a class="nav-link" href="../../about.html">关于我</a></li>
</ul>
</div>
</nav>
<div class="tutorial-page">
<div class="tutorial-sidebar">
<h3>📖 Shell</h3>
<a href="0.html">Linux</a>
<a href="1.html">Linux 简介</a>
<a href="2.html">Linux 安装</a>
<a href="3.html">Linux 云服务器</a>
<a href="4.html">WSL 安装 Linux</a>
<a href="5.html">Linux 系统启动过程</a>
<a href="6.html">Linux 系统目录结构</a>
<a href="7.html">Linux 忘记密码解决方法</a>
<a href="8.html">Linux 远程登录</a>
<a href="9.html">Linux 文件基本属性</a>
<a href="10.html" class="active">Linux 文件与目录管理</a>
<a href="11.html">Linux 用户和用户组管理</a>
<a href="12.html">Linux 磁盘管理</a>
<a href="13.html">Linux vi/vim</a>
<a href="14.html">linux yum 命令</a>
<a href="15.html">Linux apt 命令</a>
<a href="16.html">Shell 教程</a>
<a href="17.html">Shell 变量</a>
<a href="18.html">Shell echo 命令</a>
<a href="19.html">Shell test 命令</a>
<a href="20.html">Shell 流程控制</a>
<a href="21.html">Shell 函数</a>
<a href="22.html">Linux 命令大全</a>
<a href="23.html">Nginx 安装配置</a>
<a href="24.html">MySQL 安装配置</a>
</div>
<div class="tutorial-main">
<div class="tutorial-article">
<div class="markdown-body" id="md-content"></div>
<div class="page-navigation">
<a href="9.html" class="page-nav-link">← Linux 文件基本属性</a>
<a href="11.html" class="page-nav-link">Linux 用户和用户组管理 →</a>
</div>
<div class="source-link">原文来源:<a href="https://www.runoob.com" target="_blank">菜鸟教程</a></div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer-content"><p>© 2024 CodeClub. All rights reserved.</p></div>
</footer>
<script src="../../js/dark-mode.js"></script>
<script src="../../js/mobile-menu.js"></script>
<script>
const md = `# Linux 文件与目录管理\n\n我们知道 Linux 的目录结构为树状结构,最顶级的目录为根目录 /。\n\n\n其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。\n\n\n在开始本教程前我们需要先知道什么是绝对路径与相对路径。\n\n\n\n- **\n绝对路径:**\n路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。\n\n\n\n- **\n相对路径:**\n路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。\n\n\n\n\n---\n\n\n## 处理目录的常用命令\n\n接下来我们就来看几个常见的处理目录的命令吧:\n\n\n\n\n \n- ls(英文全拼:list files): 列出目录及文件名\n \n- cd(英文全拼:change directory):切换目录\n \n- pwd(英文全拼:print work directory):显示目前的目录\n \n- mkdir(英文全拼:make directory):创建一个新的目录\n \n- rmdir(英文全拼:remove directory):删除一个空的目录\n \n- cp(英文全拼:copy file): 复制文件或目录\n \n- rm(英文全拼:remove): 删除文件或目录\n \n- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称\n \n\n你可以使用 *man [命令]* 来查看各个命令的使用文档,如 :man cp。\n\n\n\n### ls (列出目录)\n\n在Linux系统当中, ls 命令可能是最常被运行的。\n\n\n语法:\n\n\n\n\`\`\`\n\n[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称\n[root@www ~]# ls [--color={never,auto,always}] 目录名称\n[root@www ~]# ls [--full-time] 目录名称\n\n\`\`\`\n\n选项与参数:\n\n\n\n- -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)\n- \n-d :仅列出目录本身,而不是列出目录内的文件数据(常用)\n- \n-l :长数据串列出,包含文件的属性与权限等等数据;(常用)\n\n\n将目录下的所有文件列出来(含属性与隐藏档)\n\n\n\n\`\`\`\n\n[root@www ~]# ls -al ~\n\n\`\`\`\n\n\n### cd (切换目录)\n\ncd是Change Directory的缩写,这是用来变换工作目录的命令。\n\n\n语法:\n\n\n\n\`\`\`\n\n cd [相对路径或绝对路径]\n\n\`\`\`\n\n\n\`\`\`\n\n#使用 mkdir 命令创建 runoob 目录\n[root@www ~]# mkdir runoob\n\n#使用绝对路径切换到 runoob 目录\n[root@www ~]# cd /root/runoob/\n\n#使用相对路径切换到 runoob 目录\n[root@www ~]# cd ./runoob/\n\n# 表示回到自己的家目录,亦即是 /root 这个目录\n[root@www runoob]# cd ~\n\n# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;\n[root@www ~]# cd ..\n\n\`\`\`\n\n接下来大家多操作几次应该就可以很好的理解 cd 命令的。\n\n\n\n\n### pwd (显示目前所在的目录)\n\npwd 是 **Print Working Directory** 的缩写,也就是显示目前所在目录的命令。\n\n\n\n\`\`\`\n\n[root@www ~]# pwd [-P]\n\`\`\`\n\n\n选项与参数:\n\n\n\n- \n-P :显示出确实的路径,而非使用链接 (link) 路径。\n\n\n实例:单纯显示出目前的工作目录:\n\n\n\n\`\`\`\n[root@www ~]# pwd\n/root spool/mail\n# 看到这里应该知道为啥了吧?因为 /var/mail 是链接档,链接到 /var/spool/mail \n# 所以,加上 pwd -P 的选项后,会不以链接档的数据显示,而是显示正确的完整路径啊!\n\n\`\`\`\n\n\n### mkdir (创建新目录)\n\n如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。\n\n\n语法:\n\n\n\n\`\`\`\n\nmkdir [-mp] 目录名称\n\n\`\`\`\n\n\n选项与参数:\n\n\n\n- \n-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~\n- \n-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!\n\n\n实例:请到/tmp底下尝试创建数个新目录看看:\n\n\n\n\`\`\`\n\n[root@www ~]# cd /tmp\n[root@www tmp]# mkdir test \n\n\n### rmdir (删除空的目录)\n\n语法:\n\n\n\n\`\`\`\n\n rmdir [-p] 目录名称\n\n\`\`\`\n\n\n 选项与参数:\n\n- \n**-p :**从该目录起,一次删除多级空目录\n\n\n删除 runoob 目录\n\n\n\n\`\`\`\n\n[root@www tmp]# rmdir runoob/\n\n\`\`\`\n\n将 mkdir 实例中创建的目录(/tmp 底下)删除掉!\n\n\n\n\`\`\`\n\n[root@www tmp]# ls -l\n \n \n\n \n \n [ Linux 用户和用户组管理](http://www.runoob.com/linux/linux-user-manage.html)\n \n\n \n \n \n \n \n\n\n\n\n\n \n## \n \n \n \n 2 篇笔记\n 写笔记\n\n\n\n\n\n \n\n #0 lqd052\n\n 172***2008@qq.com\n\n [ 参考地址](https://www.cnblogs.com/liujiaq/p/5850471.html)\n\n 1491\n### 1.Linux 链接概念\n\nLinux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。\n\n\n**硬连接**\n\n\n硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。\n\n\n\n硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。\n\n\n**软连接**\n\n\n另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。\n\n\n\n### 2.通过实验加深理解\n\n\n\`\`\`\n\n[oracle@Linux]$ touch f1 #创建一个测试文件f1\n[oracle@Linux]$ ln f1 f2 #创建f1的一个硬连接文件f2\n[oracle@Linux]$ ln -s f1 f3 #创建f1的一个符号连接文件f3\n[oracle@Linux]$ ls -li # -i参数显示文件的inode节点信息\ntotal 0\n9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f1\n9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f2\n9797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 f3 -> f1\n\n\`\`\`\n\n从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 9797648,然而符号连接文件的 inode 节点不同。\n\n\n\n\n\`\`\`\n[oracle@Linux]$ echo "I am f1 file" >>f1\n[oracle@Linux]$ cat f1\nI am f1 file\n[oracle@Linux]$ cat f2\nI am f1 file\n[oracle@Linux]$ cat f3\nI am f1 file\n[oracle@Linux]$ rm -f f1\n[oracle@Linux]$ cat f2\nI am f1 file\n[oracle@Linux]$ cat f3\ncat: f3: No such file or directory\n\`\`\`\n\n\n通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f3 文件无效\n\n\n\n\n### 3.总结\n\n\n依此您可以做一些相关的测试,可以得到以下全部结论:\n\n\n\n- \n1).删除符号连接f3,对f1,f2无影响;\n- \n2).删除硬连接f2,对f1,f3也无影响;\n- \n3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;\n- \n4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。\n\n\n[lqd052](https://www.runoob.com/note/29134) lqd052\n\n 172***2008@qq.com\n\n [ 参考地址](https://www.cnblogs.com/liujiaq/p/5850471.html)\n\n8年前 (2018-07-04)\n#0 dd\n\n 245***990@qq.com\n\n 34简单通俗的说:\n\n硬链接是同一个文件的同一个索引点的不同名字,删除其中几个不受影响。\n\n软连接类似于快捷方式,被链接文件丢失,导致链接失效,但链接任然存在。\n\n[dd](https://www.runoob.comjavascript:;) dd\n\n 245***990@qq.com\n\n11个月前 (05-23)\n \n\n \n \n\n \n \n \n### 点我分享笔记\n\n \n \n \n \n \n \n [取消](https://www.runoob.comjavascript:;)\n\n\n \n \n \n \n \n \n\n\n 分享笔记\n \n \n \n \n \n \n\n 昵称昵称 (必填)\n 邮箱邮箱 (必填)\n 引用地址引用地址\n \n\n \n \n \n \n\n \n \n\n\n\n\n\n\n\n\n\n \n\n \n\n\n\n\n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n 在线实例\n\n\n ·[HTML 实例](https://www.runoob.com/html/html-examples.html)\n\n\n ·[CSS 实例](https://www.runoob.com/css/css-examples.html)\n\n\n ·[JavaScript 实例](https://www.runoob.com/js/js-examples.html)\n\n\n ·[Ajax 实例](https://www.runoob.com/ajx/ajax-examples.html)\n\n\n ·[jQuery 实例](https://www.runoob.com/jquery/jquery-examples.html)\n\n\n ·[XML 实例](https://www.runoob.com/xml/xml-examples.html)\n\n\n ·[Java 实例](https://www.runoob.com/java/java-examples.html)\n\n\n\n\n\n 字符集&工具\n\n\n · [HTML 字符集设置](https://www.runoob.com/charsets/html-charsets.html)\n\n\n · [HTML ASCII 字符集](https://www.runoob.com/tags/html-ascii.html)\n\n\n · [JS 混淆/加密](https://www.jyshare.com/front-end/6939/)\n\n\n · [PNG/JPEG 图片压缩](https://www.jyshare.com/front-end/6232/)\n\n\n · [HTML 拾色器](https://www.runoob.com/tags/html-colorpicker.html)\n\n\n · [JSON 格式化工具](https://www.jyshare.com/front-end/53)\n\n\n · [随机数生成器](https://www.jyshare.com/front-end/6680/)\n\n\n\n\n 最新更新\n\n\n ·\n [\n OpenCode 自定义... ](http://www.runoob.com/opencode/opencode-custom-tools.html)\n\n\n ·\n [\n OpenCode Skills ](http://www.runoob.com/opencode/opencode-skills.html)\n\n\n ·\n [\n OpenCode MCP 服... ](http://www.runoob.com/opencode/opencode-mcp.html)\n\n\n ·\n [\n OpenCode LSP 服... ](http://www.runoob.com/opencode/opencode-lsp.html)\n\n\n ·\n [\n OpenCode 权限配置 ](http://www.runoob.com/opencode/opencode-permissions.html)\n\n\n ·\n [\n OpenCode 格式化... ](http://www.runoob.com/opencode/opencode-formatter.html)\n\n\n ·\n [\n OpenCode 自定义... ](http://www.runoob.com/opencode/opencode-commands.html)\n\n\n\n\n 站点信息\n\n\n ·\n [意见反馈](https://www.runoob.commailto:admin@runoob.com)\n\n\n ·\n [免责声明](https://www.runoob.com/disclaimer)\n\n\n ·\n [关于我们](https://www.runoob.com/aboutus)\n\n\n ·\n [文章归档](https://www.runoob.com/archives)\n\n\n\n\n\n\n\n **关注微信**\n\n\n\n \n\n\n\n\n\n\n Copyright © 2013-2026 **[菜鸟教程](https://www.runoob.com//www.runoob.com/)** \n **[runoob.com](https://www.runoob.com//www.runoob.com/)** All Rights Reserved. 备案号:[闽ICP备15012807号-1](https://beian.miit.gov.cn/)\n\n\n\n [ ](https://www.runoob.comjavascript:void(0))\n [](https://www.runoob.comjavascript:void(0))\n [](https://www.runoob.comjavascript:void(0))\n\n\n\n#### 微信关注\n\n `;
document.getElementById('md-content').innerHTML = marked.parse(md);
</script>
</body>
</html>