Ⅲ. 目录的跳转操作
0x00 引入:Linux 目录结构的本质
我们刚才已经用过 cd 命令了,现在我们来正式的谈一谈这个命令。
❓ 思考:Linux 入口目录时 / 根目录,请问根目录可以再放一个目录吗?
Linux 的目录结构本质是一个多叉树。所以我们把 / 称为根目录,是路径的起始。
🌳 在数据结构的角度去理解:
① 既然是一颗多叉树,每一个子节点既可以是一个目录(再放目录或普通文件,递归式的定义),也可以是一个普通文件。
② 这颗多叉树的叶子节点一定是一个普通文件或者是空目录。
我们一般 "定位" ,是通过路径定位的方式找到文件的。
❓ 思考:为什么我们都是通过路径方式定位文件的呢?
如果我们想找到我们曾经写的 test.c 文件,我们可以从 / 到 home 到 foxny 再到 test.c。
任何一结点,可以有多个子节点。但是任何一个子节点,都只有一个父节点。
所以 test.c 只有一个父节点,即 foxny …… foxny 也只有一个父节点,即 home……
所以当我们定位路径时,反向回推时,这条路径时具有惟一性的。
💡 因为常规的路径定位是具有惟一性的。
0x01 绝对路径与相对路径
/home/foxny/test.c : Linux 下的 "绝对路径" (惟一性且永远有效)。
相对路径:相对于我当前所处的路径。
相对路径往往相对于当前位置,容易失效。而绝对路径是永远有效的!
如果是日常使用,我们推荐相对路径 —— 因为简单。
如果是进行添加配置文件之类的,推荐绝对路径 —— 因为不会出错。
🔺 结论:cd 命令后面可以跟上任何以绝对路径或相对路径构建的路径。
0x02 pwd 指令
这个指令我们刚才已经用过了,没有比这个指令还要简单的指令了。
🔨 pwd:显示用户当前所在的目录
$ pwd # 显示用户当前所在的目录
0x03 cd 指令
💭 我们再讲几个 cd 指令的快捷方式:
$ cd ~ # 跳转到当前用户的家目录 ~: 表示home
这里的 ~ 就是一个快捷进入我们工作目录的方式。
默认一个用户在登录时,都是处于该用户的家目录中的。
一个普通用户的家目录一般都是在 home 路径下有一个以你名字命名的文件夹。
如果是 root 用户,它会在根目录下的 root 目录下。
(关于 root 和普通用户的差别,我们在后面的权限章节会详细讲解)
$ cd / # 跳到根目录 $ cd - # 跳转至上一次我所处的路径
Ⅳ. 基本创建操作
0x00 touch 指令
touch [选项]... 文件...
🔨 touch:创建文件
touch 命令参数可更改文档或目录的日期时间,
包括存取时间和更改时间,或者新建一个不存在的文件。
📜 touch 常用选项:
-a 或 --time=atime 或 --time=access 或 --time=use :只更改存取时间。
-c 或 --no-create :不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题。
-m 或 --time=mtime 或 --time=modify :只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
本章我们只讲 touch 普通用法,我们不去讲它的常用选项。
本章只需掌握 touch 的最普通的用法,即用 touch 来创建普通文件。
(对于 touch 修改文件时间等用法我们放到讲开发工具 makefile 的时候再讲)
💬 动手操作:
① touch 创建一个 mytest.c ② 使用 nano 写一个 Hello,Linux! ③ gcc 编译
具体操作步骤如下:(nano —— Linux 中的文本编辑器)
如果你没有 nano,切换至 root 账户,输入以下指令进行安装:
# yum install -y nano
如果你没有 gcc,切换至 root 账户,输入以下指令进行安装:
# yum install -y gcc-c++
0x01 mkdir 指令
mkdir [选项] [目录名] # 创建目录
🔨 mkdir:创建目录
📜 mkdir 常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
💭 对于 mkdir 的命令,本章只需要掌握这两个就够了:
Ⅴ. 基本删除操作
0x00 rmdir 指令
🔨 rmdir :删除非空目录
rmdir [目录名]
注意!rmdir 只能删除空目录!
0x01 rm 指令
🔨 rm :删除普通文件
rm [文件名] # 删除普通文件
如果我们想删除一个目录:
如果像删除一个目录我们可以通过 " -r 递归式删除 "
$ rm -r [目录名] # 递归删除目录文件
0x02 rm -rf 强制删除
📜 rm -rf :强制删除
rm 还有一个选项, -r 表示递归,还可以带一个 f (force,即强迫) :
$ rm -rf [目标] # 强制删除
有时候我想删一个文件,系统会提示你 "你确认吗?"
我们带一个 -f, 意思就是说 —— "我非常确认!你不要给我提示了!"
📌 注意事项:不要在 root 下输入:
# rm -rf /
你的系统有可能会挂掉,即便没有挂,它它会从根目录开始递归把能删的都删了。
(如果你想试,且你现在也没啥文件,可以试试,就算挂掉了,去云服务器后台重启就行)