diff --git "a/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240522-\344\275\234\344\270\232.md" "b/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240522-\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..0722830b27d08647e2da6fe67108926689fcf704 --- /dev/null +++ "b/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240522-\344\275\234\344\270\232.md" @@ -0,0 +1,67 @@ +## 作业 + +### 题目 + + 假设您刚刚登录到一个Linux系统,并位于您的家目录(`~`)下。您需要完成以下一系列复杂的操作来组织和清理您的文件和目录。请按照顺序执行,并给出相应的命令。 + + 1. **创建测试文件**:在家目录下创建三个文本文件,分别命名为`.hidden.txt`(隐藏文件)、`visible1.txt`和`visible2.txt`。 + 2. **列出文件和目录**:列出家目录(`~`)下的所有文件和目录,包括隐藏文件,并查看其详细权限和属性。 + 3. **创建工作区**:创建一个新的目录`work_area`,并在其中创建三个子目录:`project_a`、`project_b`和`docs`。 + 4. **移动文本文件**:将家目录下的所有`.txt`文件移动到`work_area/docs`目录中,并确保这些文件在移动后仍然是隐藏的(如果它们是隐藏的)。 + 5. **创建新文件**:在`work_area/project_a`目录下创建一个新的文本文件`notes.txt`,并添加一些内容(例如:`echo "Initial notes for project A" > work_area/project_a/notes.txt`)。 + 6. **复制目录**:递归地复制`work_area/project_a`目录到`work_area/project_b`,并命名为`project_a_backup`。 + 7. **列出文件并按大小排序**:列出`work_area/docs`目录下的所有文件,并按文件大小降序排列。 + 8. **删除所有文件**:删除`work_area/docs`目录下所有文件。 + 9. **删除目录**:假设您不再需要`work_area/project_b`目录及其所有内容,请递归地强制删除它。 + 10. **清理空目录**:清理`work_area`目录,删除其中所有的空目录(注意:不要删除非空的目录)。 + 11. **创建别名**:回到您的家目录,并创建一个别名`llh`,该别名能够列出当前目录下文件和目录的长格式列表,并以人类可读的格式显示文件大小(类似于`ls -lh`命令)。 + + +### 创建测试文件: + + touch ~/.hidden.txt + touch visible1.txt + touch visible2.txt + +### 列出文件和目录: + + ls -la + +### 创建工作区: + + mkdir work_area + mkdir work_area/project_a + mkdir work_area/project_b + mkdir work_area/docs + +### 移动文本文件: + + mv *.txt work_area/docs/ + +### 创建新文件: + + echo "Initial notes for project A" > work_area/project_a/notes.txt + +### 复制目录: + + cp -r work_area/project_a work_area/project_b/project_a_backup + +### 列出文件并按大小排序: + + ls -lhS work_area/docs + +### 删除所有文件: + + rm work_area/docs/* + +### 删除目录: + + rm -rf work_area/project_b + +### 清理空目录: + + find work_area -type d -empty -delete + +### 创建别名: + + alias llh='ls -lh' \ No newline at end of file diff --git "a/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240523-\344\275\234\344\270\232(2).md" "b/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240523-\344\275\234\344\270\232(2).md" new file mode 100644 index 0000000000000000000000000000000000000000..42e44edb8e4c87631cc94f476a64f4a1f304cabc --- /dev/null +++ "b/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240523-\344\275\234\344\270\232(2).md" @@ -0,0 +1,106 @@ +## 作业 + + 相关和目录可自行创建后再操作 + +### 1. 在家目录下建立文件exam.c,将文件exam.c拷贝到/tmp这个目录下,并改名为 shiyan.c + + touch ~/exam.c + cp ~/exam.c /tmp/ + mv /tmp/exam.c /tmp/shiyan.c + +### 2. 在任何目录下回到用户主目录? + + cd ~ + +### 3. 用长格式列出/tmp/test目录下所有的文件包括隐藏文件? + + ls -la /tmp/test + 这里的 -l 选项表示使用长格式列出文件信息,-a 选项表示显示所有文件,包括以.开头的隐藏文件。 + +### 4. /tmp/test2目录下,创建5个文件分别是 1.txt 2.txt 3.txt 4.txt 5.txt,压缩这5个文件,压缩包的名字是hailiang.tar + + touch /tmp/test2/1.txt /tmp/test2/2.txt /tmp/test2/3.txt /tmp/test2/4.txt /tmp/test2/5.txt + tar -cvf /tmp/test2/hailiang.tar /tmp/test2/1.txt /tmp/test2/2.txt /tmp/test2/3.txt /tmp/test2/4.txt /tmp/test2/5.txt + +### 5. 当前目录,建立文件 file1.txt 并更名为 file2.txt? + + touch file1.txt && mv file1.txt file2.txt + +### 6. 当前目录,用vim建立文件bbbb.txt 并将用户名的加入其中保存退出? + + +### 7. 将家目录中扩展名为txt、doc和bak的文件全部复制到/tmp/test目录中? + + +### 8. 将文件file1.txt从当前目录移动到家目录的/docs中。 + + mv file1.txt ~/docs + +### 9. 复制文件file2.txt从当前目录到家目录/backup中。 + + cp file2.txt ~/backup + +### 10. 将家目录/docs中的所有文件和子目录移动到家目录/archive中。 + + cd ~/docs + tar -czvf ../archive/docs_backup.tar.gz . + 备份当前目录下的所有内容 + + cd .. + mv docs archive/ + 移动所有文件和子目录到 archive 目录 + + cd archive + ls + 确认文件和子目录是否已移动 + +### 11. 复制家目录/photos及其所有内容到家目录/backup中。 + + cd ~ + cp -r photos backup/ + +### 12. 将文件家目录/docs/report.doc移动到家目录/papers中,并将其重命名为final_report.doc。 + + cd ~ + mv docs/report.doc papers/final_report.doc + +### 13. 在家目录/docs中创建一个名为notes.txt的空文件,并将其复制到目录家目录/backup中。 + + cd ~/docs + touch notes.txt + cp notes.txt ~/backup + +### 14. 复制家目录/images中所有以.jpg结尾的文件到家目录/photos中。 + + cp ~/images/*.jpg ~/photos + +### 15. 将文件家目录/docs/file1.txt和家目录/docs/file2.txt复制到家目录/backup中。 + + cp ~/docs/file1.txt ~/backup/ + cp ~/docs/file2.txt ~/backup/ + +### 16. 将家目录/docs中的所有.txt文件复制到家目录/text_files中。 + + cp ~/docs/*.txt ~/text_files/ + +### 17. 将家目录/docs中的所有文件移动到家目录/temp中,并且如果文件已存在,则覆盖它们。 + + mv -f ~/docs/* ~/temp/ + +### 18. 将家目录/docs中的所有文件移动到家目录/archive中,并且在移动时显示详细的移动信息。 + + mv -v ~/docs/* ~/archive/ + +### 19. 复制家目录/docs中的所有子目录及其内容到家目录/backup中。 + + cp -rv ~/docs/* ~/backup/ + +### 20. 将家目录/docs中的所有文件和子目录移动到家目录/backup中,但排除文件名以"temp_"开头的文件。 + + mv ~/docs/!(*temp_*) ~/backup/ + +### 21. 将目录/docs/report.txt移动到家目录/archive中,但如果目标目录中已存在同名文件,则不直接覆盖,先备份同名文件为report.txt_bak。 + + mv ~/archive/report.txt ~/archive/report.txt_bak + +### 22. 将家目录/docs中所有以.pdf结尾的文件复制到家目录/pdf_files中,并且如果目标目录中已存在同名文件,则忽略它们。 \ No newline at end of file diff --git "a/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240523-\344\275\234\344\270\232.md" "b/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240523-\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..1993be18a000c5cad121eb546c543216a5701c85 --- /dev/null +++ "b/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/20240523-\344\275\234\344\270\232.md" @@ -0,0 +1,81 @@ +## 作业 + +相关和目录可自行创建后再操作 + +### 练习题 1:复制文件 + + 假设你有两个目录:`/home/user/docs` 和 `/home/user/backup`。 + + 1. 将`/home/user/docs`目录下的`file1.txt`复制到`/home/user/backup`目录下。 + + cp /home/user/docs/file1.txt /home/user/backup/ + + 2. 复制`/home/user/docs`目录下的所有`.txt`文件到`/home/user/backup`目录下。 + + cp /home/user/docs/*.txt /home/user/backup/ + + +### 练习题 2:复制文件夹及其内容 + + 1. 假设`/home/user/photos`是一个包含多个图片文件夹的目录,请复制整个`/home/user/photos`目录及其所有内容到`/home/user/archive`目录下。 + + mkdir -p /home/user/archive + + cp -r /home/user/photos /home/user/archive/ + + +### 练习题 3:移动文件 + + 1. 将`/home/user/docs`目录下的`file2.docx`移动到`/home/user/papers`目录下。 + + mv -i /home/user/docs/file2.docx /home/user/papers/ + + 2. 如果`/home/user/papers`目录下已经有一个名为`file2.docx`的文件,请确保移动操作会询问你是否要覆盖它。 + + mv: overwrite '/home/user/papers/file2.docx'? + + +### 练习题 4:重命名文件 + + 1. 将`/home/user/docs`目录下的`oldname.pdf`重命名为`newname.pdf`。 + + mv /home/user/docs/oldname.pdf /home/user/docs/newname.pdf + + +### 练习题 5:结合使用 + + 1. 复制`/home/user/docs`目录下的`report.md`到`/home/user/temp`,然后将复制过去的文件重命名为`temp_report.md`。 + + cp /home/user/docs/report.md /home/user/temp + mv /home/user/temp/report.md /home/user/temp/temp_report.md + + 2. 将`/home/user/docs`目录下所有以`.doc`结尾的文件移动到`/home/user/processed`,并且如果这些文件在目标目录中已经存在,则不覆盖它们。 + + find /home/user/docs -type f -name "*.doc" -exec mv {} /home/user/processed \\; -o ! -name "*.doc" -exec mv {} /home/user/processed \\; + (使用 find 命令找到 /home/user/docs 下所有以 .doc 结尾的文件(-type f 表示文件,-name "*.doc" 搜索 .doc 文件),然后使用 -exec 选项执行 mv 命令将它们移动到 /home/user/processed 目录。-o 表示或,! -name "*.doc" 用于排除已经存在于目标目录的 .doc 文件,这样就不会覆盖它们。) + + +### 练习题 6:使用通配符 + + 1. 复制`/home/user/docs`目录下所有以`.jpg`或`.png`结尾的图片文件到`/home/user/images`目录。 + + cp /home/user/docs/*.jpg /home/user/images/ + cp /home/user/docs/*.png /home/user/images/ + + +### 练习题 7:详细输出 + + 1. 使用`cp`命令复制文件时,显示详细的复制信息。 + + cp -v /path/to/source /path/to/destination + + 2. 使用`mv`命令移动文件时,显示详细的移动信息。 + + mv -v /path/to/source /path/to/destination + + +### 练习题 8:更新文件 + + 1. 如果`/home/user/backup`目录中已经有一个与`/home/user/docs`目录下的`file1.txt`同名的文件,并且`/home/user/docs/file1.txt`的内容是更新的,请使用`cp`命令将更新的文件复制到备份目录,并覆盖旧文件(假设你知道旧文件可以被安全地覆盖)。 + + cp -f /home/user/docs/file1.txt /home/user/backup/file1.txt diff --git "a/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/\346\226\207\344\273\266\345\244\271\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206\347\232\204\351\242\204\344\271\240\344\275\234\344\270\232.md" "b/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/\346\226\207\344\273\266\345\244\271\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206\347\232\204\351\242\204\344\271\240\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..b6c5a6ed2bbee7b0f55efd8912a94dbba95783c9 --- /dev/null +++ "b/\347\216\213\346\226\260\346\272\220/\344\275\234\344\270\232/\346\226\207\344\273\266\345\244\271\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206\347\232\204\351\242\204\344\271\240\344\275\234\344\270\232.md" @@ -0,0 +1,52 @@ +## 作业 + +### 1. 在个人文档目录下创建学习资料文件夹,并进入 + + mkdir -p ~/文档/学习资料 + cd ~/文档/学习资料 + +### 2. 在学习资料文件夹中创建计算机科学文件夹 + + mkdir 计算机科学 + +### 3. 在计算机科学文件夹中创建课程资料和编程项目文件夹 + + mkdir 计算机科学/课程资料 + mkdir 计算机科学/编程项目 + +### 4. 将课件文件放入课程资料文件夹 + cp /path/to/CS101_第一讲.pdf 计算机科学/课程资料/ + +### 5. 在编程项目文件夹中创建Java项目文件夹 + + mkdir 计算机科学/编程项目/Java项目 + +### 6. 在Java项目文件夹中创建两个空文件 + + touch 计算机科学/编程项目/Java项目/主程序.java + touch 计算机科学/编程项目/Java项目/工具类.java + +### 7. 复制主程序.java文件 + + cp 计算机科学/编程项目/Java项目/主程序.java 计算机科学/编程项目/Java项目/备份_主程序.java + +### 8. 创建Python项目文件夹,并将工具类.java移动到Python项目文件夹中 + + mkdir Python项目 + mv 计算机科学/编程项目/Java项目/工具类.java Python项目/ + +### 9. 列出计算机科学文件夹的内容 + + ls 计算机科学 + +### 10. 删除编程项目文件夹及其内容 + + rm -rf 计算机科学/编程项目 + +### 11. 重命名Python项目为数据分析项目 + + mv Python项目 数据分析项目 + +### 12. 列出当前目录路径 + + pwd \ No newline at end of file diff --git "a/\347\216\213\346\226\260\346\272\220/20240515-Linux\345\237\272\347\241\200.md" "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240515-Linux\345\237\272\347\241\200.md" similarity index 100% rename from "\347\216\213\346\226\260\346\272\220/20240515-Linux\345\237\272\347\241\200.md" rename to "\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240515-Linux\345\237\272\347\241\200.md" diff --git "a/\347\216\213\346\226\260\346\272\220/20240516-Linux\345\237\272\347\241\200(2).md" "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240516-Linux\345\237\272\347\241\200(2).md" similarity index 100% rename from "\347\216\213\346\226\260\346\272\220/20240516-Linux\345\237\272\347\241\200(2).md" rename to "\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240516-Linux\345\237\272\347\241\200(2).md" diff --git "a/\347\216\213\346\226\260\346\272\220/20240518-Linux\345\237\272\347\241\200(3)..md" "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240518-Linux\345\237\272\347\241\200(3)..md" similarity index 100% rename from "\347\216\213\346\226\260\346\272\220/20240518-Linux\345\237\272\347\241\200(3)..md" rename to "\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240518-Linux\345\237\272\347\241\200(3)..md" diff --git "a/\347\216\213\346\226\260\346\272\220/20240520-Linux\345\237\272\347\241\200(4).md" "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240520-Linux\345\237\272\347\241\200(4).md" similarity index 98% rename from "\347\216\213\346\226\260\346\272\220/20240520-Linux\345\237\272\347\241\200(4).md" rename to "\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240520-Linux\345\237\272\347\241\200(4).md" index fe9a4e200c05fee5970f693af65d817c2ee04c93..69ea9e9622b090bd1729fc5a89ef156d847c74cc 100644 --- "a/\347\216\213\346\226\260\346\272\220/20240520-Linux\345\237\272\347\241\200(4).md" +++ "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240520-Linux\345\237\272\347\241\200(4).md" @@ -45,4 +45,5 @@ gzip 只负责压缩,和解压缩,所以通常和tar一起使用,gzip作为tar一个-z参数存在 - tar -cvzf 打包后的文件名.tar 被打包的目录或文件名 ,打包且压缩 \ No newline at end of file + tar -cvzf 打包后的文件名.tar 被打包的目录或文件名 ,打包且压缩 + diff --git "a/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240522-Linux\346\243\200\346\237\245(5).md" "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240522-Linux\346\243\200\346\237\245(5).md" new file mode 100644 index 0000000000000000000000000000000000000000..6e5ad32d98bf278d3a7c508e89fead591cc8d030 --- /dev/null +++ "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240522-Linux\346\243\200\346\237\245(5).md" @@ -0,0 +1,92 @@ +## Linux基础 + +## 文件及文件夹管理 + +### ls:列出目录内容。 + + ls #列出当前目录下的文件和目录 + ls /home/user #列出指定目录下的文件和目录 + ls -d 文件夹A # 列出文件夹A本身的信息,而不是其它下面的目录和内容 + ls -a # all 列出当前目录下的所有文件和目录,包括隐藏文件/目录 + ls -l #以长格式列出当前目录下的文件和目录,包括权限、所有者、组、大小、创建日期等信息 + ls -h # 以易读的方式列出当前目录下的文件和目录,将文件大小以KB、MB\GB等单位表示 + ls -t # t->time 根据修改时间排序列出当前目录下的文件和目录 + ls -r # r -> reverse 反向排序列出当前目录下的文件和目录 + ls -S # S -> Size 根据文件大小排序列出当前目录下的文件和目录 + ls -R # 递归列出当前目录及其子目录下的所有文件和目录 + ls --color # --color(英文全拼:colorize 给着色 ) + # 以不同颜色区分不同类型的文件,例如蓝色表示目录、绿色表示可执行文件等。 + + ## 扩展如何修改环境变量 家目录下的自己的文件下,使用ls -a 显示所有文件,即可看到.bashrc这个环境变量的配置文件。将# alias ll='ls -l' 前的#号删除,并保存文件。最后要生效,就要退出帐号一次,再登录,即可使用ll来代替ls -l + alias la='ls -a' + alias l='ls -CF' + +### cd:改变当前目录。 + + 进入某个目录:cd 目录名 + 返回上一级目录:cd .. + 返回家目录:cd ~ 或者 cd (啥也不跟): /home/用户名 + 返回上次所在目录:cd - + +### pwd:显示当前工作目录的绝对路径。 + + pwd # 显示当前工作目录的绝对路径 + dir1 = $(pwd) # 将当前工作目录路径保存到变量中(在Shell脚本中常用) + echo $dir1 + +### mkdir:创建新目录。 + + 示例:mkdir 目录名 + #场景:在当前位置创建一个新的目录 + mkdir 目录名 # 创建一个新目录 + + mkdir 路径/目录名 # 在指定路径下创建目录 + + #场景:在创建目录的同时,如果父目录不存在,则一并创建父目录。 + mkdir -p 父目录/新目录 # 创建多个目录,包括父目录(如果不存在) + # 通常在写脚本的时候,为避免已存在,或不存在某目录后续命令无法继续执行,在mkdir的时候,会加-p选项 + + #场景:创建一个具有特定权限的目录,可以用于设置目录的读写执行权限。 + mkdir -m 权限模式 目录名 # 创建具有特定权限的目录 + # mkdir -m 777 mydir + #场景:需要一个文件夹 + mkdir -p /tmp/新目录 # 创建临时目录,不长期保留,与用户文件隔离,避免暴露用户 + +### rmdir:删除空目录。 + + 示例:rmdir 目录名 ,只能删除空的目录 + +### rm:删除文件或目录。 + + # ------------------- 删除文件 ------------------- + rm -i 文件名 # 删除指定的文件,删除前会询问是否删除(y 确认,n 取消)。 + rm -f 文件名 # 强制删除指定的文件,不会进行询问。 + rm -f a.txt b.txt # 同时删除多个文件:可以在命令中添加多个文件名,用空格分隔,如 。 + rm -f a* # 删除所有以 a 开头的文件 ;删除以特定字符或模式开头的文件:使用通配符* 。 + rm -f .* # 删除隐藏文件:使用 .*,如 (但请注意,这可能会删除当前目录下的所有隐藏文件,包括 . 和 ..,所以请谨慎使用)。 + ## 扩展 + mv example.txt .example.txt # 隐藏文件 + mv mydir .mydir # 隐藏目录 + + # ------------------- 删除目录 ------------------- + rmdir 目录名 # 仅删除空的目录。 + rm -r 目录名 # 递归地删除目录及其子目录和文件,删除前会询问是否删除。 + rm -rf 目录名 # 递归地强制删除目录及其子目录和文件,不会进行询问。 + rm -rfv 目录名 # 除了递归强制删除外,还会显示删除的详细步骤。 + rm -d 目录名 # 只删除空目录(与 rmdir 命令类似)。 + +### touch:创建空文件或者更改文件访问和修改时间。 + + - 示例:`touch 文件名` + +### chmod:修改文件或目录权限。 + + - 示例:`chmod 权限值 文件名` + +### chown:改变文件或目录的所有者。 + + - 示例:`chown 用户名 文件名` + +### chgrp:改变文件或目录的所属组。 + + - 示例:`chgrp 组名 文件名` \ No newline at end of file diff --git "a/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240523-Linux\345\237\272\347\241\200(6).md" "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240523-Linux\345\237\272\347\241\200(6).md" new file mode 100644 index 0000000000000000000000000000000000000000..70e2b502a7968efed8814b58465d2ad3dd6351db --- /dev/null +++ "b/\347\216\213\346\226\260\346\272\220/\347\254\224\350\256\260/20240523-Linux\345\237\272\347\241\200(6).md" @@ -0,0 +1,148 @@ +## Linux基础 + +## 文件及文件夹管理 + +### cp:复制文件或目录。 + + - 复制文件:`cp 源文件 目标文件` + - 复制文件到目录: cp 源文件 目标目录 + - 复制目录:`cp -r 源目录 目标目录` + +#### 1. 复制单个文件: + + cp source_file destination_file + + + 例如,将 `example.txt` 复制到 `new_example.txt`: + + cp example.txt new_example.txt + + +#### 2. 复制文件到目录: + + cp source_file destination_directory/ + + 例如,将 `example.txt` 复制到 `target_dir` 目录: + + cp example.txt target_dir/ + + +#### 3. 递归复制目录: + + 使用 `-r` 或 `-R` 选项可以递归地复制目录及其内容。 + + cp -r source_directory destination_directory/ + + 例如,将 `source_dir` 目录及其内容复制到 `target_dir`: + + cp -r source_dir target_dir/ + + +#### 交互式复制: + + 使用 `-i` 选项,在覆盖已存在的文件前会提示用户确认。 + + cp -i source_file destination_file + + +#### 5. 保留文件属性: + + 使用 `-p` 选项可以保留原文件的属性(如时间戳、权限等)。 + + cp -p source_file destination_file + + +#### 6. 显示复制进度: + + 使用 `-v` 选项可以显示详细的复制进度信息。 + + cp -v source_file destination_file + +#### 7. 仅当源文件较新时复制: + + 使用 `-u` 选项可以仅当源文件比目标文件新时才进行复制。 + + cp -u source_file destination_file + + +#### 8. 强制复制: + + 使用 `-f` 或 `--force` 选项可以强制复制,即使目标文件已存在也不提示,直接覆盖。 + + cp -f source_file destination_file + +#### 9. 批量复制文件: + + 可以使用通配符(如 `*`)来批量复制文件。 + + cp *.txt destination_directory/ + + 这将复制当前目录下所有 `.txt` 结尾的文件到 `destination_directory` 目录。 + +### mv:移动文件或目录,也可用于重命名文件或目录。 + + - 移动文件或目录:`mv 源目录/文件 目标目录` + - 重命名文件或目录:`mv 原文件名 新文件名` + +#### 1. 移动文件或目录: + + 将文件从一个目录移动到另一个目录: + + mv source_file destination_directory/ + + 移动目录:与移动文件类似,但目录的末尾不应有斜杠(/),除非目标位置是一个已经存在的目录。 + + mv source_directory destination_directory/ + + 注意:如果目标目录不存在,`mv` 命令会将其视为要重命名的文件名,这可能会导致意外的结果。 + +#### 2. 重命名文件或目录: + + 重命名文件: + + mv old_name.txt new_name.txt + + 重命名目录: + + mv old_directory_name new_directory_name + + +#### 3. 移动并重命名文件: + + + 可以在一次操作中既移动又重命名文件。 + + mv source_directory/old_name.txt destination_directory/new_name.txt + + +#### 4. 使用通配符移动多个文件: + + + 可以使用通配符(如 `*`)来匹配多个文件,并将它们移动到目标目录。 + + mv *.txt destination_directory/ + + 这将移动当前目录下所有 `.txt` 结尾的文件到 `destination_directory` 目录。 + +#### 5. 交互式操作: + + + 使用 `-i` 选项,`mv` 命令会在移动或重命名文件前进行确认,以避免意外覆盖文件。 + + mv -i source_file destination_file + + 当目标位置已经存在同名文件时,系统会提示你是否要覆盖。 + +#### 6. 显示详细信息: + + + 使用 `-v` 选项,`mv` 命令会显示详细的操作信息,包括移动或重命名的文件名。 + + mv -v source_file destination_file + + +#### 7. 覆盖文件前先备份: + + 使用 `-b` 选项,`mv` 命令会在覆盖文件之前对其进行备份。 + + mv -b source_file destination_file \ No newline at end of file