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 \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 命令类似)。 +``` +