06-. Linux File and Directory Management

06-. Linux 文件与目录管理

绝对路径 与 相对路径的选用:

怎么方便怎么来。

1. 目录管理

. 				# 代表此层目录
.. 				# 代表上一次目录
-					# 代表前一个工作目录
~					# 代表 目前用户身份 所在的家目录
~account	# 代表 account 这个用户的家目录

根目录的 .. 也是存在的,也就是它自己

下面是常见的处理目录的指令

1.1. cd(change directory)

变换目录。

1.2. pwd(print woring directory)

显示当前所在的目录。

1.3. mkdir(make directory)

建立新的目录。

1.4. rmdir

删除空的目录。

  • 目录必须一层一层删除

  • 被删除的目录里必定不能存在其他的目录或文件(必须是 empty directory)

如果想要删除目录下所有东西:

使用rm -r xxx

2. 执行文件路径变量:$PATH

2.1. PATH环境变量的内容

由一堆目录所组成的。每个目录中间用冒号(:)隔开。

2.2. PATH的作用

  • 简化命令查找

如果没有 PATH 变量,用户每次运行一个命令时都需要指定完整的路径。例如,运行 ls 命令时,需要输入 /bin/ls 。而通过设置 PATH ,用户可以直接输入 ls ,系统会自动在 PATH 中指定的目录中查找 ls 命令的可执行文件。

  • 提高效率

PATH 变量允许用户快速访问系统中安装的各种工具和应用程序,而无需记住每个命令的完整路径。

3. 文件与目录管理

3.1. 文件、目录的检视:ls

下达 ls 的时候,默认显示的只有:非隐藏档的档名、以档名进行排序及文件名代表的颜色显示。

3.2. 复制:cp、删除:rm与移动:mv

3.2.1. cp:copy

可以:

  • 复制

  • 建立连结档(快捷方式)

  • 对比两文件的新旧而予以更新

  • 复制整个目录

在预设的条件中, cp 的来源档与目的档的权限是不同 的,目的档的拥有者通常会是指令操作者本身。

3.2.2. mv: move

可以:

  • 移动目录与文件

  • 更改名字(重命名)

3.2.3. rm: remove

可以:

  • 移除文件/目录

4. 文件内容查询

  • cat 由第一行开始显示文件内容

  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!

  • nl 显示的时候,顺道输出行号!

  • more 一页一页的显示文件内容

  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!

  • head 只看头几行

  • tail 只看尾巴几行

  • od 以二进制的方式读取文件内容!

4.1. cat(concatenate)

主要的功能是 将一个文件的内容连续的印出在屏幕上面,可以加上 -n 或 -b,这样前面可以加上行号。

不过,一旦超过40行,眼睛根本看不过来。所以一般很少用的。

4.2. tac

反向展示。

cat 是由『第一行到最后一行连续显示在屏幕上』,而 tac 则是『 由最后一行到第一行反向在屏幕上显示出来 』

4.3. nl

添加行号打印。

4.4. more

一页一页翻动。

more程序中,有以下几个指令:

  • 空格键 (space):代表向下翻一页;

  • Enter :代表向下翻『一行』;

  • / 字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;

  • :f :立刻显示出文件名以及目前显示的行数(Ubuntu 里:不会显示出来);

  • q :代表立刻离开 more ,不再显示该文件内容。

  • b[ctrl]- b :代表往回翻页,不过这动作只对文件有用,对管线无用。

4.5. less

一页一页翻动。

比 more 多几个好用的功能:

  • 使用 [pageup] [pagedown] 等按键的功能来往前往后 翻看文件。

  • 向上搜索文件,查找字符串

基本功能如下:

  • 空格键 :向下翻动一页;

  • [pagedown]:向下翻动一页;

  • [pageup] :向上翻动一页;

  • /字符串 :向下搜寻『字符串』的功能;

  • ?字符串 :向上搜寻『字符串』的功能;

  • n :重复前一个搜寻 (与 / 或 ? 有关!)

  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)

  • g :前进到这个资料的第一行去;

  • G:前进到这个数据的最后一行去 (注意大小写);

  • q :离开 less 这个程序;

4.6. head

取出前面 n 行。

head -n 20 file.c

显示 file.c 的前 20 行

若没有加上 -n 这个选项时,默认只显示十行,若只要一行呢?那就加入『 head -n 1 filename 』即可!

4.7. tail

取出后面 n 行

4.8. od

非纯文本档。

利用这个指令,可以将 data file 或者是 binary file 的内容数据给他读出来

4.9. touch

修改文件时间或建置新档

  • modification time (mtime): 当该文件的『内容数据』变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或 权限喔!

  • status time (ctime): 当该文件的『状态 (status)』改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新 这个时间啊。

  • access time (atime): 当『该文件的内容被取用』时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的 atime 了。

有时候的时间取决于系统时间,处理一些时间敏感的文件的时候请设置好系统时间。不要收到来自未来的文件噢!

无论如何, touch 这个指令最常被使用的情况是:

  • 建立一个空的文件;

  • 将某个文件日期修订为目前 (mtime 与 atime)

5. 文件与目录的默认权限和隐藏权限

读写执行(r,w,x)为基本权限。

在Ext2/Ext3/Ext4/xfs文件系统中,还可以使用chattr与lsattr设定及观察隐藏属 性。 常见的包括只能新增数据的 +a 与完全不能更动文件的 +i 属性。

6. 指令与文件的搜寻

脚本文件名搜寻:which

文件档名搜寻:whereis 或 locate

利用 find 可以加入许多选项来直接查询文件系统,以获得自己想要知道的档名。

但通常不用find,因为很慢,也很操硬盘

7. 总结

7.1. 进入某目录成为『可工作目录』的基本权限

  • 可使用的指令:例如 cd 等变换工作目录的指令;

  • 目录所需权限:用户对这个目录至少需要具有 x 的权限

  • 额外需求:如果用户想要在这个目录内利用 ls 查阅文件名,则用户对此目录还需要 r 的权限。

7.2. 进入某个目录内读取一个文件的基本权限

  • 可使用的指令:例如本章谈到的 cat, more, less等等

  • 目录所需权限:用户对这个目录至少需要具有 x 权限;

  • 文件所需权限:使用者对文件至少需要具有 r 的权限才行!

7.3. 修改一个文件的基本权限

  • 可使用的指令:例如 nano 或未来要介绍的 vi 编辑器等;

  • 目录所需权限:用户在该文件所在的目录至少要有 x 权限;

  • 文件所需权限:使用者对该文件至少要有 r, w 权限

7.4. 建立一个文件的基本权限

  • 目录所需权限:用户在该目录要具有 w,x 的权限,重点在 w

7.5. 进入某目录并执行该目录下的某个指令的基本权限

  • 目录所需权限:用户在该目录至少要有 x 的权限;

  • 文件所需权限:使用者在该文件至少需要有 x 的权限

Last updated