From 220fc886b8b1445a333c4d827726122a4cb8c1ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E9=9B=A8=E6=99=B4?= <2137161545@qq.com> Date: Thu, 23 May 2024 12:54:31 +0800 Subject: [PATCH] =?UTF-8?q?Linux=E5=86=85=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\347\256\241\347\220\206(\344\270\200).md" | 2 + ...\347\256\241\347\220\206(\344\272\214).md" | 199 ++++++++++++++++++ 2 files changed, 201 insertions(+) rename "49 \345\276\220\351\233\250\346\231\264/240521 \346\226\207\344\273\266\345\244\271\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206.md" => "49 \345\276\220\351\233\250\346\231\264/240521 \346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206(\344\270\200).md" (99%) create mode 100644 "49 \345\276\220\351\233\250\346\231\264/240523 \346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206(\344\272\214).md" diff --git "a/49 \345\276\220\351\233\250\346\231\264/240521 \346\226\207\344\273\266\345\244\271\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206.md" "b/49 \345\276\220\351\233\250\346\231\264/240521 \346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206(\344\270\200).md" similarity index 99% rename from "49 \345\276\220\351\233\250\346\231\264/240521 \346\226\207\344\273\266\345\244\271\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206.md" rename to "49 \345\276\220\351\233\250\346\231\264/240521 \346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206(\344\270\200).md" index fa46cf5..b0038f4 100644 --- "a/49 \345\276\220\351\233\250\346\231\264/240521 \346\226\207\344\273\266\345\244\271\345\217\212\346\226\207\344\273\266\347\256\241\347\220\206.md" +++ "b/49 \345\276\220\351\233\250\346\231\264/240521 \346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206(\344\270\200).md" @@ -1,3 +1,5 @@ +## 文件及文件夹管理(一) + ### 一、Linux命令 - 新建用户 diff --git "a/49 \345\276\220\351\233\250\346\231\264/240523 \346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206(\344\272\214).md" "b/49 \345\276\220\351\233\250\346\231\264/240523 \346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206(\344\272\214).md" new file mode 100644 index 0000000..9948059 --- /dev/null +++ "b/49 \345\276\220\351\233\250\346\231\264/240523 \346\226\207\344\273\266\345\217\212\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206(\344\272\214).md" @@ -0,0 +1,199 @@ +## 文件及文件夹管理(二) + +1. **ls**:列出目录内容。 + + ```bash + ls #列出当前目录下的文件和目录 + ls 路径/文件夹A #列出指定目录文件夹A下的文件和目录 + 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' + ``` + +2. **cd**:改变当前目录。 + + - 进入目录:`cd 目录名` + - 返回上级目录:`cd ../` + - 返回家目录:`cd ~` 或者 `cd `: /home/用户名 + - 返回上次所在目录:`cd -` + +3.**pwd**:显示当前工作目录的绝对路径。 + + ```bash +pwd # 显示当前工作目录的绝对路径 +dir1 = $(pwd) # 将当前工作目录路径保存到变量中(在Shell脚本中常用) +echo $dir1 + ``` + +4. **mkdir**:创建新目录。 + + - 示例:`mkdir 目录名` + + ```bash +#场景:在当前位置创建一个新的目录 +mkdir 目录名 # 创建一个新目录 + +mkdir 路径/目录名 # 在指定路径下创建目录 + +#场景:在创建目录的同时,如果父目录不存在,则一并创建父目录。 +mkdir -p 父目录/新目录 # 创建多个目录,包括父目录(如果不存在) +# 通常在写脚本的时候,为避免已存在,或不存在某目录后续命令无法继续执行,在mkdir的时候,会加-p选项 + +#场景:创建一个具有特定权限的目录,可以用于设置目录的读写执行权限。 +mkdir -m 权限模式 目录名 # 创建具有特定权限的目录 + # mkdir -m 777 mydir +#场景:需要一个文件夹 +mkdir -p /tmp/新目录 # 创建临时目录,不长期保留,与用户文件隔离,避免暴露用户 + ``` + +5. **rmdir**:删除空目录。 + + - 示例:`rmdir 目录名` //只能删除空的目录 + +6. **rm**:删除文件或目录。 + + ```bash +# ------------------- 删除文件 ------------------- +rm -i 文件名 # 删除指定的文件,删除前会询问是否删除(y 确认,n 取消)。 +rm -f 文件名 # 强制删除指定的文件,不会进行询问。 +rm -f a.txt b.txt # 同时删除多个文件:可以在命令中添加多个文件名,用空格分隔, + # mkdir,touch等操作也支持一次性操作多个目标。都是用空格隔开 +rm -f a* # 删除所有以 a 开头的文件 ;删除以特定字符或模式开头的文件:使用通配符* 。 +rm -f .* # 删除隐藏文件:使用 .*,如 (但请注意,这可能会删除当前目录下的所有隐藏文件,包括 . 和 ..,所以请谨慎使用)。 +## 扩展 +mv example.txt .example.txt # 隐藏文件 +mv mydir .mydir # 隐藏目录 +# ------------------- 删除目录 ------------------- +rmdir 目录名 # 仅删除空的目录。 +rm -r 目录名 # 递归地删除目录及其子目录和文件,删除前会询问是否删除。 +rm -rf 目录名 # 递归地强制删除目录及其子目录和文件,不会进行询问。 +rm -rfv 目录名 # 除了递归强制删除外,还会显示删除的详细步骤。 +rm -d 目录名 # 只删除空目录(与 rmdir 命令类似)。 + ``` + +假设您刚刚登录到一个Linux系统,并位于您的家目录(`~`)下。您需要完成以下一系列复杂的操作来组织和清理您的文件和目录。请按照顺序执行,并给出相应的命令。 + +1. **创建测试文件**:在家目录下创建三个文本文件,分别命名为`.hidden.txt`(隐藏文件)、`visible1.txt`和`visible2.txt`。 + + ```js + lala@hecs-393504:~$ sudo touch .hidden.txt visible1.txt visible2.txt + lala@hecs-393504:~$ ls -a + . .. development .hidden.txt lala visible1.txt visible2.txt 中国 中国.tar 学习资料 + ``` + +2. **列出文件和目录**:列出家目录(`~`)下的所有文件和目录,包括隐藏文件,并查看其详细权限和属性。 + + ```js + lala@hecs-393504:~$ ls -all + total 32 + drwxr-xr-x 2 lala lala 4096 May 21 17:21 . + drwxr-xr-x 6 root root 4096 May 23 11:44 .. + -rw------- 1 lala lala 4659 May 21 18:29 .bash_history + -rw-r--r-- 1 lala lala 220 Aug 5 2021 .bash_logout + -rw-r--r-- 1 lala lala 3526 Aug 5 2021 .bashrc + -rw-r--r-- 1 lala lala 3511 May 21 17:21 Linux0520作业.md + -rw-r--r-- 1 lala lala 807 Aug 5 2021 .profile + ``` + +3. **创建工作区**:创建一个新的目录`work_area`,并在其中创建三个子目录:`project_a`、`project_b`和`docs`。 + + ```js + lala@hecs-393504:~$ sudo mkdir -p work_area/{project_a,project_b,docs} + lala@hecs-393504:~$ ls + Linux0520作业.md work_area + lala@hecs-393504:~$ cd work_area/ + lala@hecs-393504:~/work_area$ ls -R + .: + docs project_a project_b + + ./docs: + + ./project_a: + + ./project_b: + ``` + +4. **移动文本文件**:将家目录下的所有`.txt`文件移动到`work_area/docs`目录中,并确保这些文件在移动后仍然是隐藏的(如果它们是隐藏的)。 + + ```js + lala@hecs-393504:~$ sudo mv *.txt work_area/docs/ + lala@hecs-393504:~/work_area/docs$ ls + visible1.txt visible2.txt + ``` + +5. **创建新文件**:在`work_area/project_a`目录下创建一个新的文本文件`notes.txt`,并添加一些内容(例如:`echo "Initial notes for project A" > work_area/project_a/notes.txt`)。 + + ```js + lala@hecs-393504:~/work_area/project_a$ sudo vim notes.txt + "Initial notes for project A" > work_area/project_a/notes.txt + lala@hecs-393504:~/work_area/project_a$ ls + notes.txt + ``` + +6. **复制目录**:递归地复制`work_area/project_a`目录到`work_area/project_b`,并命名为`project_a_backup`。 + + ```js + lala@hecs-393504:~/work_area$ sudo cp -r project_a project_b/ + lala@hecs-393504:~/work_area$ cd project_b + lala@hecs-393504:~/work_area/project_b$ ls + project_a + lala@hecs-393504:~/work_area/project_b$ sudo mv project_a project_a_backup + lala@hecs-393504:~/work_area/project_b$ ls + project_a_backup + ``` + +7. **列出文件并按大小排序**:列出`work_area/docs`目录下的所有文件,并按文件大小降序排列。 + + ```js + lala@hecs-393504:~/work_area/docs$ ls -S + visible1.txt visible2.txt + ``` + +8. **删除所有文件**:删除`work_area/docs`目录下所有文件 + + ```js + lala@hecs-393504:~/work_area/docs$ sudo rm *.txt + lala@hecs-393504:~/work_area/docs$ ls + ``` + +9. **删除目录**:假设您不再需要`work_area/project_b`目录及其所有内容,请递归地强制删除它。 + + ```js + lala@hecs-393504:~/work_area$ sudo rm -r project_b + lala@hecs-393504:~/work_area$ ls + docs project_a + ``` + +10. **清理空目录**:清理`work_area`目录,删除其中所有的空目录(注意:不要删除非空的目录)。 + + ```js + lala@hecs-393504:~/work_area$ sudo rm -d project_a/ docs/ + rm: cannot remove 'project_a/': Directory not empty + lala@hecs-393504:~/work_area$ ls + project_a + ``` + +11. **创建别名**:回到您的家目录,并创建一个别名`llh`,该别名能够列出当前目录下文件和目录的长格式列表,并以人类可读的格式显示文件大小(类似于`ls -lh`命令)。 + + ```js + lala@hecs-393504:~$ ls -a + . .. .bash_history .bash_logout .bashrc .bashrc.swp Linux0520作业.md .profile .viminfo work_area + lala@hecs-393504:~$ sudo rm .bashrc.swp + lala@hecs-393504:~$ vim .bashrc + alias llh='ls -h' + lala@hecs-393504:~$ llh + Linux0520作业.md work_area + ``` + + \ No newline at end of file -- Gitee