diff --git "a/42 \345\210\230\350\213\217\350\220\214/20240525_\347\233\270\345\257\271\350\267\257\345\276\204\343\200\201\347\273\235\345\257\271\350\267\257\345\276\204.md" "b/42 \345\210\230\350\213\217\350\220\214/20240525_\347\233\270\345\257\271\350\267\257\345\276\204\343\200\201\347\273\235\345\257\271\350\267\257\345\276\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..a4410b4328d31f2f4fde99f49e892d4f491412ba --- /dev/null +++ "b/42 \345\210\230\350\213\217\350\220\214/20240525_\347\233\270\345\257\271\350\267\257\345\276\204\343\200\201\347\273\235\345\257\271\350\267\257\345\276\204.md" @@ -0,0 +1,245 @@ +### 相对路径、绝对路径 + +### 一、概念讲解 + +#### 1. 绝对路径 + +**定义**:从根目录 `/` 开始的完整路径,用于唯一确定文件或目录的位置。 + +**特点**: + +- 以 `/` 开头 +- 与当前工作目录无关 + +**示例**: + +- `/home/user/documents/file.txt` +- `/usr/local/bin` + +#### 2. 相对路径 + +**定义**:相对于当前工作目录的路径,用于在当前目录的基础上指向文件或目录。 + +**特点**: + +- 不以 `/` 开头 +- 依赖于当前工作目录 + +**特殊符号**: + +- `.` 表示当前目录 ./ +- `..` 表示上一级目录../ + +**示例**: + +- `documents/file.txt` (假设当前目录是 `/home/user`) +- `../user/file.txt` (假设当前目录是 `/home/user/documents`) + +### 二、实际操作示例 + +#### 1. 绝对路径操作示例 + +**示例 1**:列出 `/var/log` 目录中的所有文件。 + +```bash +ls /var/log +``` + +**示例 2**:复制 `/etc/passwd` 文件到 `/home/user/backup` 目录。 + +```bash +cp /etc/passwd /home/user/backup/ +``` + +#### 2. 相对路径操作示例 + +**示例 1**:假设你在 `/home/user/projects` 目录下,列出当前目录中的所有文件和目录。 + +```bash +ls ../ +``` + +**示例 2**:假设你在 `/home/user/projects/scripts` 目录下,显示 `../data` 目录中的所有文件和目录。 + +```bash +ls ../data +``` + + + + + +# 作业: + +# 相关和目录可自行创建后再操作 + +##### 第一次全部使用绝对路径 + +##### 第二次全部使用相对路径,要求将当前路径设置为/tmp + +1. 在家目录下建立文件exam.c,将文件exam.c拷贝到/tmp这个目录下,并改名为 shiyan.c + + ```bash + mkdir 0525作业 + cd /home/paidx/0525作业/ + touch exam.c + mkdir tmp + //绝对路径 + cp /home/paidx/0525作业/exam.c /home/paidx/0525作业/tmp/shiyan.c + ``` + +2. 在任何目录下回到用户主目录? + + ```bash + cd ~ + ``` + +3. 用长格式列出/tmp/test目录下所有的文件包括隐藏文件? + + ```bash + //绝对路径 + mkdir -p /home/paidx/0525作业/tmp/test + cd /home/paidx/0525作业/tmp/test/ + touch .1.txt 2.txt 3.txt .4.txt + ls -alS /home/paidx/0525作业/tmp/test/ + //相对路径 + ls -alS test/ + ``` + +4. /tmp/test2目录下,创建5个文件分别是 1.txt 2.txt 3.txt 4.txt 5.txt,压缩这5个文件,压缩包的名字是hailiang.tar + + ```bash + mkdir -p /home/paidx/0525作业/tmp/test2 + cd /home/paidx/0525作业/tmp/test2/ + touch 1.txt 2.txt 3.txt 4.txt 5.txt + cd /home/paidx/0525作业/tmp/test2/ + tar -cvf hailiang.tar 1.txt 2.txt 3.txt 4.txt 5.txt + ``` + +5. 当前目录,建立文件 file1.txt 并更名为 file2.txt? + + ```bash + cd /home/paidx/0525作业/tmp/ + touch file1.txt + mv file1.txt file2.txt + ``` + +6. 当前目录,用vim建立文件bbbb.txt 并将用户名的加入其中保存退出? + + ```bash + vim bbbb.txt + //进入后输入用户名 ESC退出 shift+:wq! 保存并退出 + ``` + +7. 将家目录中扩展名为txt、doc和bak的文件全部复制到/tmp/test目录中? + + ```bash + cd /home/ + sudo touch 1.txt 2.doc 3.bak + cp /home/*.txt /home/paidx/0525作业/tmp/test/ + cp /home/*.doc /home/paidx/0525作业/tmp/test/ + cp /home/*.bak /home/paidx/0525作业/tmp/test/ + ``` + +8. 将文件file1.txt从当前目录移动到家目录的/docs中。 + + ```bash + mkdir /home/paidx/0525作业/docs + touch /home/paidx/0525作业/file1.txt + mv /home/paidx/0525作业/file1.txt /home/paidx/0525作业/docs/ + ``` + +9. 复制文件file2.txt从当前目录到家目录/backup中。 + + ```bash + cp /home/paidx/0525作业/tmp/file2.txt /home/paidx/0525作业/docs/ + ``` + +10. 将家目录/docs中的所有文件和子目录移动到家目录/archive中。 + + ```bash + mkdir /home/paidx/0525作业/archive + mv /home/paidx/0525作业/docs/* /home/paidx/0525作业/archive/ + ``` + +11. 复制家目录/photos及其所有内容到家目录/backup中。 + + ```bash + mkdir -p /home/paidx/0525作业/ photos backup + cp /home/paidx/0525作业/photos/* /home/paidx/0525作业/backup/ + ``` + +12. 将文件家目录/docs/report.doc移动到家目录/papers中,并将其重命名为final_report.doc。 + + ```bash + mkdir papers + mv /home/paidx/0525作业/docs/report.doc /home/paidx/0525作业/papers/final_report.doc + ``` + +13. 在家目录/docs中创建一个名为notes.txt的空文件,并将其复制到目录家目录/backup中。 + + ```bash + cd /home/paidx/0525作业/docs/ + touch notes.txt + cp /home/paidx/0525作业/docs/notes.txt /home/paidx/0525作业/backup/ + ``` + +14. 复制家目录/images中所有以.jpg结尾的文件到家目录/photos中。 + + ```bash + mkdir -p /home/paidx/0525作业/images + cp /home/paidx/0525作业/images/*.jpg /home/paidx/0525作业/photos/ + ``` + +15. 将文件家目录/docs/file1.txt和家目录/docs/file2.txt复制到家目录/backup中。 + + ```bash + cp /home/paidx/0525作业/docs/file1.txt /home/paidx/0525作业/docs/file2.txt /home/paidx/0525作业/backup/ + ``` + +16. 将家目录/docs中的所有.txt文件复制到家目录/text_files中。 + + ```bash + mkdir -p /home/paidx/0525作业/text_files + cp /home/paidx/0525作业/docs/*.txt /home/paidx/0525作业/text_files/ + ``` + +17. 将家目录/docs中的所有文件移动到家目录/temp中,并且如果文件已存在,则覆盖它们。 + + ```bash + mkdir -p /home/paidx/0525作业/temp + mv -i /home/paidx/0525作业/docs/* /home/paidx/0525作业/temp/ + ``` + +18. 将家目录/docs中的所有文件移动到家目录/archive中,并且在移动时显示详细的移动信息。 + + ```bash + mv -v /home/paidx/0525作业/docs/* /home/paidx/0525作业/archive/ + ``` + +19. 复制家目录/docs中的所有子目录及其内容到家目录/backup中。 + + ```bash + cp -r /home/paidx/0525作业/docs/* /home/paidx/0525作业/backup/ + ``` + +20. 将家目录/docs中的所有文件和子目录移动到家目录/backup中,但排除文件名以"temp_"开头的文件。 + + ```bash + mv /home/paidx/0525作业/docs/!(temp_*) /home/paidx/0525作业/backup/ + ``` + +21. 将目录/docs/report.txt移动到家目录/archive中,但如果目标目录中已存在同名文件,则不直接覆盖,先备份同名文件为report.txt_bak。 + + ```bash + mv -bi /home/paidx/0525作业/docs/report.txt /home/paidx/0525作业/archive/report.txt_back + ``` + +22. 将家目录/docs中所有以.pdf结尾的文件复制到家目录/pdf_files中,并且如果目标目录中已存在同名文件,则忽略它们。 + + ```bash + mkdir -p /home/paidx/0525作业/pdf_files + cp -n /home/paidx/0525作业/docs/*.pdf /home/paidx/0525作业/pdf_files/ + ``` + + ![20240525_作业显示](./img/20240525_作业显示.png) \ No newline at end of file diff --git "a/42 \345\210\230\350\213\217\350\220\214/img/20240525_\344\275\234\344\270\232\346\230\276\347\244\272.png" "b/42 \345\210\230\350\213\217\350\220\214/img/20240525_\344\275\234\344\270\232\346\230\276\347\244\272.png" new file mode 100644 index 0000000000000000000000000000000000000000..c941a3ff7fab866358881114a8ed46d752f33db5 Binary files /dev/null and "b/42 \345\210\230\350\213\217\350\220\214/img/20240525_\344\275\234\344\270\232\346\230\276\347\244\272.png" differ