diff --git "a/09 \345\256\230\346\226\207\350\257\232/20240522 \346\226\207\344\273\266\347\256\241\347\220\206.md" "b/09 \345\256\230\346\226\207\350\257\232/20240522 \346\226\207\344\273\266\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..58abc027472e840e12a242f56decd81e119923b0 --- /dev/null +++ "b/09 \345\256\230\346\226\207\350\257\232/20240522 \346\226\207\344\273\266\347\256\241\347\220\206.md" @@ -0,0 +1,147 @@ +假设您刚刚登录到一个Linux系统,并位于您的家目录(`~`)下。您需要完成以下一系列复杂的操作来组织和清理您的文件和目录。请按照顺序执行,并给出相应的命令。 + +1. **创建测试文件**:在家目录下创建三个文本文件,分别命名为`.hidden.txt`(隐藏文件)、`visible1.txt`和`visible2.txt`。 + + ~~~js + touch .hidden.txt && touch Visible1.txt && touch Visible2.txt + ~~~ + + + +2. **列出文件和目录**:列出家目录(`~`)下的所有文件和目录,包括隐藏文件,并查看其详细权限和属性。 + + ~~~js + ls -la ~ + ~~~ + + + +3. **创建工作区**:创建一个新的目录`work_area`,并在其中创建三个子目录:`project_a`、`project_b`和`docs`。 + + ~~~js + mkdir work_area && cd work_area && mkdir project_a && mkdir project_b && mkdir docs + ~~~ + + + +4. **移动文本文件**:将家目录下的所有`.txt`文件移动到`work_area/docs`目录中,并确保这些文件在移动后仍然是隐藏的(如果它们是隐藏的)。 + + ~~~js + mv .hidden.txt /home/guan/work_area/docs && mv Visible1.txt /home/guan/work_area/docs && mv Visible2.txt /home/guan/work_area/docs + + ~~~ + + + +5. **创建新文件**:在`work_area/project_a`目录下创建一个新的文本文件`notes.txt`,并添加一些内容(例如:`echo "Initial notes for ptouch roject A" > work_area/project_a/notes.txt`)。 + + ~~~js + touch notes.txt && echo "xiaohaodafu" > /home/guan/work_area/project_a/notes.txt + ~~~ + + + +6. **复制目录**:递归地复制`work_area/project_a`目录到`work_area/project_b`,并命名为`project_a_backup`。 + + ~~~js + cp project_a /home/guan/work_area/project_b -r && cd project_b && mv project_a project_a_backup + ~~~ + +7. **列出文件并按大小排序**:列出`work_area/docs`目录下的所有文件,并按文件大小降序排列。 + + ~~~js + ls -laS + ~~~ + + + +8. **删除所有文件**:删除`work_area/docs`目录下所有文件。 + + ~~~js + rm -f * + ~~~ + + + +9. **删除目录**:假设您不再需要`work_area/project_b`目录及其所有内容,请递归地强制删除它。 + + ~~~js + rm -r project_b + ~~~ + + + +10. **清理空目录**:清理`work_area`目录,删除其中所有的空目录(注意:不要删除非空的目录)。 + + ~~~js + rm -d work_area/ + ~~~ + + + +11. **创建别名**:回到您的家目录,并创建一个别名`llh`,该别名能够列出当前目录下文件和目录的长格式列表,并以人类可读的格式显示文件大小(类似于`ls -lh`命令)。 + +~~~js +vim .bashrc +alias llh='ls -lh' +~~~ + +#### 笔记 + +##### ls 列出当前目录下的文件和目录 + +ls /home/ #列出指定目录的文件和目录 + +ls -d 文件夹 #列出文件夹本身的信息 + +ls -a 列出当前目录下的所有文件和目录,包括隐藏文件/目录 + +ls -l 以长格式列出当前目录下的文件 + +ls -h 以易读的方式列出当前目录下的文件和目录 + + ls -t 根据修改时间排序列出当前目录下的文件和目录 + +ls -r 反向排序列出当前目录下的文件和目录 + +ls -S 根据文件大小排序列出当前目录下的文件和目录 + +ls -R 递归列出当前目录及其子目录下的所有文件和目录 + +ls --color 以不同颜色区分不同类型的文件,例如蓝色表示目录、绿色表示可执行文件等 + +##### cd + +cd - 返回上次所在目录 + +##### pwd 显示当前工作目录的绝对路径 + +dir1 = $(pwd) # 将当前工作目录路径保存到变量中(在Shell脚本中常用) + +echo $dir1 + +##### mkdir 创建新目录 + +mkdir -p 创建多个目录 + +mkdir -m 权限模式 目录名 + +mkdir -p /tmp/新目录 创建临时目录,不长期保留,与用户文件隔离,避免暴露用户 + +##### rm + +rmdir 只能删除空的目录 + +rm -i 文件名 删除指定的文件,删除前会询问是否删除(y 确认,n 取消) + +rm -f 文件名 强制删除指定的文件 + +rm -f a.txt b.txt 同时删除多个文件 + +rm -f a* 删除所有以 a 开头的文件 + +rm -f .* 删除隐藏文件 + +rm -r 目录名 递归地删除目录及其子目录和文件 + +rm -d 目录名 只删除空目录 \ No newline at end of file