diff --git "a/16\351\231\210\347\201\265\351\222\260/20240523\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\344\275\234\344\270\232\347\254\224\350\256\260.md" "b/16\351\231\210\347\201\265\351\222\260/20240523\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\344\275\234\344\270\232\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..9ac1b87a8a665fec8d1eca47979d134f6e08a087 --- /dev/null +++ "b/16\351\231\210\347\201\265\351\222\260/20240523\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\344\275\234\344\270\232\347\254\224\350\256\260.md" @@ -0,0 +1,250 @@ +## 一.练习 + +**题目**: + +您有一个初始目录结构,其中包含名为 `development` 的目录。在 `development` 目录下,您需要先创建名为 `old_code` 的子目录,并在 `old_code` 中创建一些 `.py`、`.pyc` 和 `.pyo` 文件(模拟已有的项目结构)。之后,您需要对这个项目进行整理,确保每个部分的文件都在正确的位置,并删除不再需要的文件和目录。以下是您需要完成的具体任务: + +1. 使用 `cd` 命令进入 `development` 目录(假设您已经在包含 `development` 目录的父目录中)。 + + ```bash + su ccly #切换账号 + cd #回家 + mkdir start #创建初始目录 + cd start #进入初始目录 + mkdir development #创development目录 + cd development #进入development + ``` + + + +2. 在 `development` 目录下创建名为 `old_code` 的子目录。 + + ```bash + mkdir old_code #创建old_code目录 + ``` + + + +3. 在 `old_code` 目录下创建以下文件和目录结构: + + - `module1/script1.py` + + - `module1/script1.pyc` + + - `module1/script2.py` + + - `module1/script2.pyo` + + - `module2/script3.py` + + - `module2/script3.pyc` + + ```bash + cd old_code/ + mkdir module1 module2 + cd module1 + mkdir script1.py script1.pyc script2.py script2.pyo + ls + cd ../ + cd module2 + mkdir script3.py script3.pyc + ls + ``` + + + +4. 使用 `ls -l` 命令查看 `old_code` 目录下的所有文件和目录。 + + ```bash + cd ../ + ls -lR + ``` + + + +5. 手动删除 `old_code` 目录中所有的 `.pyc` 和 `.pyo` 文件。 + + ```bash + rm -rf *.pyc *.pyo + ls -R + ``` + + + +6. 创建一个新的目录 `source_code`,并使用 `cp` 命令手动复制 `old_code` 目录中所有 `.py` 文件到 `source_code` 目录中,同时保持原始目录结构。 + + ```bash + cd ../ + mkdir source_code + cd old_code/ + cd module1 + cp -r *.py ../../source_code/ + cd ../module2 + cp -r *.py ../../source_code/ + cd ../../ + ls -R + ``` + + + +7. 使用 `mkdir` 命令在 `source_code` 目录下创建两个新的子目录 `tests` 和 `docs`。 + + ```bash + cd source_code/ + mkdir tests docs + ``` + + + +8. 使用 `touch` 命令在 `source_code/docs` 目录下创建两个空文件 `architecture.md` 和 `requirements.md`。 + + ```bash + cd docs + touch architecture.md requirements.md + ls + ``` + + + +9. 回到 `development` 目录的根目录,使用 `ls -R` 命令递归地列出整个 `development` 目录的结构。 + + ```bash + cd ../../../ + ls -lR + ``` + + + +10. 清理工作:删除整个 `old_code` 目录(包括其中的所有文件和子目录)。 + + ```bash + rm -rf ./development/old_code + ls -R + ``` + + + +11. (额外任务)假设您发现 `source_code/module1` 目录下有一个名为 `unused_script.py` 的文件不再需要(尽管在这个示例中我们没有创建它,但假设它存在),请使用 `rm` 命令删除它。 + + ```bash + rm -rf /home/ccly/start/development/source_code/module1/unused_script.py + ``` + + + +## 二.作业 + +假设您刚刚登录到一个Linux系统,并位于您的家目录(`~`)下。您需要完成以下一系列复杂的操作来组织和清理您的文件和目录。请按照顺序执行,并给出相应的命令。 + +1. **创建测试文件**:在家目录下创建三个文本文件,分别命名为`.hidden.txt`(隐藏文件)、`visible1.txt`和`visible2.txt`。 + + ```bash + touch .hidden.txt visible1.txt visible2.txt + ``` + + + +2. **列出文件和目录**:列出家目录(`~`)下的所有文件和目录,包括隐藏文件,并查看其详细权限和属性。 + + ```bash + ls -la + ``` + +3. **创建工作区**:创建一个新的目录`work_area`,并在其中创建三个子目录:`project_a`、`project_b`和`docs`。 + + ```bash + mkdir work_area + cd work_area + mkdir project_a project_b docs + ``` + + + +4. **移动文本文件**:将家目录下的所有`.txt`文件移动到`work_area/docs`目录中,并确保这些文件在移动后仍然是隐藏的(如果它们是隐藏的)。 + + ```bash + mv .hidden.txt visible1.txt visible2.txt ./work_area/docs/ + mv .*.txt *.txt ./work_area/docs/ + ``` + + + +5. **创建新文件**:在`work_area/project_a`目录下创建一个新的文本文件`notes.txt`,并添加一些内容(例如:`echo "Initial notes for project A" > work_area/project_a/notes.txt`)。 + + ```bash + vim notes.txt + ls -d ./notes.txt + ``` + + + +6. **复制目录**:递归地复制`work_area/project_a`目录到`work_area/project_b`,并命名为`project_a_backup`。 + + ```bash + cp -r project_a ./project_b/project_a_backup/ + cp -r 要复制的文件夹名 移动的地址/新名字/ + ``` + + + +7. **列出文件并按大小排序**:列出`work_area/docs`目录下的所有文件,并按文件大小降序排列。 + + ```bash + ls -laS + ``` + + + +8. **删除所有文件**:删除`work_area/docs`目录下所有文件。 + + ```bash + rm -rf docs + ``` + + + +9. **删除目录**:假设您不再需要`work_area/project_b`目录及其所有内容,请递归地强制删除它。 + + ```bash + rm -rf project_b + ``` + + + +10. **清理空目录**:清理`work_area`目录,删除其中所有的空目录(注意:不要删除非空的目录). + + ```bash + rm -dv /home/ccly/work_area/* + ``` + + + +11. **创建别名**:回到您的家目录,并创建一个别名`llh`,该别名能够列出当前目录下文件和目录的长格式列表,并以人类可读的格式显示文件大小(类似于`ls -lh`命令)。 + +```bash +cd +alias 11h='ls -lh' +``` + +# 三、笔记 + +关于今天作业用到的所有命令 + +```bash +cd #回家 +cd ../#回到上一级 +cd 目录名#进入xx目录 +mkdir 目录名 #创建目录 +ls -lR#查看目录下的所有文件和目录 +rm -rf *.pyc *.pyo#递归删除所有.pyc .pyo文件 +cp -r *.py 目标路径#递归复制所有.py文件到目标路径 +touch 文件名#新建文件 +ls -la#列出目标目录下的所有文件和目录,包括隐藏文件,并查看其详细权限和属性。 +mv .*.txt *.txt 目标路径#移动所有txt文件包括隐藏txt文件到目标路径 +vim notes.txt #编辑notes.txt文件,如果没有该命令会创建并编辑 +ls -d 文件名#查看目标文件内容 +cp -r 要复制的文件夹名 移动的地址/新名字/#递归复制文件到目标路径并重命名 +rm -dv /home/ccly/work_area/*#清理空目录 +alias 11h='ls -lh'#创建一个别名并为他添加功能,如该别名能够列出当前目录下文件和目录的长格式列表,并以人类可读的格式显示文件大小 +``` +