diff --git "a/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0522 \344\275\234\344\270\232\343\200\202.md" "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0522 \344\275\234\344\270\232\343\200\202.md" new file mode 100644 index 0000000000000000000000000000000000000000..890cef81103f55fa26a8ec7ee7b867b547041e34 --- /dev/null +++ "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0522 \344\275\234\344\270\232\343\200\202.md" @@ -0,0 +1,158 @@ +假设您刚刚登录到一个Linux系统,并位于您的家目录(`~`)下。您需要完成以下一系列复杂的操作来组织和清理您的文件和目录。请按照顺序执行,并给出相应的命令。 + +1. **创建测试文件**:在家目录下创建三个文本文件,分别命名为`.hidden.txt`(隐藏文件)、`visible1.txt`和`visible2.txt`。 + + ```bash + db2@hecs-284676:~$ mkdir .hidden.txt + db2@hecs-284676:~$ mkdir visible1.txt && mkdir visible2.txt + db2@hecs-284676:~$ ls -a + . 11 .bash_logout .config .profile visible1.txt 学习资料 + .. .bash_history .bashrc .hidden.txt .viminfo visible2.txt + + ``` + + +2. **列出文件和目录**:列出家目录(`~`)下的所有文件和目录,包括隐藏文件,并查看其详细权限和属性。 + + ```bash + db2@hecs-284676:~$ ll -a 相当于ls -la + total 56 + drwxr-xr-x 8 db2 db2 4096 May 22 22:15 . + drwxr-xr-x 3 root root 4096 May 20 17:07 .. + drwxr-xr-x 3 db2 db2 4096 May 20 17:22 11 + -rw------- 1 db2 db2 5836 May 22 11:42 .bash_history + -rw-r--r-- 1 db2 db2 220 Aug 5 2021 .bash_logout + -rw-r--r-- 1 db2 db2 3523 May 22 11:18 .bashrc + drwx------ 3 db2 db2 4096 May 20 17:10 .config + drwxr-xr-x 2 db2 db2 4096 May 22 22:14 .hidden.txt + -rw-r--r-- 1 db2 db2 807 Aug 5 2021 .profile + -rw------- 1 db2 db2 1185 May 22 11:18 .viminfo + drwxr-xr-x 2 db2 db2 4096 May 22 22:15 visible1.txt + drwxr-xr-x 2 db2 db2 4096 May 22 22:15 visible2.txt + drwxr-xr-x 3 db2 db2 4096 May 22 11:24 学习资料 + + ``` + + +3. **创建工作区**:创建一个新的目录`work_area`,并在其中创建三个子目录:`project_a`、`project_b`和`docs`。 + + ```bash + db2@hecs-284676:~$ mkdir work_area + db2@hecs-284676:~$ ls + 11 visible1.txt visible2.txt work_area 学习资料 + db2@hecs-284676:~$ cd work_area/ + db2@hecs-284676:~/work_area$ mkdir project_a && mkdir project_b && mkdir docs + db2@hecs-284676:~/work_area$ ls + docs project_a project_b + + ``` + + +4. **移动文本文件**:将家目录下的所有`.txt`文件移动到`work_area/docs`目录中,并确保这些文件在移动后仍然是隐藏的(如果它们是隐藏的)。 + + ```bash + db2@hecs-284676:~$ mv /home/db2/*.txt /home/db2/work_area/docs/ + db2@hecs-284676:~$ cd work_area/docs/ + db2@hecs-284676:~/work_area/docs$ ls + visible1.txt visible2.txt + db2@hecs-284676:~/work_area/docs$ ls -a + . .. visible1.txt visible2.txt + db2@hecs-284676:~$ mv .hidden.txt/ /home/db2/work_area/docs/ + db2@hecs-284676:~/work_area/docs$ ls -a + . .. .hidden.txt visible1.txt visible2.txt + + ``` + + +5. **创建新文件**:在`work_area/project_a`目录下创建一个新的文本文件`notes.txt`,并添加一些内容(例如:`echo "Initial notes for project A" > work_area/project_a/notes.txt`)。 + + ```bash + db2@hecs-284676:~/work_area/project_a/notes.txt$ echo "Initial notes for project A" > notes.txt + db2@hecs-284676:~/work_area/project_a/notes.txt$ ls + notes.txt + db2@hecs-284676:~/work_area/project_a/notes.txt$ cat notes.txt + Initial notes for project A + + ``` + + +6. **复制目录**:递归地复制`work_area/project_a`目录到`work_area/project_b`,并命名为`project_a_backup`。 + + ```bash + db2@hecs-284676:~/work_area$ cp -r project_a project_b + db2@hecs-284676:~/work_area$ cd project_b + db2@hecs-284676:~/work_area/project_b$ mv project_a project_a_backup + db2@hecs-284676:~/work_area/project_b$ ls + project_a_backup + ``` + + +7. **列出文件并按大小排序**:列出`work_area/docs`目录下的所有文件,并按文件大小降序排列。 + + ```bash + db2@hecs-284676:~$ ls -RS work_area/docs/ + work_area/docs/: + visible1.txt visible2.txt + + work_area/docs/visible1.txt: + + work_area/docs/visible2.txt: + + ``` + + +8. **删除所有文件**:删除`work_area/docs`目录下所有文件。 + + ```bash + db2@hecs-284676:~$ rm -r work_area/docs/ + db2@hecs-284676:~$ ls + 11 work_area 学习资料 + db2@hecs-284676:~$ cd work_area/ + db2@hecs-284676:~/work_area$ ls + project_a project_b + + ``` + + +9. **删除目录**:假设您不再需要`work_area/project_b`目录及其所有内容,请递归地强制删除它。 + + ```bash + db2@hecs-284676:~/work_area$ rm -rf project_b + db2@hecs-284676:~/work_area$ ls + project_a + + ``` + + +10. **清理空目录**:清理`work_area`目录,删除其中所有的空目录(注意:不要删除非空的目录)。 + + ```bash + db2@hecs-284676:~$ rm -d work_area/ + + ``` + + +11. **创建别名**:回到您的家目录,并创建一个别名`llh`,该别名能够列出当前目录下文件和目录的长格式列表,并以人类可读的格式显示文件大小(类似于`ls -lh`命令)。 + + ```bash + db2@hecs-284676:~$ alias llh='ls -lh' + db2@hecs-284676:~$ ll -h + total 12K + drwxr-xr-x 3 db2 db2 4.0K May 20 17:22 11 + drwxr-xr-x 3 db2 db2 4.0K May 22 22:56 work_area + drwxr-xr-x 3 db2 db2 4.0K May 22 11:24 学习资料 + db2@hecs-284676:~$ llh + total 12K + drwxr-xr-x 3 db2 db2 4.0K May 20 17:22 11 + drwxr-xr-x 3 db2 db2 4.0K May 22 22:56 work_area + drwxr-xr-x 3 db2 db2 4.0K May 22 11:24 学习资料 + + ``` + + ls -l ll + + ls -h + + ll -h + + llh \ No newline at end of file diff --git "a/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0523 \344\275\234\344\270\232.md" "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0523 \344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..44cca9873d026373e71f6b7ba2874d6751c8a5c7 --- /dev/null +++ "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0523 \344\275\234\344\270\232.md" @@ -0,0 +1,549 @@ +相关和目录可自行创建后再操作 + +1. 在家目录下建立文件exam.c,将文件exam.c拷贝到/tmp这个目录下,并改名为 shiyan.c + + ```bash + db2@hecs-284676:~$ mkdir exam.c + db2@hecs-284676:~$ mkdir tmp + db2@hecs-284676:~$ ls + exam.c tmp + db2@hecs-284676:~$ cp -r exam.c ./tmp/ + db2@hecs-284676:~/tmp$ mv ./exam.c shiyan.c + + ``` + + +2. 在任何目录下回到用户主目录? + + ```bash + db2@hecs-284676:~/tmp$ cd + 用 cd 或者 cd ~ + ``` + + +3. 用长格式列出/tmp/test目录下所有的文件包括隐藏文件? + + ```bash + db2@hecs-284676:~/tmp$ mkdir test + db2@hecs-284676:~/tmp$ ls -a ./test + . .. + + ``` + + +4. /tmp/test2目录下,创建5个文件分别是 1.txt 2.txt 3.txt 4.txt 5.txt,压缩这5个文件,压缩包的名字是hailiang.tar + + ```bash + db2@hecs-284676:~/tmp$ mkdir test2 + db2@hecs-284676:~/tmp$ ls + shiyan.c test test2 + db2@hecs-284676:~/tmp$ cd test2 + db2@hecs-284676:~/tmp/test2$ ls + db2@hecs-284676:~/tmp/test2$ touch 1.txt 2.txt 3.txt 4.txt 5.txt + db2@hecs-284676:~/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt + db2@hecs-284676:~/tmp/test2$ tree + . + ├── 1.txt + ├── 2.txt + ├── 3.txt + ├── 4.txt + └── 5.txt + + 0 directories, 5 files + db2@hecs-284676:~/tmp/test2$ tar -czvf hailiang.tar ./ + ./ + ./3.txt + ./4.txt + ./1.txt + ./5.txt + ./2.txt + db2@hecs-284676:~/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt hailiang.tar + + ``` + + +5. 当前目录,建立文件 file1.txt 并更名为 file2.txt? + + ```bash + db2@hecs-284676:~/tmp/test2$ touch file1.txt + db2@hecs-284676:~/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt file1.txt hailiang.tar + db2@hecs-284676:~/tmp/test2$ mv ./file1.txt file2.txt + db2@hecs-284676:~/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt file2.txt hailiang.tar + + ``` + + +6. 当前目录,用vim建立文件bbbb.txt 并将用户名的加入其中保存退出? + + ```bash + db2@hecs-284676:~/tmp/test2$ vim bbbb.txt + db2@hecs-284676:~/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt bbbb.txt file2.txt hailiang.tar + db2@hecs-284676:~/tmp/test2$ cat bbbb.txt + bbbbb + + ``` + + +7. 将家目录中扩展名为txt、doc和bak的文件全部复制到/tmp/test目录中? + + ```bash + db2@hecs-284676:~$ ls + exam.c tmp + db2@hecs-284676:~$ touch ~/ss.txt + db2@hecs-284676:~$ ls + exam.c ss.txt tmp + db2@hecs-284676:~$ touch ~/ss.doc + db2@hecs-284676:~$ touch ~/ss.bak + db2@hecs-284676:~$ ls + exam.c ss.bak ss.doc ss.txt tmp + db2@hecs-284676:~$ cp ~/*.txt ~/*.doc ~/*.bak tmp/test/ + db2@hecs-284676:~$ tree + . + ├── exam.c + ├── ss.bak + ├── ss.doc + ├── ss.txt + └── tmp + ├── shiyan.c + ├── test + │   ├── ss.bak + │   ├── ss.doc + │   └── ss.txt + └── test2 + ├── 1.txt + ├── 2.txt + ├── 3.txt + ├── 4.txt + ├── 5.txt + ├── bbbb.txt + ├── file2.txt + └── hailiang.tar + + 5 directories, 14 files + + ``` + + +8. 将文件file1.txt从当前目录移动到家目录的/docs中。 + + ```bash + db2@hecs-284676:~$ mkdir ~/docs + db2@hecs-284676:~$ ls + docs exam.c ss.bak ss.doc ss.txt tmp + db2@hecs-284676:~$ cd docs + db2@hecs-284676:~/docs$ ls + db2@hecs-284676:~/docs$ mv ../tmp/test2/file2.txt ./ + db2@hecs-284676:~/docs$ ls + file2.txt + + ``` + + +9. 复制文件file2.txt从当前目录到家目录/backup中。 + + ```bash + db2@hecs-284676:~/docs$ cp file2.txt ../tmp/test2 + + ``` + + +10. 将家目录/docs中的所有文件和子目录移动到家目录/archive中。 + + ```bash + db2@hecs-284676:~$ cd docs/ + db2@hecs-284676:~/docs$ mkdir -p 11/22 + db2@hecs-284676:~/docs$ ls + 11 file2.txt + db2@hecs-284676:~/docs$ tree + . + ├── 11 + │   └── 22 + └── file2.txt + + 2 directories, 1 file + + db2@hecs-284676:~/docs$ mv ./* ../archive + db2@hecs-284676:~$ tree + . + ├── archive + │   ├── 11 + │   │   └── 22 + │   └── file2.txt + ├── backup + ├── docs + ├── exam.c + ├── ss.bak + ├── ss.doc + ├── ss.txt + └── tmp + ├── shiyan.c + ├── test + │   ├── ss.bak + │   ├── ss.doc + │   └── ss.txt + └── test2 + ├── 1.txt + ├── 2.txt + ├── 3.txt + ├── 4.txt + ├── 5.txt + ├── bbbb.txt + ├── file2.txt + └── hailiang.tar + + 10 directories, 15 files + + ``` + + +11. 复制家目录/photos及其所有内容到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ cd photos/ + db2@hecs-284676:~/photos$ ls + ee.txt kk.txt + db2@hecs-284676:~/photos$ cp ./* ../backup/ + db2@hecs-284676:~/photos$ cd + db2@hecs-284676:~$ tree + . + ├── archive + │   ├── 11 + │   │   └── 22 + │   └── file2.txt + ├── backup + │   ├── ee.txt + │   └── kk.txt + ├── docs + ├── exam.c + ├── photos + │   ├── ee.txt + │   └── kk.txt + ├── ss.bak + ├── ss.doc + ├── ss.txt + └── tmp + ├── shiyan.c + ├── test + │   ├── ss.bak + │   ├── ss.doc + │   └── ss.txt + └── test2 + ├── 1.txt + ├── 2.txt + ├── 3.txt + ├── 4.txt + ├── 5.txt + ├── bbbb.txt + ├── file2.txt + └── hailiang.tar + + 11 directories, 19 files + + ``` + + +12. 将文件家目录/docs/report.doc移动到家目录/papers中,并将其重命名为final_report.doc。 + + ```bash + db2@hecs-284676:~/docs$ touch report.doc + db2@hecs-284676:~/docs$ ls + report.doc + db2@hecs-284676:~$ mkdir papers + db2@hecs-284676:~$ cd docs/ + db2@hecs-284676:~/docs$ mv ./report.doc ../papers/final_report.doc + db2@hecs-284676:~$ tree + . + ├── archive + │   ├── 11 + │   │   └── 22 + │   └── file2.txt + ├── backup + │   ├── ee.txt + │   └── kk.txt + ├── docs + ├── exam.c + ├── papers + │   └── final_report.doc + ├── photos + │   ├── ee.txt + │   └── kk.txt + ├── ss.bak + ├── ss.doc + ├── ss.txt + └── tmp + ├── shiyan.c + ├── test + │   ├── ss.bak + │   ├── ss.doc + │   └── ss.txt + └── test2 + ├── 1.txt + ├── 2.txt + ├── 3.txt + ├── 4.txt + ├── 5.txt + ├── bbbb.txt + ├── file2.txt + └── hailiang.tar + + 12 directories, 20 files + + ``` + + +13. 在家目录/docs中创建一个名为notes.txt的空文件,并将其复制到目录家目录/backup中。 + + ```bash + db2@hecs-284676:~/docs$ touch notes.txt + db2@hecs-284676:~/docs$ ls + notes.txt + db2@hecs-284676:~/docs$ cp ./notes.txt ../backup/ + db2@hecs-284676:~/docs$ ls ../backup/ + ee.txt kk.txt notes.txt + + ``` + + +14. 复制家目录/images中所有以.jpg结尾的文件到家目录/photos中。 + + ```bash + 在客户端上传图片: + C:\Users\xxp12> scp D:\微信图片_20240307220706.jpg db2@60.204.249.58:/home/db2 + db2@60.204.249.58's password: + 微信图片_20240307220706.jpg 100% 272KB 1.5MB/s 00:00 + + C:\Users\xxp12> scp D:\微信图片_20240307220737.jpg db2@60.204.249.58:/home/db2 + db2@60.204.249.58's password: + 微信图片_20240307220737.jpg 100% 75KB 840.9KB/s 00:00 + db2@hecs-284676:~$ ls + archive docs images photos ss.doc tmp 微信图片_20240307220737.jpg + backup exam.c papers ss.bak ss.txt 微信图片_20240307220706.jpg + db2@hecs-284676:~$ mv ./*.jpg images/ + db2@hecs-284676:~$ tree + . + ├── archive + │   ├── 11 + │   │   └── 22 + │   └── file2.txt + ├── backup + │   ├── ee.txt + │   ├── kk.txt + │   └── notes.txt + ├── docs + │   └── notes.txt + ├── exam.c + ├── images + │   ├── 微信图片_20240307220706.jpg + │   └── 微信图片_20240307220737.jpg + ├── papers + │   └── final_report.doc + ├── photos + │   ├── ee.txt + │   └── kk.txt + ├── ss.bak + ├── ss.doc + ├── ss.txt + └── tmp + ├── shiyan.c + ├── test + │   ├── ss.bak + │   ├── ss.doc + │   └── ss.txt + └── test2 + ├── 1.txt + ├── 2.txt + ├── 3.txt + ├── 4.txt + ├── 5.txt + ├── bbbb.txt + ├── file2.txt + └── hailiang.tar + + 13 directories, 24 files + db2@hecs-284676:~$ cd images/ + db2@hecs-284676:~/images$ cp ./*.jpg ../photos/ + db2@hecs-284676:~/images$ cd + db2@hecs-284676:~$ tree + . + ├── archive + │   ├── 11 + │   │   └── 22 + │   └── file2.txt + ├── backup + │   ├── ee.txt + │   ├── kk.txt + │   └── notes.txt + ├── docs + │   └── notes.txt + ├── exam.c + ├── images + │   ├── 微信图片_20240307220706.jpg + │   └── 微信图片_20240307220737.jpg + ├── papers + │   └── final_report.doc + ├── photos + │   ├── ee.txt + │   ├── kk.txt + │   ├── 微信图片_20240307220706.jpg + │   └── 微信图片_20240307220737.jpg + ├── ss.bak + ├── ss.doc + ├── ss.txt + └── tmp + ├── shiyan.c + ├── test + │   ├── ss.bak + │   ├── ss.doc + │   └── ss.txt + └── test2 + ├── 1.txt + ├── 2.txt + ├── 3.txt + ├── 4.txt + ├── 5.txt + ├── bbbb.txt + ├── file2.txt + └── hailiang.tar + + 13 directories, 26 files + + ``` + + +15. 将文件家目录/docs/file1.txt和家目录/docs/file2.txt复制到家目录/backup中。 + + ```bash + db2@hecs-284676:~/docs$ touch file1.txt file2.txt + db2@hecs-284676:~/docs$ ls + file1.txt file2.txt notes.txt + db2@hecs-284676:~/docs$ cp ./file1.txt file2.txt ../backup/ + db2@hecs-284676:~/docs$ ls + file1.txt file2.txt notes.txt + db2@hecs-284676:~/docs$ cd ../backup/ + db2@hecs-284676:~/backup$ ls + ee.txt file1.txt file2.txt kk.txt notes.txt + + ``` + + +16. 将家目录/docs中的所有.txt文件复制到家目录/text_files中。 + + ```bash + db2@hecs-284676:~/docs$ ls + file1.txt file2.txt notes.txt + db2@hecs-284676:~/docs$ cp ./*.txt ../text_files/ + db2@hecs-284676:~/docs$ cd ../text_files/ + db2@hecs-284676:~/text_files$ ls + file1.txt file2.txt notes.txt + + ``` + + +17. 将家目录/docs中的所有文件移动到家目录/temp中,并且如果文件已存在,则覆盖它们。 + + ```bash + db2@hecs-284676:~$ mkdir temp + db2@hecs-284676:~$ cd temp + db2@hecs-284676:~/temp$ echo 3333 > file1.txt + db2@hecs-284676:~/temp$ ls + file1.txt + db2@hecs-284676:~/temp$ cat file1.txt + 3333 + db2@hecs-284676:~/temp$ cd ../docs/ + db2@hecs-284676:~/docs$ ls + file1.txt file2.txt notes.txt + db2@hecs-284676:~/docs$ echo 444 > file1.txt + db2@hecs-284676:~/docs$ cat file1.txt + 444 + db2@hecs-284676:~/docs$ mv ./* ../temp/ + db2@hecs-284676:~$ cd temp/ + db2@hecs-284676:~/temp$ ls + file1.txt file2.txt notes.txt + db2@hecs-284676:~/temp$ cat file1.txt + 444 + + ``` + + +18. 将家目录/docs中的所有文件移动到家目录/archive中,并且在移动时显示详细的移动信息。 + + ```bash + db2@hecs-284676:~$ cd docs/ + db2@hecs-284676:~/docs$ ls + db2@hecs-284676:~/docs$ touch 12.txt + db2@hecs-284676:~/docs$ touch 22.txt + db2@hecs-284676:~/docs$ touch 33.txt + db2@hecs-284676:~/docs$ ls + 12.txt 22.txt 33.txt + db2@hecs-284676:~/docs$ mv -v ./* ../archive/ + renamed './12.txt' -> '../archive/12.txt' + renamed './22.txt' -> '../archive/22.txt' + renamed './33.txt' -> '../archive/33.txt' + + ``` + + +19. 复制家目录/docs中的所有子目录及其内容到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ cd docs/ + db2@hecs-284676:~/docs$ mkdir -p jkl/kkl/cc + db2@hecs-284676:~/docs$ cp -r ./* ../backup/ + db2@hecs-284676:~$ tree + . + ├── archive + │   ├── 11 + │   │   └── 22 + │   ├── 12.txt + │   ├── 22.txt + │   ├── 33.txt + │   └── file2.txt + ├── backup + │   ├── ee.txt + │   ├── file1.txt + │   ├── file2.txt + │   ├── jkl + │   │   └── kkl + │   │   └── cc + │   ├── kk.txt + │   └── notes.txt + ├── docs + │   └── jkl + │   └── kkl + │   └── cc + ├── exam.c + + ``` + + +20. 将家目录/docs中的所有文件和子目录移动到家目录/backup中,但排除文件名以"temp_"开头的文件。 + + ```bash + + ``` + + +21. 将目录/docs/report.txt移动到家目录/archive中,但如果目标目录中已存在同名文件,则不直接覆盖,先备份同名文件为report.txt_bak。 + + ```bash + + ``` + + +22. 将家目录/docs中所有以.pdf结尾的文件复制到家目录/pdf_files中,并且如果目标目录中已存在同名文件,则忽略它们。 + + ```bash + db2@hecs-284676:~/docs$ touch kk.pdf jj.pdf + db2@hecs-284676:~/docs$ ls + jj.pdf jkl kk.pdf ni report.txt temp_yyk + db2@hecs-284676:~$ mkdir pdf_files + db2@hecs-284676:~/docs$ cp ./*.pdf ../pdf_files/ + + ``` + + \ No newline at end of file diff --git "a/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0523 \347\273\203\344\271\240.md" "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0523 \347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..89ededfb8151035e545c759eb6e3a22ac8079512 --- /dev/null +++ "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0523 \347\273\203\344\271\240.md" @@ -0,0 +1,324 @@ +相关和目录可自行创建后再操作 + +### 练习题 1:复制文件 + +假设你有两个目录:`/home/user/docs` 和 `/home/user/backup`。 + +1. 将`/home/user/docs`目录下的`file1.txt`复制到`/home/user/backup`目录下。 +2. 复制`/home/user/docs`目录下的所有`.txt`文件到`/home/user/backup`目录下。 + + ```bash + db2@hecs-284676:~$ mkdir user + db2@hecs-284676:~$ ls + user + db2@hecs-284676:~$ cd user/ + db2@hecs-284676:~/user$ mkdir docs backup + db2@hecs-284676:~/user$ ls + backup docs + db2@hecs-284676:~/user$ cd docs/ + db2@hecs-284676:~/user/docs$ touch file1.txt + db2@hecs-284676:~/user/docs$ ls + file1.txt + db2@hecs-284676:~/user/docs$ cp file1.txt ../backup/ + db2@hecs-284676:~/user/docs$ cd + db2@hecs-284676:~$ tree + . + └── user + ├── backup + │   └── file1.txt + └── docs + └── file1.txt + + 3 directories, 2 files + + db2@hecs-284676:~/user/docs$ cp ./*.txt ../backup/ + ``` + + + +### 练习题 2:复制文件夹及其内容 + +1. 假设`/home/user/photos`是一个包含多个图片文件夹的目录,请复制整个`/home/user/photos`目录及其所有内容到`/home/user/archive`目录下。 + + ```bash + db2@hecs-284676:~$ cd user/ + db2@hecs-284676:~/user$ mkdir photos archive + db2@hecs-284676:~/user$ ls + archive backup docs papers photos + db2@hecs-284676:~/user$ cp -r ./photos/ archive/ + + + ``` + + + +### 练习题 3:移动文件 + +1. 将`/home/user/docs`目录下的`file2.docx`移动到`/home/user/papers`目录下。 +2. 如果`/home/user/papers`目录下已经有一个名为`file2.docx`的文件,请确保移动操作会询问你是否要覆盖它。 + + ```bash + db2@hecs-284676:~/user/docs$ ls + file1.txt file2.docx + db2@hecs-284676:~/user/docs$ mkdir ../papers + db2@hecs-284676:~/user/docs$ cd ../ + db2@hecs-284676:~/user$ ls + backup docs papers + db2@hecs-284676:~/user$ cd - + /home/db2/user/docs + db2@hecs-284676:~/user/docs$ ls + file1.txt file2.docx + db2@hecs-284676:~/user/docs$ mv ./file2.docx ../papers/ + db2@hecs-284676:~/user/docs$ cd ../ + db2@hecs-284676:~/user$ cd papers/ + db2@hecs-284676:~/user/papers$ ls + file2.docx + db2@hecs-284676:~/user/papers$ cd + db2@hecs-284676:~$ tree + . + └── user + ├── backup + │   └── file1.txt + ├── docs + │   └── file1.txt + └── papers + └── file2.docx + + 4 directories, 3 files + + db2@hecs-284676:~/user/docs$ touch file2.docx + db2@hecs-284676:~/user/docs$ ls + file1.txt file2.docx + db2@hecs-284676:~/user/docs$ echo 111 > ./file2.docx + db2@hecs-284676:~/user/docs$ cat file2.docx + 111 + db2@hecs-284676:~/user/docs$ cd ../papers/ + db2@hecs-284676:~/user/papers$ ls + file2.docx + db2@hecs-284676:~/user/papers$ echo 222 > ./file2.docx + db2@hecs-284676:~/user/papers$ cat file2.docx + 222 + db2@hecs-284676:~/user/papers$ mv -i ./file2.docx ../docs/ + mv: overwrite '../docs/file2.docx'? y + db2@hecs-284676:~/user/papers$ ls + db2@hecs-284676:~/user/papers$ cd ../docs/ + db2@hecs-284676:~/user/docs$ ls + file1.txt file2.docx + db2@hecs-284676:~/user/docs$ cat file2.docx + 222 + + ``` + + + +### 练习题 4:重命名文件 + +1. 将`/home/user/docs`目录下的`oldname.pdf`重命名为`newname.pdf`。 + + ```bash + db2@hecs-284676:~/user$ cd ./docs/ + db2@hecs-284676:~/user/docs$ ls + file1.txt file2.docx + db2@hecs-284676:~/user/docs$ touch oldname.pdf + db2@hecs-284676:~/user/docs$ ls + file1.txt file2.docx oldname.pdf + db2@hecs-284676:~/user/docs$ mv oldname.pdf newname.pdf + db2@hecs-284676:~/user/docs$ ls + file1.txt file2.docx newname.pdf + + ``` + + + +### 练习题 5:结合使用 + +1. 复制`/home/user/docs`目录下的`report.md`到`/home/user/temp`,然后将复制过去的文件重命名为`temp_report.md`。 +2. 将`/home/user/docs`目录下所有以`.doc`结尾的文件移动到`/home/user/processed`,并且如果这些文件在目标目录中已经存在,则不覆盖它们。 + + ```bash + db2@hecs-284676:~/user/docs$ touch report.md + db2@hecs-284676:~/user/docs$ ls + file1.txt file2.docx newname.pdf report.md + db2@hecs-284676:~/user/docs$ mkdir ../temp + db2@hecs-284676:~/user/docs$ cd .. + db2@hecs-284676:~/user$ ls + archive backup docs papers photos temp + db2@hecs-284676:~/user$ tree + . + ├── archive + │   └── photos + ├── backup + │   └── file1.txt + ├── docs + │   ├── file1.txt + │   ├── file2.docx + │   ├── newname.pdf + │   └── report.md + ├── papers + ├── photos + └── temp + + 7 directories, 5 files + db2@hecs-284676:~/user$ cp ./docs/report.md ./temp/temp_report.md + db2@hecs-284676:~/user$ tree + . + ├── archive + │   └── photos + ├── backup + │   └── file1.txt + ├── docs + │   ├── file1.txt + │   ├── file2.docx + │   ├── newname.pdf + │   └── report.md + ├── papers + ├── photos + └── temp + └── temp_report.md + + 7 directories, 6 files + + db2@hecs-284676:~/user/docs$ touch 1.doc 2.doc + db2@hecs-284676:~/user/docs$ ls + 1.doc 2.doc file1.txt file2.docx newname.pdf report.md + db2@hecs-284676:~/user/docs$ cd 1.doc + -bash: cd: 1.doc: Not a directory + db2@hecs-284676:~/user/docs$ cd 1.doc + -bash: cd: 1.doc: Not a directory + db2@hecs-284676:~/user/docs$ ls + 1.doc 2.doc file1.txt file2.docx newname.pdf report.md + db2@hecs-284676:~/user/docs$ tree + . + ├── 1.doc + ├── 2.doc + ├── file1.txt + ├── file2.docx + ├── newname.pdf + └── report.md + + 0 directories, 6 files + db2@hecs-284676:~/user/docs$ echo 100 > ./1.doc + db2@hecs-284676:~/user/docs$ cat 1.doc + 100 + db2@hecs-284676:~/user/docs$ cd ../processed/ + db2@hecs-284676:~/user/processed$ ls + db2@hecs-284676:~/user/processed$ touch 1.doc + db2@hecs-284676:~/user/processed$ touch 3.doc + db2@hecs-284676:~/user/processed$ ls + 1.doc 3.doc + db2@hecs-284676:~/user/processed$ echo 90 > ./1.doc + db2@hecs-284676:~/user/processed$ cat ./1.doc + 90 + db2@hecs-284676:~/user/processed$ mv -u ../docs/*.doc ./ + db2@hecs-284676:~/user/processed$ ls + 1.doc 2.doc 3.doc + db2@hecs-284676:~/user/processed$ cat ./1.doc + 90 + + ``` + + + +### 练习题 6:使用通配符 + +1. 复制`/home/user/docs`目录下所有以`.jpg`或`.png`结尾的图片文件到`/home/user/images`目录。 + + ```bash + 在客户端上用scp上传图片到服务端 + db2@hecs-284676:~$ ls + user 微信图片_20240307220706.jpg 微信图片_20240307220737.jpg 目标与实现.png + db2@hecs-284676:~$ cd user/ + db2@hecs-284676:~/user$ cd ./docs/ + db2@hecs-284676:~/user/docs$ ls + 1.doc file1.txt file2.docx newname.pdf report.md + db2@hecs-284676:~/user/docs$ mv ../../*.jpg ./ + db2@hecs-284676:~/user/docs$ ls + 1.doc file1.txt file2.docx newname.pdf report.md 微信图片_20240307220706.jpg 微信图片_20240307220737.jpg + db2@hecs-284676:~/user/docs$ mv ../../*.png ./ + db2@hecs-284676:~/user/docs$ ls + 1.doc file2.docx report.md 微信图片_20240307220737.jpg + file1.txt newname.pdf 微信图片_20240307220706.jpg 目标与实现.png + db2@hecs-284676:~/user/docs$ mkdir ../images + db2@hecs-284676:~/user/docs$ cp ./*jpg ../images/ + db2@hecs-284676:~/user/docs$ ls + 1.doc file2.docx report.md 微信图片_20240307220737.jpg + file1.txt newname.pdf 微信图片_20240307220706.jpg 目标与实现.png + db2@hecs-284676:~/user/docs$ cp ./*png ../images/ + db2@hecs-284676:~/user/docs$ cd ../images/ + db2@hecs-284676:~/user/images$ ls + 微信图片_20240307220706.jpg 微信图片_20240307220737.jpg 目标与实现.png + db2@hecs-284676:~/user/images$ + + ``` + + + +### 练习题 7:详细输出 + +1. 使用`cp`命令复制文件时,显示详细的复制信息。 +2. 使用`mv`命令移动文件时,显示详细的移动信息。 + + ```bash + db2@hecs-284676:~$ cd user/processed/ + db2@hecs-284676:~/user/processed$ ls + 1.doc 2.doc 3.doc + db2@hecs-284676:~/user/processed$ cp -v ./1.doc ../photos/ + './1.doc' -> '../photos/1.doc' + db2@hecs-284676:~/user/processed$ ls ../photos/ + 1.doc + + db2@hecs-284676:~/user/processed$ mv -v ./2.doc ../photos/ + renamed './2.doc' -> '../photos/2.doc' + db2@hecs-284676:~/user/processed$ ls ../photos/ + 1.doc 2.doc + + ``` + + + +### 练习题 8:更新文件 + +1. 如果`/home/user/backup`目录中已经有一个与`/home/user/docs`目录下的`file1.txt`同名的文件,并且`/home/user/docs/file1.txt`的内容是更新的,请使用`cp`命令将更新的文件复制到备份目录,并覆盖旧文件(假设你知道旧文件可以被安全地覆盖)。 + + ```bash + db2@hecs-284676:~/user/docs$ echo 33 > ./file1.txt + db2@hecs-284676:~/user/docs$ cat file1.txt + 33 + db2@hecs-284676:~/user/docs$ cp -b ./file1.txt ../backup/ + db2@hecs-284676:~/user/docs$ cd + db2@hecs-284676:~$ tree + . + └── user + ├── archive + │   └── photos + ├── backup + │   ├── file1.txt + │   └── file1.txt~ + ├── docs + │   ├── 1.doc + │   ├── file1.txt + │   ├── file2.docx + │   ├── newname.pdf + │   ├── report.md + │   ├── 微信图片_20240307220706.jpg + │   ├── 微信图片_20240307220737.jpg + │   └── 目标与实现.png + ├── images + │   ├── 微信图片_20240307220706.jpg + │   ├── 微信图片_20240307220737.jpg + │   └── 目标与实现.png + ├── papers + ├── photos + │   ├── 1.doc + │   └── 2.doc + ├── processed + │   ├── 1.doc + │   └── 3.doc + └── temp + └── temp_report.md + + 10 directories, 18 files + + ``` + + \ No newline at end of file diff --git "a/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0525 \347\233\270\345\257\271\350\267\257\345\276\204\344\275\234\344\270\232.md" "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0525 \347\233\270\345\257\271\350\267\257\345\276\204\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..ae1775d9b67027958600acdc66adb936eae2f84a --- /dev/null +++ "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0525 \347\233\270\345\257\271\350\267\257\345\276\204\344\275\234\344\270\232.md" @@ -0,0 +1,270 @@ +相关和目录可自行创建后再操作 + +1. 在家目录下建立文件exam.c,将文件exam.c拷贝到/tmp这个目录下,并改名为 shiyan.c + + ```bash + db2@hecs-284676:~$ touch exam.c + db2@hecs-284676:~$ cp ./exam.c ../../tmp/shiyan.c + + ``` + +2. 在任何目录下回到用户主目录? + + ```bash + db2@hecs-284676:/tmp$ cd + ``` + +3. 用长格式列出/tmp/test目录下所有的文件包括隐藏文件? + + ```bash + db2@hecs-284676:/tmp$ ls -alh ./test + total 8.0K + drwxr-xr-x 2 db2 db2 4.0K May 26 20:36 . + drwxrwxrwt 13 root root 4.0K May 26 20:36 .. + + ``` + +4. /tmp/test2目录下,创建5个文件分别是 1.txt 2.txt 3.txt 4.txt 5.txt,压缩这5个文件,压缩包的名字是hailiang.tar + + ```bash + db2@hecs-284676:/tmp/test2$ tar -czvf hailiang.tar.gz ./*.txt + ./1.txt + ./2.txt + ./3.txt + ./4.txt + ./5.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt hailiang.tar.gz + + + ``` + +5. 当前目录,建立文件 file1.txt 并更名为 file2.txt? + + ```bash + + db2@hecs-284676:/tmp/test2$ touch file1.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt file1.txt hailiang.tar.gz + db2@hecs-284676:/tmp/test2$ mv file1.txt file2.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt file2.txt hailiang.tar.gz + + ``` + +6. 当前目录,用vim建立文件bbbb.txt 并将用户名的加入其中保存退出? + + ```bash + db2@hecs-284676:/tmp/test2$ vim bbbb.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt bbbb.txt file2.txt hailiang.tar.gz + + ``` + +7. 将家目录中扩展名为txt、doc和bak的文件全部复制到/tmp/test目录中? + + ```bash + db2@hecs-284676:~$ cp -r ./*.txt ./*.doc ./*.bak ../../tmp/test + db2@hecs-284676:~$ tree ../../tmp/test + ../../tmp/test + ├── 1.txt + ├── 2.doc + ├── 2.txt + ├── 3.bak + ├── 3.txt + ├── 4.txt + ├── 5.txt + └── ee.txt + + 3 directories, 5 files + + + ``` + +8. 将文件file1.txt从当前目录移动到家目录的/docs中。 + + ```bash + db2@hecs-284676:/tmp/test$ touch file1.txt + db2@hecs-284676:/tmp/test$ mv ./file1.txt ~/docs/ + + ``` + +9. 复制文件file2.txt从当前目录到家目录/backup中。 + + ```bash + db2@hecs-284676:/tmp/test$ touch file2.txt + db2@hecs-284676:/tmp/test$ cp ./file2.txt ~/backup/ + + + ``` + +10. 将家目录/docs中的所有文件和子目录移动到家目录/archive中。 + + ```bash + db2@hecs-284676:~$ mv ./docs/* ./archive/ + + ``` + +11. 复制家目录/photos及其所有内容到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ cp -r ./photos/ ./backup/ + db2@hecs-284676:~$ tree backup/ + backup/ + ├── 112 + ├── 333 + │   └── 444 + │   └── ddd + ├── dd.txt + ├── file1.txt + ├── file2.txt + ├── notes.txt + └── photos + ├── 22 + ├── 2.jpg + ├── 33 + ├── 4.jpg + └── 5.jpg + + + ``` + +12. 将文件家目录/docs/report.doc移动到家目录/papers中,并将其重命名为final_report.doc。 + + ```bash + db2@hecs-284676:~$ mv ./docs/report.doc ./papers/finals_report.doc + db2@hecs-284676:~$ tree papers/ + papers/ + ├── 22 + ├── 33 + ├── final_report.doc + └── finals_report.doc + + + ``` + +13. 在家目录/docs中创建一个名为notes.txt的空文件,并将其复制到目录家目录/backup中。 + + ```bash + db2@hecs-284676:~$ touch ./docs/notes.txt + db2@hecs-284676:~$ cp -r ./docs/notes.txt ./backup/ + + ``` + +14. 复制家目录/images中所有以.jpg结尾的文件到家目录/photos中。 + + ```bash + db2@hecs-284676:~$ cp -r ./images/*.jpg ./photos/ + + ``` + +15. 将文件家目录/docs/000.txt和家目录/docs/999.txt复制到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ touch ./docs/000.txt ./docs/999.txt + db2@hecs-284676:~$ tree ./docs/ + ./docs/ + ├── 000.txt + ├── 999.txt + └── notes.txt + + 0 directories, 3 files + db2@hecs-284676:~$ cp -r ./docs/000.txt ./docs/999.txt ./backup/ + + ``` + +16. 将家目录/docs中的所有.txt文件复制到家目录/text_files中。 + + ```bash + db2@hecs-284676:~$ cp -r ./docs/*.txt ./text_files/ + db2@hecs-284676:~$ tree text_files/ + text_files/ + ├── 000.txt + ├── 999.txt + ├── file1.txt + ├── file2.txt + └── notes.txt + + 2 directories, 3 files + + ``` + +17. 将家目录/docs中的所有文件移动到家目录/temp中,并且如果文件已存在,则覆盖它们。 + + ```bash + db2@hecs-284676:~$ mv ./docs/* ./temp/ + db2@hecs-284676:~$ cd temp + db2@hecs-284676:~/temp$ ls + 000.txt 2.txt 999.txt file1.txt file2.txt notes.txt + + + ``` + +18. 将家目录/docs中的所有文件移动到家目录/archive中,并且在移动时显示详细的移动信息。 + + ```bash + db2@hecs-284676:~$ mv -v ./docs/* ./archive/ + ``` + +19. 复制家目录/docs中的所有子目录及其内容到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ cp -r ./docs/* ./backup/ + + ``` + +20. 将家目录/docs中的所有文件和子目录移动到家目录/backup中,但排除文件名以"temp_"开头的文件。 +21. 将目录/docs/report.txt移动到家目录/archive中,但如果目标目录中已存在同名文件,则不直接覆盖,先备份同名文件为report.txt_bak。 + + ```bash + db2@hecs-284676:~/archive$ echo "你真可爱" > 444 + db2@hecs-284676:~/archive$ cat 444 + 你真可爱 + db2@hecs-284676:~/archive$ cd + db2@hecs-284676:~$ echo "我是你" > ./docs/444 + db2@hecs-284676:~$ cat ./docs/444 + 我是你 + db2@hecs-284676:~$ mv -bS _bak ./docs/444 ./archive/ + db2@hecs-284676:~$ tree archive/ + archive/ + ├── 112 + ├── 1.pdf + ├── 2 + │   └── 3 + │   └── 4 + ├── 2.pdf + ├── 333 + │   └── 444 + │   └── ddd + ├── 444 + ├── 444_bak + ├── file1.txt + ├── report.txt + └── report.txt_bak + + 7 directories, 7 files + db2@hecs-284676:~$ cat ./archive/444 + 我是你 + + + + ``` + +22. 将家目录/docs中所有以.pdf结尾的文件复制到家目录/pdf_files中,并且如果目标目录中已存在同名文件,则忽略它们。 + + ```bash + db2@hecs-284676:~$ touch ./docs/3j.pdf + db2@hecs-284676:~$ cp -r ./docs/3j.pdf ./pdf_files/ + db2@hecs-284676:~$ tree pdf_files/ + pdf_files/ + ├── 1.pdf + ├── 2.pdf + └── 3j.pdf + + 0 directories, 3 files + + + ``` + + + diff --git "a/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0525 \347\273\235\345\257\271\350\267\257\345\276\204\344\275\234\344\270\232.md" "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0525 \347\273\235\345\257\271\350\267\257\345\276\204\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..c1abf8a4b57ddbb097683f3a2dd00ef62ac5b471 --- /dev/null +++ "b/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 0525 \347\273\235\345\257\271\350\267\257\345\276\204\344\275\234\344\270\232.md" @@ -0,0 +1,465 @@ +相关和目录可自行创建后再操作 + +1. 在家目录下建立文件exam.c,将文件exam.c拷贝到/tmp这个目录下,并改名为 shiyan.c + + ```bash + db2@hecs-284676:~$ cp /home/db2/exam.c /tmp/shiyan.c + db2@hecs-284676:~$ cd /tmp/ + db2@hecs-284676:/tmp$ ls + hsperfdata_root + shiyan.c + systemd-private-611ed389fde949628b3051fa325c8c18-chrony.service-H2pUwf + systemd-private-611ed389fde949628b3051fa325c8c18-ModemManager.service-yD2Iij + systemd-private-611ed389fde949628b3051fa325c8c18-systemd-logind.service-CMV8aj + + ``` + + +2. 在任何目录下回到用户主目录? + + ```bash + db2@hecs-284676:/tmp$ cd + ``` + + +3. 用长格式列出/tmp/test目录下所有的文件包括隐藏文件? + + ```bash + db2@hecs-284676:~$ cd /tmp/ + db2@hecs-284676:/tmp$ ls + hsperfdata_root + shiyan.c + systemd-private-611ed389fde949628b3051fa325c8c18-chrony.service-H2pUwf + systemd-private-611ed389fde949628b3051fa325c8c18-ModemManager.service-yD2Iij + systemd-private-611ed389fde949628b3051fa325c8c18-systemd-logind.service-CMV8aj + db2@hecs-284676:/tmp$ mkdir test + db2@hecs-284676:/tmp$ ls + hsperfdata_root + shiyan.c + systemd-private-611ed389fde949628b3051fa325c8c18-chrony.service-H2pUwf + systemd-private-611ed389fde949628b3051fa325c8c18-ModemManager.service-yD2Iij + systemd-private-611ed389fde949628b3051fa325c8c18-systemd-logind.service-CMV8aj + test + db2@hecs-284676:/tmp$ ls -alh /tmp/test/ + total 8.0K + drwxr-xr-x 2 db2 db2 4.0K May 26 19:23 . + drwxrwxrwt 12 root root 4.0K May 26 19:23 .. + + ``` + + +4. /tmp/test2目录下,创建5个文件分别是 1.txt 2.txt 3.txt 4.txt 5.txt,压缩这5个文件,压缩包的名字是hailiang.tar + + ```bash + db2@hecs-284676:/tmp$ cd /tmp/test2 + db2@hecs-284676:/tmp/test2$ touch {1,5}.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 5.txt + db2@hecs-284676:/tmp/test2$ touch 2.txt 3.txt 4.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt + db2@hecs-284676:/tmp/test2$ tar -czvf hailiang.tar.gz /tmp/test2/*.txt + tar: Removing leading `/' from member names + /tmp/test2/1.txt + tar: Removing leading `/' from hard link targets + /tmp/test2/2.txt + /tmp/test2/3.txt + /tmp/test2/4.txt + /tmp/test2/5.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt hailiang.tar.gz + + ``` + + +5. 当前目录,建立文件 file1.txt 并更名为 file2.txt? + + ```bash + db2@hecs-284676:/tmp/test2$ touch file1.txt + db2@hecs-284676:/tmp/test2$ mv file1.txt file2.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt file2.txt hailiang.tar.gz + + ``` + + +6. 当前目录,用vim建立文件bbbb.txt 并将用户名的加入其中保存退出? + + ```bash + db2@hecs-284676:/tmp/test2$ vim bbbb.txt + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt bbbb.txt file2.txt hailiang.tar.gz + + ``` + + +7. 将家目录中扩展名为txt、doc和bak的文件全部复制到/tmp/test目录中? + + ```bash + db2@hecs-284676:~$ cp -r /home/db2/*.txt /home/db2/*.doc /home/db2/*.bak /tmp/test + db2@hecs-284676:~$ cd /tmp/test + db2@hecs-284676:/tmp/test$ ls + 2.doc 3.bak ee.txt + + ``` + + +8. 将文件file1.txt从当前目录移动到家目录的/docs中。 + + ```bash + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt bbbb.txt file1.txt file2.txt hailiang.tar.gz + db2@hecs-284676:/tmp/test2$ mv /tmp/test2/file1.txt /home/db2/docs/ + + ``` + + +9. 复制文件file2.txt从当前目录到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ cd /tmp/test2/ + db2@hecs-284676:/tmp/test2$ ls + 1.txt 2.txt 3.txt 4.txt 5.txt bbbb.txt file2.txt hailiang.tar.gz + db2@hecs-284676:/tmp/test2$ cp file2.txt /home/db2/backup/ + + ``` + + +10. 将家目录/docs中的所有文件和子目录移动到家目录/archive中。 + + ```bash + db2@hecs-284676:~$ cd docs/ + db2@hecs-284676:~/docs$ ls + file1.txt + db2@hecs-284676:~/docs$ mkdir -p 2/3/4 + db2@hecs-284676:~/docs$ ls + 2 file1.txt + db2@hecs-284676:~/docs$ tree + . + ├── 2 + │   └── 3 + │   └── 4 + └── file1.txt + + 3 directories, 1 file + db2@hecs-284676:~/docs$ mv /home/db2/docs/* /home/db2/archive/ + db2@hecs-284676:~/docs$ tree ~ + /home/db2 + ├── 2.doc + ├── 3.bak + ├── archive + │   ├── 2 + │   │   └── 3 + │   │   └── 4 + │   └── file1.txt + ├── backup + │   └── file2.txt + ├── docs + ├── ee.txt + ├── exam.c + ├── images + └── papers + + ``` + + +11. 复制家目录/photos及其所有内容到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ cp -r photos /home/db2/backup/ + + ``` + + +12. 将文件家目录/docs/report.doc移动到家目录/papers中,并将其重命名为final_report.doc。 + + ```bash + db2@hecs-284676:~/docs$ touch report.doc + db2@hecs-284676:~/docs$ mv report.doc /home/db2/papers/final_report.doc + db2@hecs-284676:~/docs$ tree papers + papers [error opening dir] + + 0 directories, 0 files + db2@hecs-284676:~/docs$ tree ~/papers/ + /home/db2/papers/ + ├── 22 + ├── 33 + └── final_report.doc + + + ``` + + +13. 在家目录/docs中创建一个名为notes.txt的空文件,并将其复制到目录家目录/backup中。 + + ```bash + db2@hecs-284676:~/docs$ touch notes.txt + db2@hecs-284676:~/docs$ cp notes.txt /home/db2/backup/ + db2@hecs-284676:~/docs$ tree ~/backup/ + /home/db2/backup/ + ├── file2.txt + ├── notes.txt + └── photos + ├── 22 + └── 33 + + 1 directory, 4 files + ``` + + +14. 复制家目录/images中所有以.jpg结尾的文件到家目录/photos中。 + + ```bash + db2@hecs-284676:~$ cp -r images/*.jpg /home/db2/photos + db2@hecs-284676:~$ tree + . + ├── 2.doc + ├── 3.bak + ├── archive + │   ├── 2 + │   │   └── 3 + │   │   └── 4 + │   └── file1.txt + ├── backup + │   ├── file2.txt + │   ├── notes.txt + │   └── photos + │   ├── 22 + │   └── 33 + ├── docs + │   └── notes.txt + ├── ee.txt + ├── exam.c + ├── images + │   ├── 2.jpg + │   ├── 4.jpg + │   └── 5.jpg + ├── papers + │   ├── 22 + │   ├── 33 + │   └── final_report.doc + └── photos + ├── 22 + ├── 2.jpg + ├── 33 + ├── 4.jpg + └── 5.jpg + + 19 directories, 12 files + + ``` + + +15. 将文件家目录/docs/file1.txt和家目录/docs/file2.txt复制到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ cp -r /home/db2/docs/file1.txt /home/db2/docs/file2.txt /home/db2/backup/ + db2@hecs-284676:~$ tree + . + ├── 2.doc + ├── 3.bak + ├── archive + │   ├── 2 + │   │   └── 3 + │   │   └── 4 + │   └── file1.txt + ├── backup + │   ├── file1.txt + │   ├── file2.txt + │   ├── notes.txt + │   └── photos + │   ├── 22 + │   └── 33 + ├── docs + │   ├── file1.txt + │   ├── file2.txt + │   └── notes.txt + + ``` + + +16. 将家目录/docs中的所有.txt文件复制到家目录/text_files中。 + + ```bash + db2@hecs-284676:~$ cp -r /home/db2/docs/*.txt /home/db2/text_files/ + db2@hecs-284676:~$ tree + . + ├── 2.doc + ├── 3.bak + ├── archive + │   ├── 2 + │   │   └── 3 + │   │   └── 4 + │   └── file1.txt + ├── backup + │   ├── file1.txt + │   ├── file2.txt + │   ├── notes.txt + │   └── photos + │   ├── 22 + │   └── 33 + ├── docs + │   ├── file1.txt + │   ├── file2.txt + │   └── notes.txt + ├── ee.txt + ├── exam.c + ├── images + │   ├── 2.jpg + │   ├── 4.jpg + │   └── 5.jpg + ├── papers + │   ├── 22 + │   ├── 33 + │   └── final_report.doc + ├── photos + │   ├── 22 + │   ├── 2.jpg + │   ├── 33 + │   ├── 4.jpg + │   └── 5.jpg + └── text_files + ├── file1.txt + ├── file2.txt + └── notes.txt + + ``` + + +17. 将家目录/docs中的所有文件移动到家目录/temp中,并且如果文件已存在,则覆盖它们。 + + ```bash + db2@hecs-284676:~$ mv /home/db2/docs/* /home/db2/temp + db2@hecs-284676:~$ tree + . + ├── 2.doc + ├── 3.bak + ├── archive + │   ├── 2 + │   │   └── 3 + │   │   └── 4 + │   └── file1.txt + ├── backup + │   ├── file1.txt + │   ├── file2.txt + │   ├── notes.txt + │   └── photos + │   ├── 22 + │   └── 33 + ├── docs + ├── ee.txt + ├── exam.c + ├── images + │   ├── 2.jpg + │   ├── 4.jpg + │   └── 5.jpg + ├── papers + │   ├── 22 + │   ├── 33 + │   └── final_report.doc + ├── photos + │   ├── 22 + │   ├── 2.jpg + │   ├── 33 + │   ├── 4.jpg + │   └── 5.jpg + ├── temp + │   ├── 2.txt + │   ├── file1.txt + │   ├── file2.txt + │   └── notes.txt + └── text_files + ├── file1.txt + ├── file2.txt + └── notes.txt + + ``` + + +18. 将家目录/docs中的所有文件移动到家目录/archive中,并且在移动时显示详细的移动信息。 + + ```bash + db2@hecs-284676:~$ mv -r /home/db2/docs/* /home/db2/archive + ``` + + +19. 复制家目录/docs中的所有子目录及其内容到家目录/backup中。 + + ```bash + db2@hecs-284676:~$ cp -r /home/db2/docs/* /home/db2/backup/ + db2@hecs-284676:~$ tree + . + ├── 2.doc + ├── 3.bak + ├── archive + │   ├── 2 + │   │   └── 3 + │   │   └── 4 + │   └── file1.txt + ├── backup + │   ├── 112 + │   ├── 333 + │   │   └── 444 + │   │   └── ddd + │   ├── file1.txt + │   ├── file2.txt + │   ├── notes.txt + │   └── photos + │   ├── 22 + │   └── 33 + ├── docs + │   ├── 112 + │   └── 333 + │   └── 444 + │   └── ddd + ├── ee.txt + + ``` + + +20. 将家目录/docs中的所有文件和子目录移动到家目录/backup中,但排除文件名以"temp_"开头的文件。 +21. 将目录/docs/report.txt移动到家目录/archive中,但如果目标目录中已存在同名文件,则不直接覆盖,先备份同名文件为report.txt_bak。 + + ```bash + db2@hecs-284676:~$ mv -bS _bak /home/db2/docs/report.txt /home/db2/archive/ + db2@hecs-284676:~$ tree + . + ├── 2.doc + ├── 3.bak + ├── archive + │   ├── 2 + │   │   └── 3 + │   │   └── 4 + │   ├── file1.txt + │   ├── report.txt + │   └── report.txt_bak + ├── backup + │   ├── 112 + │   ├── 333 + │   │   └── 444 + │   │   └── ddd + │   ├── file1.txt + │   ├── file2.txt + │   ├── notes.txt + │   └── photos + │   ├── 22 + │   └── 33 + ├── docs + │   ├── 112 + │   └── 333 + │   └── 444 + │   └── ddd + ├── ee.txt + + ``` + + +22. 将家目录/docs中所有以.pdf结尾的文件复制到家目录/pdf_files中,并且如果目标目录中已存在同名文件,则忽略它们。 + + ```bash + db2@hecs-284676:~$ cp -r /home/db2/docs/*.pdf /home/db2/pdf_files/ + + ``` + + + diff --git "a/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 \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/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 \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" index 12e035f71db93adcef48aa21a6506b4db714e84b..173655fcdb4c3865a27114aa45b73a2255ce4477 100644 --- "a/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 \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/\350\256\270\351\221\253\345\261\217/\344\275\234\344\270\232/\345\256\236\346\226\2752 \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" @@ -34,9 +34,20 @@ 4. 将你最近的一门计算机科学课程的课件文件(假设文件名为`CS101_第一讲.pdf`)放入`课程资料`文件夹。 ```bash - C:\Users\xxp12>scp D:\目标与实现.png db2@60.204.249.58:/home/db2/学习资料/计算机科学/课程资料 + C:\Users\xxp12>scp D:\目标与实现.png db2@60.204.249.58:/home/db2/学习资料/计算机 科学/课程资料 db2@60.204.249.58's password: 目标与实现.png 100% 51KB 560.2KB/s 00:00 + + db2@hecs-284676:~/学习资料/计算机科学$ mkdir CS101_第一讲.pdf + db2@hecs-284676:~/学习资料/计算机科学$ ls + CS101_第一讲.pdf 编程项目 课程资料 + db2@hecs-284676:~/学习资料/计算机科学$ mv CS101_第一讲.pdf/ 课程资料/ + db2@hecs-284676:~/学习资料/计算机科学$ ls + 编程项目 课程资料 + db2@hecs-284676:~/学习资料/计算机科学$ cd 课程资料/ + db2@hecs-284676:~/学习资料/计算机科学/课程资料$ ls + CS101_第一讲.pdf + ``` @@ -79,8 +90,8 @@ 8. 创建一个名为`Python项目`的文件夹,并将`工具类.java`移动到`Python项目`文件夹中。 ```bash - db2@hecs-284676:~/学习资料/计算机科学/编程项目/java项目$ sudo mv 工具类.java /Python项目 - [sudo] password for db2: + db2@hecs-284676:~/学习资料/计算机科学/编程项目/Java项目$ mv /home/db2/学习资料/计算机科学/编程项目/Java项目/工具类.java ../../Python项目/ + ``` @@ -88,20 +99,50 @@ 9. 列出`计算机科学`文件夹中所有文件和文件夹的内容。 - 10. 删除`编程项目`文件夹及其包含的所有内容。 + ```bash + db2@hecs-284676:~/学习资料/计算机科学$ ls -R + .: + Python项目 编程项目 课程资料 + + ./Python项目: + 工具类.java + + ./编程项目: + Java项目 + + ./编程项目/Java项目: + 主程序.java 备份_主程序.java + + ./课程资料: + CS101_第一讲.pdf + + ./课程资料/CS101_第一讲.pdf: + + ``` - 11. 重命名`Python项目`为`数据分析项目`。 + + + 10. 删除`编程项目`文件夹及其包含的所有内容。 ```bash - db2@hecs-284676:~/学习资料/计算机科学$ cd 编程项目 - db2@hecs-284676:~/学习资料/计算机科学/编程项目$ mv Python项目 数据分析项目 - db2@hecs-284676:~/学习资料/计算机科学/编程项目$ ls - java项目 数据分析项目 + db2@hecs-284676:~/学习资料/计算机科学$ rm -r 编程项目/ + db2@hecs-284676:~/学习资料/计算机科学$ ls + Python项目 课程资料 ``` + 11. 重命名`Python项目`为`数据分析项目`。 + + ```bash + db2@hecs-284676:~/学习资料/计算机科学$ mv Python项目/ 数据分析项目 + db2@hecs-284676:~/学习资料/计算机科学$ ls + 数据分析项目 课程资料 + ``` + + + 12. 最后,列出当前所在目录的路径。 ```bash diff --git "a/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240522-\345\257\271\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\232\204\346\223\215\344\275\234.md" "b/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240522-\345\257\271\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\232\204\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..17551f7bc495a6ac095af8e9e0f78f380280fcaf --- /dev/null +++ "b/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240522-\345\257\271\346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\232\204\346\223\215\344\275\234.md" @@ -0,0 +1,75 @@ +## 对文件及文件夹的操作 + +#### 1、ls 列出当前目录内容 + +```bash +ls /home/user 列出指定路径下的文件和目录 +ls -t /etc 显示本身文件的信息 +ls -a 列出当前目录下的所有文件和目录,包括隐藏文件 +ls -l 以长格式列出当前目录下的文件和目录,包括权限、所有者、组、大小、创建日期等信息 +ls -h 以易读的方式列出当前目录下的文件和目录,将文件大小以KB、MB\GB等单位表示 +ls -t time 根据修改时间排序列出当前目录下的文件和目录 +ls -r reverse 反向排序列出当前目录下的文件和目录 +ls -S Size 根据文件大小排序列出当前目录下的文件和目录 +ls -R 递归列出当前目录及其子目录下的所有文件和目录 +ls --color 以不同颜色区分不同类型的文件,例如蓝色表示目录、绿色表示可执行文件等。 + +如何修改环境变量? +家目录下的自己的文件下,使用ls -a 显示所有文件,即可看到.bashrc这个环境变量的配置文件。将# alias ll='ls -l' 前的#号删除,并保存文件。最后要生效,就要退出帐号一次,再登录,即可使用ll来代替ls -l + alias ll='ls -l' + alias la='ls -a' + alias l='ls -CF' + +``` + +#### 2、cd 改变当前目录 + +```bash +cd 目录名 进入某个目录 +cd .. 返回上一级目录 +cd ~ 或者 cd (啥也不跟): /home/用户名: 返回家目录 +cd - 返回上次所在目录 +``` + +#### 3、pwd + +```bash +pwd # 显示当前工作目录的绝对路径 +dir1 = $(pwd) # 将当前工作目录路径保存到变量中(在Shell脚本中常用) +echo $dir1 +``` + +#### 4、mkdir 创建新目录 + +```bash +mkdir 目录名 # 创建一个新目录 + +mkdir 路径/目录名 # 在指定路径下创建目录 + +mkdir -p 父目录/新目录 # 创建多个目录,包括父目录(如果不存在) + +mkdir -p /tmp/新目录 # 创建临时目录,不长期保留,与用户文件隔离,避免暴露用户 +``` + +#### 5、rmdir 删除空目录 + +#### 6、rm 删除文件或目录 + +```bash +# ------------------- 删除文件 ------------------- +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 命令类似)。 +``` + diff --git "a/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240523-\346\226\207\344\273\266\346\210\226\347\233\256\345\275\225\347\232\204\345\244\215\345\210\266\345\222\214\347\247\273\345\212\250.md" "b/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240523-\346\226\207\344\273\266\346\210\226\347\233\256\345\275\225\347\232\204\345\244\215\345\210\266\345\222\214\347\247\273\345\212\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..fea3bd46148942dd2e285590d58cb1e171a4c531 --- /dev/null +++ "b/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240523-\346\226\207\344\273\266\346\210\226\347\233\256\345\275\225\347\232\204\345\244\215\345\210\266\345\222\214\347\247\273\345\212\250.md" @@ -0,0 +1,112 @@ +## 文件或目录的复制和移动 + +#### 1、 cp 复制单个文件或目录 + +```bash +cp 文件1 路径1/文件1 复制文件 +cp 文件1 路径1/文件2 复制文件并改名 +``` + +1. 递归复制目录 + + ```bash + cp -r 源目录 目标目录 + ``` + + + +2. 复制文件是保留文件属性 + + ```bash + cp -p 源文件 目标文件 + ``` + + + +3. 复制文件时显示复制进度信息 + + ```bash + cp -v 源文件 目标文件 + ``` + + + +4. 复制时,仅当源文件较新时的复制 update + + ```bash + cp -u 源文件 目标文件 + ``` + + + +5. 复制时产生备份文件 ~ + + ```bash + cp -b 源文件 目标文件 + ``` + + + +6. 复制时指定备份文件的尾标 + + ```bash + cp -S 源文件 目标文件 + ``` + + + +7. 强制复制 + + ```bash + cp -f 源文件 目标文件 + ``` + + + +8. 复制以.txt 结尾的所有文件 + + ```bash + cp *.txt 目录 + ``` + + 9.当复制多个文件时,最后一个默认时目录 + +#### 2、mv :移动文件或目录,也可用于重命名 + + - 移动文件或目录:`mv 源目录/文件 目标目录` ,相当于剪切 + - 重命名文件或目录:mv 原文件名 新文件名 + +1. 移动多个文件 参数大于等于3个时: + + - mv 跟了3个参数时,最后一个默认是目录 + +2. 交互式操作: + + ```bash + # 使用 `-i` 选项,`mv` 命令会在移动或重命名文件前进行确认,以避免意外覆盖文件。 + mv -i 1.txt 2.txt # 当2.txt文件已经存在时,系统会提示你是否要覆盖。y 确认,n 取消 + ``` + + + +3. 显示详细信息 + + ```bash + # 使用 `-v` 选项,`mv` 命令会显示详细的操作信息,包括移动或重命名的文件名。 + mv -v 1.txt 2.txt # 重命名1.txt为2.txt并显示详情 + renamed '1.txt' -> '2.txt' # 显示详细 + ``` + + + +4. 覆盖文件前先备份 + + 使用 `-b` 选项,`mv` 命令会在覆盖文件之前对其进行备份。 + + ```bash + mv -b 1.txt 2.txt # 如果2.txt已存在,就先备份2.txt为2.txt~,再次1.txt改成为2.txt + ``` + + + + \ No newline at end of file diff --git "a/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240525-\347\273\235\345\257\271\350\267\257\345\276\204\345\222\214\347\233\270\345\257\271\350\267\257\345\276\204.md" "b/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240525-\347\273\235\345\257\271\350\267\257\345\276\204\345\222\214\347\233\270\345\257\271\350\267\257\345\276\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..e3ea7a143dacb732ffd2f51410cd0c22bb391a77 --- /dev/null +++ "b/\350\256\270\351\221\253\345\261\217/\347\254\224\350\256\260/20240525-\347\273\235\345\257\271\350\267\257\345\276\204\345\222\214\347\233\270\345\257\271\350\267\257\345\276\204.md" @@ -0,0 +1,29 @@ +## 绝对路径和相对路径 + +#### 1、绝对路径 + +定义:从根目录 `/` 开始的完整路径,用于唯一确定文件或目录的位置。 + +特点: + +1. 以 `/` 开头 +2. 与当前工作目录无关 + +示例: + +- /home/user/documents/file.txt +- /user/local/bin + +#### 2、相对路径 + +定义:对于当前工作目录的路径,用于在当前目录的基础上指向文件或目录。 + +特点: + +1. 不以 / 开头 +2. 依赖于当前的工作目录 + +特殊符号: + +- `.` 表示当前目录 ./ +- `..` 表示上一级目录../ \ No newline at end of file