@@ -10,27 +10,38 @@ tags:
1010
1111# Linux 文件目录管理
1212
13- > 关键词:` cd ` , ` ls ` , ` pwd ` , ` mkdir ` , ` rmdir ` , ` tree ` , ` cp ` , ` mv ` , ` rm `
13+ > 关键词:` cd ` , ` ls ` , ` pwd ` , ` mkdir ` , ` rmdir ` , ` tree ` , ` touch ` , ` ln ` , ` rename ` , ` stat ` , ` file ` , ` chmod ` , ` chown ` , ` cp ` , ` mv ` , ` rm `
1414
1515<!-- TOC depthFrom:2 depthTo:3 -->
1616
17- - [ Linux 文件目录管理要点 ] ( #linux-文件目录管理要点 )
17+ - [ Linux 文件目录工作机制 ] ( #linux-文件目录工作机制 )
1818 - [ Linux 目录结构] ( #linux-目录结构 )
1919 - [ Linux 文件属性] ( #linux-文件属性 )
20- - [ 命令概述] ( #命令概述 )
21- - [ 切换目录 - cd] ( #切换目录---cd )
22- - [ 显示目录信息 - ls] ( #显示目录信息---ls )
23- - [ 显示当前目录的绝对路径 - pwd] ( #显示当前目录的绝对路径---pwd )
24- - [ 创建目录 - mkdir] ( #创建目录---mkdir )
25- - [ 删除空目录 - rmdir] ( #删除空目录---rmdir )
26- - [ 树状显示目录的内容 - tree] ( #树状显示目录的内容---tree )
27- - [ 复制文件或目录 - cp] ( #复制文件或目录---cp )
28- - [ 移动文件或目录 - mv] ( #移动文件或目录---mv )
29- - [ 删除文件或目录 - rm] ( #删除文件或目录---rm )
20+ - [ Linux 文件目录管理要点] ( #linux-文件目录管理要点 )
21+ - [ 目录管理] ( #目录管理 )
22+ - [ 文件管理] ( #文件管理 )
23+ - [ 文件和目录通用管理] ( #文件和目录通用管理 )
24+ - [ 命令常见用法] ( #命令常见用法 )
25+ - [ cd] ( #cd )
26+ - [ ls] ( #ls )
27+ - [ pwd] ( #pwd )
28+ - [ mkdir] ( #mkdir )
29+ - [ rmdir] ( #rmdir )
30+ - [ tree] ( #tree )
31+ - [ touch] ( #touch )
32+ - [ ln] ( #ln )
33+ - [ rename] ( #rename )
34+ - [ stat] ( #stat )
35+ - [ file] ( #file )
36+ - [ chmod] ( #chmod )
37+ - [ chown] ( #chown )
38+ - [ cp] ( #cp )
39+ - [ mv] ( #mv )
40+ - [ rm] ( #rm )
3041
3142<!-- /TOC -->
3243
33- ## Linux 文件目录管理要点
44+ ## Linux 文件目录工作机制
3445
3546### Linux 目录结构
3647
@@ -90,9 +101,36 @@ dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
90101- 因此,Linux 系统按文件拥有者、文件拥有者同组用户和其他用户来规定了不同的文件访问权限。
91102- 在以上实例中,bin 文件是一个目录文件,属主和属组都为 root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。
92103
93- ## 命令概述
104+ ## Linux 文件目录管理要点
105+
106+ ### 目录管理
107+
108+ - 切换目录 - 使用 [ cd] ( #cd )
109+ - 查看目录信息 - 使用 [ ls] ( #ls )
110+ - 显示当前目录的绝对路径 - 使用 [ pwd] ( #pwd )
111+ - 树状显示目录的内容 - 使用 [ tree] ( #tree )
112+ - 创建目录 - 使用 [ mkdir] ( #mkdir )
113+ - 删除目录 - 使用 [ rmdir] ( #rmdir )
114+
115+ ### 文件管理
116+
117+ - 创建空文件 - 使用 [ touch] ( #touch )
118+ - 为文件创建连接 - 使用 [ ln] ( #ln )
119+ - 批量重命名 - 使用 [ rename] ( #rename )
120+ - 显示文件的详细信息 - 使用 [ stat] ( #stat )
121+ - 探测文件类型 - 使用 [ file] ( #file )
122+ - 设置文件或目录的权限 - 使用 [ chmod] ( #chmod )
123+ - 设置文件或目录的拥有者或所属群组 - 使用 [ chown] ( #chown )
124+
125+ ### 文件和目录通用管理
126+
127+ - 复制文件或目录 - 使用 [ cp] ( #cp )
128+ - 移动文件或目录 - 使用 [ mv] ( #mv )
129+ - 删除文件或目录 - 使用 [ rm] ( #rm )
94130
95- ### 切换目录 - cd
131+ ## 命令常见用法
132+
133+ ### cd
96134
97135> cd 命令用来切换工作目录。
98136>
@@ -108,7 +146,7 @@ cd .. # 切换到上级目录
108146cd ../.. # 切换到上两级目录
109147```
110148
111- ### 显示目录信息 - ls
149+ ### ls
112150
113151> ls 命令用来显示目录信息。
114152>
@@ -126,13 +164,13 @@ ls -ltr # 按修改时间列出文件和文件夹详细信息
126164ls --color=auto # 列出文件并标记颜色分类
127165```
128166
129- ### 显示当前目录的绝对路径 - pwd
167+ ### pwd
130168
131169> pwd 命令用来显示当前目录的绝对路径。
132170>
133171> 参考:http://man.linuxde.net/pwd
134172
135- ### 创建目录 - mkdir
173+ ### mkdir
136174
137175> mkdir 命令用来创建目录。
138176>
@@ -148,7 +186,7 @@ mkdir -p zp/test
148186mkdir -p -m 750 zp/test
149187```
150188
151- ### 删除空目录 - rmdir
189+ ### rmdir
152190
153191> rmdir 命令用来删除空目录。
154192>
@@ -161,7 +199,7 @@ mkdir -p -m 750 zp/test
161199rmdir -p zp/test
162200```
163201
164- ### 树状显示目录的内容 - tree
202+ ### tree
165203
166204> tree 命令以树状显示目录的内。
167205>
@@ -188,7 +226,138 @@ tree -L 2 > /home/www/tree.txt # 当前目录结果存到 tree.txt 文件中
188226tree -I ' node_modules|icon|font' -L 2
189227```
190228
191- ### 复制文件或目录 - cp
229+ ### touch
230+
231+ > touch 命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建空文件。
232+ >
233+ > 参考:http://man.linuxde.net/touch
234+
235+ 示例:
236+
237+ ```
238+ touch ex2
239+ ```
240+
241+ ### ln
242+
243+ > ln 命令用来为文件创建连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。
244+ >
245+ > 注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。
246+ >
247+ > 参考:http://man.linuxde.net/ln
248+
249+ 示例:
250+
251+ ``` sh
252+ # 将目录 /usr/mengqc/mub1 下的文件 m2.c 链接到目录 /usr/liu 下的文件 a2.c
253+ cd /usr/mengqc
254+ ln /mub1/m2.c /usr/liu/a2.c
255+
256+ # 在目录 /usr/liu 下建立一个符号链接文件 abc,使它指向目录 /usr/mengqc/mub1
257+ # 执行该命令后,/usr/mengqc/mub1 代表的路径将存放在名为 /usr/liu/abc 的文件中
258+ ln -s /usr/mengqc/mub1 /usr/liu/abc
259+ ```
260+
261+ ### rename
262+
263+ > rename 命令用字符串替换的方式批量重命名。
264+ >
265+ > 参考:http://man.linuxde.net/rename
266+
267+ 示例:
268+
269+ ``` sh
270+ # 将 main1.c 重命名为 main.c
271+ rename main1.c main.c main1.c
272+
273+ rename " s/AA/aa/" * # 把文件名中的 AA 替换成 aa
274+ rename " s//.html//.php/" * # 把 .html 后缀的改成 .php 后缀
275+ rename " s/$//.txt/" * # 把所有的文件名都以 txt 结尾
276+ rename " s//.txt//" * # 把所有以 .txt 结尾的文件名的.txt 删掉
277+ ```
278+
279+ ### stat
280+
281+ > stat 命令用于显示文件的状态信息。stat 命令的输出信息比 ls 命令的输出信息要更详细。
282+ >
283+ > 参考:http://man.linuxde.net/stat
284+
285+ 示例:
286+
287+ ``` sh
288+ stat myfile
289+ ```
290+
291+ ### file
292+
293+ > file 命令用来探测给定文件的类型。file 命令对文件的检查分为文件系统、魔法幻数检查和语言检查 3 个过程。
294+ >
295+ > 参考:http://man.linuxde.net/file
296+
297+ 示例:
298+
299+ ``` sh
300+ file install.log # 显示文件类型
301+ file -b install.log # 不显示文件名称
302+ file -i install.log # 显示 MIME 类型
303+ file -L /var/spool/mail # 显示符号链接的文件类型
304+ ```
305+
306+ ### chmod
307+
308+ > chmod 命令用来变更文件或目录的权限。在 UNIX 系统家族里,文件或目录权限的控制分别以读取、写入、执行 3 种一般权限来区分,另有 3 种特殊权限可供运用。用户可以使用 chmod 指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。
309+ >
310+ > 参考:http://man.linuxde.net/chmod
311+
312+ 知识扩展:
313+
314+ Linux 用 户分为:拥有者、组群(Group)、其他(other),Linux 系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及 root 的相关信 息, 都是记录在` /etc/passwd ` 文件中。每个人的密码则是记录在` /etc/shadow ` 文件下。 此外,所有的组群名称记录在` /etc/group ` 內!
315+
316+ linux 文件的用户权限的分析图
317+
318+ ``` bash
319+ -rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules
320+ # ↑╰┬╯╰┬╯╰┬╯
321+ # ┆ ┆ ┆ ╰┈ 0 其他人
322+ # ┆ ┆ ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组
323+ # ┆ ╰┈┈┈┈ u 属组
324+ # ╰┈┈ 第一个字母 `d` 代表目录,`-` 代表普通文件
325+ ```
326+
327+ 例:rwx rw- r--
328+
329+ r=读取属性 //值= 4
330+ w=写入属性 //值= 2
331+ x=执行属性 //值= 1
332+
333+ 示例:
334+
335+ ``` sh
336+ chmod u+x,g+w f01 # 为文件f01设置自己可以执行,组员可以写入的权限
337+ chmod u=rwx,g=rw,o=r f01
338+ chmod 764 f01
339+ chmod a+x f01 # 对文件f01的u,g,o都设置可执行属性
340+
341+ # 将/home/wwwroot/里的所有文件和文件夹设置为755权限
342+ chmod -R 755 /home/wwwroot/*
343+ ```
344+
345+ ### chown
346+
347+ > chown 命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户 D,用户组可以是组名或组 id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。
348+ >
349+ > 只有文件拥有者和超级用户才可以便用该命令。
350+ >
351+ > 参考:http://man.linuxde.net/chown
352+
353+ 示例:
354+
355+ ``` sh
356+ # 将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu
357+ chown -R liu /usr/meng
358+ ```
359+
360+ ### cp
192361
193362> cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
194363>
@@ -217,7 +386,7 @@ cp -rf /usr/men/* /usr/zh
217386cp -i /usr/men m* .c /usr/zh
218387```
219388
220- ### 移动文件或目录 - mv
389+ ### mv
221390
222391> mv 命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source 表示源文件或目录,target 表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
223392>
@@ -243,7 +412,7 @@ mv -f *.txt /home/office # 无条件覆盖已经存在的文件
243412mv -bv * .txt /home/office # 复制时创建备份
244413```
245414
246- ### 删除文件或目录 - rm
415+ ### rm
247416
248417> rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
249418>
0 commit comments