From d8dca3440e7345adafab03dc5cbbc4b077dc7908 Mon Sep 17 00:00:00 2001 From: lin Date: Wed, 22 May 2024 23:54:05 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...07\344\273\266\347\233\256\345\275\225.md" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "\346\236\227\346\263\223\347\202\234/20240522-\346\270\205\347\220\206\347\273\204\347\273\207\346\226\207\344\273\266\347\233\256\345\275\225.md" diff --git "a/\346\236\227\346\263\223\347\202\234/20240522-\346\270\205\347\220\206\347\273\204\347\273\207\346\226\207\344\273\266\347\233\256\345\275\225.md" "b/\346\236\227\346\263\223\347\202\234/20240522-\346\270\205\347\220\206\347\273\204\347\273\207\346\226\207\344\273\266\347\233\256\345\275\225.md" new file mode 100644 index 0000000..65e11d2 --- /dev/null +++ "b/\346\236\227\346\263\223\347\202\234/20240522-\346\270\205\347\220\206\347\273\204\347\273\207\346\226\207\344\273\266\347\233\256\345\275\225.md" @@ -0,0 +1,40 @@ +假设您刚刚登录到一个Linux系统,并位于您的家目录(`~`)下。您需要完成以下一系列复杂的操作来组织和清理您的文件和目录。请按照顺序执行,并给出相应的命令。 + +1. **创建测试文件**:在家目录下创建三个文本文件,分别命名为`.hidden.txt`(隐藏文件)、`visible1.txt`和`visible2.txt`。 +mkdir .hidden.txt +mkdir visible1.txt +midir visible2.txt +2. **列出文件和目录**:列出家目录(`~`)下的所有文件和目录,包括隐藏文件,并查看其详细权限和属性。 +ls -a +3. **创建工作区**:创建一个新的目录`work_area`,并在其中创建三个子目录:`project_a`、`project_b`和`docs`。 +cd work_area +mkdir project_a +mkdir project_b +mkdir docs +4. **移动文本文件**:将家目录下的所有`.txt`文件移动到`work_area/docs`目录中,并确保这些文件在移动后仍然是隐藏的(如果它们是隐藏的)。 +mv .hidden.txt home/landawang/work_area/docs +mv visible1.txt home/landawang/work_area/docs +mv visible2.txt home/landawang/work_area/docs + +5. **创建新文件**:在`work_area/project_a`目录下创建一个新的文本文件`notes.txt`,并添加一些内容(例如:`echo "Initial notes for project A" > work_area/project_a/notes.txt`)。 +cd project_a +touch notes.txt +echo "sss" > home/landawang/work_area/project_a/notes +6. **复制目录**:递归地复制`work_area/project_a`目录到`work_area/project_b`,并命名为`project_a_backup`。 +cd work_area +mv -r project_a /home/landawang/work_area/project_b +cd porject_b +mv project_a project_a_backup +7. **列出文件并按大小排序**:列出`work_area/docs`目录下的所有文件,并按文件大小降序排列。 +ls -hl +8. **删除所有文件**:删除`work_area/docs`目录下 所有文件。 +rm -f .* +rm -f * +9. **删除目录**:假设您不再需要`work_area/project_b`目录及其所有内容,请递归地强制删除它。 +rm -r project_b + +10. **清理空目录**:清理`work_area`目录,删除其中所有的空目录(注意:不要删除非空的目录)。 +rm -d +11. **创建别名**:回到您的家目录,并创建一个别名`llh`,该别名能够列出当前目录下文件和目录的长格式列表,并以人类可读的格式显示文件大小(类似于`ls -lh`命令)。 + vim .bashrc + alias llh='ls-lh' \ No newline at end of file -- Gitee From 38d9a59a5df33888a2bdd177b178fc8bad92fc0a Mon Sep 17 00:00:00 2001 From: lin Date: Fri, 24 May 2024 22:32:21 +0800 Subject: [PATCH 2/4] xx --- ...73\345\212\250\345\244\215\345\210\266.md" | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 "\346\236\227\346\263\223\347\202\234/20240523\346\226\207\344\273\266\347\247\273\345\212\250\345\244\215\345\210\266.md" diff --git "a/\346\236\227\346\263\223\347\202\234/20240523\346\226\207\344\273\266\347\247\273\345\212\250\345\244\215\345\210\266.md" "b/\346\236\227\346\263\223\347\202\234/20240523\346\226\207\344\273\266\347\247\273\345\212\250\345\244\215\345\210\266.md" new file mode 100644 index 0000000..4672768 --- /dev/null +++ "b/\346\236\227\346\263\223\347\202\234/20240523\346\226\207\344\273\266\347\247\273\345\212\250\345\244\215\345\210\266.md" @@ -0,0 +1,94 @@ +相关和目录可自行创建后再操作 + +1. 在家目录下建立文件exam.c,将文件exam.c拷贝到/tmp这个目录下,并改名为 shiyan.c +``` +touch exam.c +cp exam.c /tmp +mv exam.c shiyan.c +``` +2. 在任何目录下回到用户主目录? +``` +cd +``` +3. 用长格式列出/tmp/test目录下所有的文件包括隐藏文件? +``` +ls -l +``` +4. /tmp/test2目录下,创建5个文件分别是 1.txt 2.txt 3.txt 4.txt 5.txt,压缩这5个文件,压缩包的名字是hailiang.tar +``` +touch {1..5}.txt +``` +5. 当前目录,建立文件 file1.txt 并更名为 file2.txt? +``` +touch file1.txt +mv file1.txt file2.txt +``` +6. 当前目录,用vim建立文件bbbb.txt 并将用户名的加入其中保存退出? +``` +vim bbbb.txt +``` +7. 将家目录中扩展名为txt、doc和bak的文件全部复制到/tmp/test目录中? + cp *.{txt,doc,bak} /home/landawang/tmp/test +8. 将文件file1.txt从当前目录移动到家目录的/docs中。 +``` +mv file1.txt ../docs +``` +9. 复制文件file2.txt从当前目录到家目录/backup中。 +``` +cp file2.txt ../backup +``` +10. 将家目录/docs中的所有文件和子目录移动到家目录/archive中。 +``` +mv -r docs /archive +``` +11. 复制家目录/photos及其所有内容到家目录/backup中。 +``` +cp -r photos ../backup +``` +12. 将文件家目录/docs/report.doc移动到家目录/papers中,并将其重命名为final_report.doc。 +``` +mv report.doc ../parpers +mv report.doc final_report.doc +``` +13. 在家目录/docs中创建一个名为notes.txt的空文件,并将其复制到目录家目录/backup中。 +``` +touch notes.txt +cp notes.txt ../backup + +``` +14. 复制家目录/images中所有以.jpg结尾的文件到家目录/photos中。 +``` +cp *.jpg ../photos +``` +15. 将文件家目录/docs/file1.txt和家目录/docs/file2.txt复制到家目录/backup中。 +``` +cp *.txt ../backup +``` +16. 将家目录/docs中的所有.txt文件复制到家目录/text_files中。 +``` +cp *.txt ../text_files +``` +17. 将家目录/docs中的所有文件移动到家目录/temp中,并且如果文件已存在,则覆盖它们。 +``` +mv -r docs ../temp +``` +18. 将家目录/docs中的所有文件移动到家目录/archive中,并且在移动时显示详细的移动信息。 +``` +mv -rv docs ../archive +``` +19. 复制家目录/docs中的所有子目录及其内容到家目录/backup中。 +``` +cp -r docs ../backup +``` +20. 将家目录/docs中的所有文件和子目录移动到家目录/backup中,但排除文件名以"temp_"开头的文件。 +``` + +``` +21. 将目录/docs/report.txt移动到家目录/archive中,但如果目标目录中已存在同名文件,则不直接覆盖,先备份同名文件为report.txt_bak。 +``` +mv -bS _bak report.txt ../archive +``` +22. 将家目录/docs中所有以.pdf结尾的1文件复制到家目录/pdf_files中,并且如果目标目录中已存在同名文件,则忽略它们。 +``` +cp *.pdf ../pdf_files +``` \ No newline at end of file -- Gitee From e6130cda8abc24ed9bfdbb5e99ff6624b308fe4f Mon Sep 17 00:00:00 2001 From: lin Date: Sun, 26 May 2024 23:50:33 +0800 Subject: [PATCH 3/4] xx --- ...35\345\257\271\350\267\257\345\276\204.md" | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 "\346\236\227\346\263\223\347\202\234/20240525-\347\233\270\345\257\271\350\267\257\345\276\204\345\222\214\347\273\235\345\257\271\350\267\257\345\276\204.md" diff --git "a/\346\236\227\346\263\223\347\202\234/20240525-\347\233\270\345\257\271\350\267\257\345\276\204\345\222\214\347\273\235\345\257\271\350\267\257\345\276\204.md" "b/\346\236\227\346\263\223\347\202\234/20240525-\347\233\270\345\257\271\350\267\257\345\276\204\345\222\214\347\273\235\345\257\271\350\267\257\345\276\204.md" new file mode 100644 index 0000000..c133f9f --- /dev/null +++ "b/\346\236\227\346\263\223\347\202\234/20240525-\347\233\270\345\257\271\350\267\257\345\276\204\345\222\214\347\273\235\345\257\271\350\267\257\345\276\204.md" @@ -0,0 +1,54 @@ +#### 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 +``` \ No newline at end of file -- Gitee From 5c48d765df9f594eee9b7fbd17c7fb5e2a1aad0e Mon Sep 17 00:00:00 2001 From: lin Date: Tue, 28 May 2024 23:16:50 +0800 Subject: [PATCH 4/4] xx --- ...45\350\257\242\345\221\275\344\273\244.md" | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 "\346\236\227\346\263\223\347\202\234/0527 \346\237\245\350\257\242\345\221\275\344\273\244.md" diff --git "a/\346\236\227\346\263\223\347\202\234/0527 \346\237\245\350\257\242\345\221\275\344\273\244.md" "b/\346\236\227\346\263\223\347\202\234/0527 \346\237\245\350\257\242\345\221\275\344\273\244.md" new file mode 100644 index 0000000..127220a --- /dev/null +++ "b/\346\236\227\346\263\223\347\202\234/0527 \346\237\245\350\257\242\345\221\275\344\273\244.md" @@ -0,0 +1,88 @@ +### 操作题 + +1. **查找当前目录及其子目录中所有扩展名为 `.log` 的文件**: + ``` + find ./ -name '*.log' + ``` + +2. **在 `/var/logs` 目录及其子目录中查找所有包含关键字 `error` 的文件,并显示匹配的行**: + ``` + grep -r 'error' ../../var/logs + ``` + +3. **在 `/home/user/docs` 目录中查找文件名包含 `report` 的所有文件**: + ``` + find ./docs -name "*report*" + + ``` + +4. **查找 `/etc` 目录中最近7天内修改过的文件**: + ``` + find ../../etc -mtime -7 + ``` + +5. **显示 `/usr/bin` 目录中名为 `python` 的可执行文件的路径**: + ``` + which ../../usr/bin "python" + ``` + +6. **查找系统中名为 `ls` 的命令及其手册页位置**: + ``` + whereis ls + ``` + +7. **查找当前目录中包含关键字 `TODO` 的所有文件,并显示匹配的行和文件名**: + ``` + find ./ -type f -exec grep -Hn "TODO" {} \; + + + ``` + +8. **在 `/home/user/projects` 目录中查找所有包含关键字 `function` 的 `.js` 文件**: + ``` + grep -r "function" ./projects --include \*.js + ``` + +9. **查找并显示当前目录及其子目录中所有空文件**: + ``` + find -r ./ type f -empty + ``` + +10. **在 `/var/www` 目录中查找包含关键字 `database` 的所有文件,并只显示文件名**: + ``` + find ../../var/www -type f -exec grep -l "database" {} \; + + ``` + +### 综合操作题 + +**综合操作题:** + +假设你在一个名为 `/home/user/workspace` 的目录中工作。你需要完成以下任务: + +1. 查找该目录中所有扩展名为 `.conf` 的文件。 + +2. 在这些 `.conf` 文件中查找包含关键字 `server` 的行。 + + +3. 将包含关键字 `server` 的文件名和匹配的行保存到一个名为 `server_lines.txt` 的文件中。 + + +**预期命令步骤:** + +1. 查找所有扩展名为 `.conf` 的文件: + ``` + find ./workspace -type f -name "*.conf" + ``` + +2. 在这些 `.conf` 文件中查找包含关键字 `server` 的行: + ``` + find ./workspace -name "*.conf" -exec grep "server" {} \; + ``` + +3. 将结果保存到 `server_lines.txt` 文件中: + ``` + grep -rl "server" ./ | xargs grep "server" >server_lines + ``` + +通过这套操作题和综合操作题,你可以全面地了解和应用Linux系统中与文件和内容查询相关的常用命令。 \ No newline at end of file -- Gitee