From 2e25bf104b4597294b5104728e63889b2c10a2b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E6=80=9D=E5=A9=B7?= <3377421251@qq.com> Date: Wed, 29 May 2024 09:59:25 +0800 Subject: [PATCH] 2024.05.28 --- ...24.05.15-Linux\345\237\272\347\241\200.md" | 2 +- ...44\347\232\204\344\275\277\347\224\250.md" | 60 ++++- ...07\344\273\266\347\256\241\347\220\206.md" | 6 + .../2024.05.28-\344\275\234\344\270\232.md" | 224 ++++++++++++++++++ 4 files changed, 282 insertions(+), 10 deletions(-) create mode 100644 "44 \351\231\206\346\200\235\345\251\267/2024.05.28-\344\275\234\344\270\232.md" diff --git "a/44 \351\231\206\346\200\235\345\251\267/2024.05.15-Linux\345\237\272\347\241\200.md" "b/44 \351\231\206\346\200\235\345\251\267/2024.05.15-Linux\345\237\272\347\241\200.md" index 664cf4d..5cce41a 100644 --- "a/44 \351\231\206\346\200\235\345\251\267/2024.05.15-Linux\345\237\272\347\241\200.md" +++ "b/44 \351\231\206\346\200\235\345\251\267/2024.05.15-Linux\345\237\272\347\241\200.md" @@ -122,7 +122,7 @@ 2. 取消注释并修改 #PermitRootLogin prohibit-password——>PermitRootLogin yes 3. 取消注释:#PasswordAuthentication yes 4. 取消注释:#PermitEmptyPasswords no - 退出:esc shift+: qw! + 保存并强制退出:esc shift+: qw! 重启让文件生效:systemctl restart ssh 即可用客户端远程登录 //(在finalshell用ssh远程登录) diff --git "a/44 \351\231\206\346\200\235\345\251\267/2024.05.18-Linux\350\257\255\346\263\225\345\221\275\344\273\244\347\232\204\344\275\277\347\224\250.md" "b/44 \351\231\206\346\200\235\345\251\267/2024.05.18-Linux\350\257\255\346\263\225\345\221\275\344\273\244\347\232\204\344\275\277\347\224\250.md" index 490c3bb..bbe13f4 100644 --- "a/44 \351\231\206\346\200\235\345\251\267/2024.05.18-Linux\350\257\255\346\263\225\345\221\275\344\273\244\347\232\204\344\275\277\347\224\250.md" +++ "b/44 \351\231\206\346\200\235\345\251\267/2024.05.18-Linux\350\257\255\346\263\225\345\221\275\344\273\244\347\232\204\344\275\277\347\224\250.md" @@ -6,7 +6,7 @@ `/` 目录是Linux文件系统的根目录,包含了整个文件系统的基础结构。 -```js +```bash / 根目录 ./ 当前目录 ../ 父级目录 @@ -16,30 +16,39 @@ `/etc` 目录存放系统的配置文件。这些配置文件包括各种应用程序、服务以及系统本身的配置信息,如网络配置、软件包管理器配置等。 -```js +```bash /etc/network/interfaces # 网络接口配置文件 /etc/apt/sources.list # APT 软件源配置文件 /etc/nginx/nginx.conf # nginx软件配置文件 /etc/ssh/sshd_config # sshd服务端配置文件 ``` -### /home +### /var -`/home` 用户的家目录,每个用户都有一个以其用户名命名的目录。每个用户都有一个独立的家目录,用于存放其个人文件和设置。 +`/var` 目录包含了经常变化的文件,如日志文件、缓存文件、临时文件等。这些文件通常是由系统或运行中的服务产生的,因此需要定期清理和管理。 + +```bash +/var/log/syslog # 系统日志文件 +/var/cache/apt/archives/ # APT 软件包缓存目录 +``` ### /root `/root` 目录是root用户的家目录。与普通用户的家目录类似,root用户也有一个独立的家目录,用于存放其个人文件和设置。 -```js +```bash /root/ # root 用户的家目录 ``` +### /home + +`/home` 用户的家目录,每个用户都有一个以其用户名命名的目录。每个用户都有一个独立的家目录,用于存放其个人文件和设置。 + ### /bin `/bin` 目录是“binary”的缩写,存放着系统启动时需要的最基本的命令。这些命令通常是所有用户都需要的,因此放在这个目录下。它包含一些最常用的命令,如 `ls`、`cp`、`mv` 等,用于列出目录内容、复制文件、移动文件等常见操作。程序的成品目录。===》源码--》编译得到二进制的成品 -```js +```bash /bin/ls # 列出当前目录内容 /bin/cp # 复制文件 /bin/mv # 移动文件 @@ -49,7 +58,7 @@ `/sbin` 目录存放着系统管理员需要的系统管理命令。与 `/bin` 目录类似,但 `/sbin` 目录中的命令通常只能由系统管理员或具有管理员权限的用户执行。 -```js +```bash /sbin/reboot # 重启系统命令 /sbin/ifconfig # 配置网络接口命令 ``` @@ -58,11 +67,44 @@ `/dev` 目录包含了设备文件,这些文件用于与系统中的硬件设备进行通信。在Linux中,一切皆文件,因此硬件设备也被抽象为文件的形式存在于 `/dev` 目录中。 -```js +```bash /dev/sda # 硬盘设备文件 /dev/ttyUSB0 # USB 串行设备文件 ``` +### /proc + +`/proc` 目录是一个虚拟文件系统,它提供了有关系统和运行进程的信息。在 `/proc` 目录下,每个运行的进程都有一个对应的子目录,其中包含了有关该进程的详细信息。 + +```bash +/proc/cpuinfo # CPU 信息 +/proc/meminfo # 内存信息 +``` + +### /srv + +`/srv` 目录存放着服务的数据目录。一些服务可能会将其数据文件存放在 `/srv` 目录下,以便更好地管理和组织。 + +```bash +/srv/www/ # Web 服务器数据目录 +``` + +### /sys + +`/sys` 目录包含了一个虚拟文件系统,用于提供关于系统硬件设备的信息以及与这些设备的交互接口。与 `/proc` 目录类似,但 `/sys` 目录提供的信息更加详细和底层。 + +```bash +/sys/class/net/eth0/ # 网络接口 eth0 的相关信息 +``` + +### /tmp + +`/tmp` 目录是一个临时文件目录,用于存放临时文件。该目录中的文件通常在系统重启后会被删除,因此适合存放一些临时性的数据。 + +```bash +/tmp/tmpfile.txt # 临时文件 +``` + # 作业 @@ -146,7 +188,7 @@ $ vim 学号姓名.txt //创建编辑文档 //1. 创建一个空文件——touch 文件名.txt——>vim进行编辑 //2. vim 文件名.txt - //3. 新建文件——vim——>保存:wq 文件名 + //3. 新建文件——vim——>保存:wq 文件名 编辑器: nano(默认) diff --git "a/44 \351\231\206\346\200\235\345\251\267/2024.05.21-Linux\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/44 \351\231\206\346\200\235\345\251\267/2024.05.21-Linux\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" index b2b0c93..5850b6e 100644 --- "a/44 \351\231\206\346\200\235\345\251\267/2024.05.21-Linux\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/44 \351\231\206\346\200\235\345\251\267/2024.05.21-Linux\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" @@ -22,6 +22,12 @@ `cd 目录名`:进入某个目录 +```js +//cd: +// 在bash中,按一次tab自动识别文件的唯一性吗,只有一个就自动显示或者将共同部分显示 +// 如果不太一样,不确定唯一性,就要按两次tab,会显示所有可选项 +``` + ——————————————————————————— ## mv diff --git "a/44 \351\231\206\346\200\235\345\251\267/2024.05.28-\344\275\234\344\270\232.md" "b/44 \351\231\206\346\200\235\345\251\267/2024.05.28-\344\275\234\344\270\232.md" new file mode 100644 index 0000000..320c652 --- /dev/null +++ "b/44 \351\231\206\346\200\235\345\251\267/2024.05.28-\344\275\234\344\270\232.md" @@ -0,0 +1,224 @@ +## 课堂笔记 + +### `find` 命令 + +`find` 是一个功能非常强大的查找工具,可以递归地搜索目录及其子目录中的文件和目录。它支持多种搜索条件,如名称、大小、修改时间等。 + +`find` 命令主要用于查找文件和目录。它根据文件名、类型、修改时间等属性进行查找,并不会检查文件内容。 + +#### 语法 + +```bash +find 要查找的目录路径 条件【类型,名称,大小,时间】(条件可以组成使用) + +find /path -name "filename" # 按名称查找文件包含了目录 +find /path -type d -name "dirname" # 按名称查找目录 +find /path -type f -name "*.txt" # 查找所有 .txt 文件 +find /path -type f -exec command {} \; # 查找文件并对其执行命令 + +find /path -type f -size +1M # 查找大于 1MB 的文件 +find /path -type f -mtime -7 # 查找最近7天内修改过的文件 + +使用 +find /home/user -name "document.txt" # 在 /home/user 目录及其子目录中查找名为 document.txt 的文件 +find /var/log -type f -name "*.log" -mtime -1 # 查找 /var/log 目录中最近一天内修改过的 .log 文件 +``` + +### `grep` 命令 + +`grep` 命令用于在文件内容中搜索匹配的字符串。虽然它通常用于搜索文件内容,但也可以结合其他命令一起使用来查找文件。 + +```bash +grep "pattern" filename # 在文件中搜索字符串 +grep -r "pattern" /path # 递归地在目录中搜索字符串 +# 示例: +grep "error" /var/log/syslog # 在 /var/log/syslog 文件中搜索包含 "error" 的行 +grep -r "TODO" /home/user/projects # 在 /home/user/projects 目录及其子目录中搜索包含 "TODO" 的文件 + + +# 忽略大小写查找 +grep -i "error" /var/log/syslog + +# 显示不包含关键字的行 +grep -v "success" output.txt + +# 递归查找目录 +grep -r "main" /home/user/projects + +# 显示包含关键字的文件名 +grep -l "TODO" *.py + +# 计数匹配的行数 +grep -c "ERROR" error.log + +# 显示匹配行的行号 +grep -n "def" script.py + +# 仅显示匹配部分 +grep -o "pattern" file.txt + +# 显示匹配行及后面 2 行 +grep -A 2 "START" data.txt + +# 显示匹配行及前面 2 行 +grep -B 2 "END" data.txt + +# 显示匹配行及前后 2 行 +grep -C 2 "marker" document.txt +``` + +### `find` 与 `grep` 结合使用 + +```bash +find /path -type f -name "*.txt" -exec grep "pattern" {} + # 查找包含特定字符串pattern的所有 .txt 文件 +``` + +### `which` 命令 与 `whereis` 命令 + +#### `which` + +`which` 命令查找可执行文件的位置。它在用户的 `PATH` 环境变量中搜索命令。 + +which命令通常用于以下几种场景: + +1. ***\*查找命令的完整路径\****:如果你想知道某个命令(如ls、cd等)在系统中的完整路径,可以使用which命令。例如,`which ls`会返回ls命令的完整路径,如`/bin/ls`。 +2. ***\*验证命令是否存在\****:通过检查which命令的输出,你可以验证系统中是否存在某个命令。如果which命令没有输出或返回错误信息,那么说明该命令不存在。 + +##### 用法 + +```bash +which command # 查找命令的路径 +# 例子 +which ls # 查找 ls 命令的路径 +``` + +#### `whereis` + +`whereis` 命令查找可执行文件、配置文件、源代码文件和手册页的位置。 + +##### 用法 + +```bash +whereis command # 查找命令的可执行文件、源代码文件和手册页 +#例子 +whereis ls # 查找 ls 命令的可执行文件、源代码文件和手册页 +``` + +### `type` 命令 + +`type` 命令显示命令的类型,例如是否是内置命令、别名或可执行文件。 + +##### 用法 + +```bash +type ls # 显示 ls 命令的类型 +type cd +``` + +### `stat` 命令 + +`stat` 命令用于显示文件或文件系统的详细信息,包括大小、权限、修改时间等。 + +##### 用法 + +```bash +stat filename # 显示文件的详细信息 +# 示例: +stat document.txt # 显示 document.txt 文件的详细信息 +``` + +## 作业 + +### 操作题 + +1. **查找当前目录及其子目录中所有扩展名为 `.log` 的文件**: + + ```bash + lsting@lst:~$ find . -type f -name "*.log" + ``` + +2. **在 `/var/logs` 目录及其子目录中查找所有包含关键字 `error` 的文件,并显示匹配的行**: + + ```bash + lsting@lst:~$ grep -r "error" var/logs + ``` + +3. **在 `/home/user/docs` 目录中查找文件名包含 `report` 的所有文件**: + + ```bash + lsting@lst:~$ find docs -name "*report*" + ``` + +4. **查找 `/etc` 目录中最近7天内修改过的文件**: + + ```bash + lsting@lst:~$ find etc -mtime -7 + ``` + +5. **显示 `/usr/bin` 目录中名为 `python` 的可执行文件的路径**: + + ```bash + lsting@lst:~$ find usr/bin -name "python" -type f -executable + ``` + +6. **查找系统中名为 `ls` 的命令及其手册页位置**: + + ```bash + lsting@lst:~$ whereis ls + ``` + +7. **查找当前目录中包含关键字 `TODO` 的所有文件,并显示匹配的行和文件名**: + + ```bash + lsting@lst:~$ grep -rn "TODO" . + ``` + +8. **在 `/home/user/projects` 目录中查找所有包含关键字 `function` 的 `.js` 文件**: + + ```bash + lsting@lst:~$ grep -r "function" projects -type f -name "*.js" + ``` + +9. **查找并显示当前目录及其子目录中所有空文件**: + + ```bash + lsting@lst:~$ find . -type f -size 0 + ``` + +10. **在 `/var/www` 目录中查找包含关键字 `database` 的所有文件,并只显示文件名**: + + ```bash + lsting@lst:~$ find var/www -type f -name "*database*" + ``` + +### 综合操作题 + +**综合操作题:** + +假设你在一个名为 `/home/user/workspace` 的目录中工作。你需要完成以下任务: + +1. 查找该目录中所有扩展名为 `.conf` 的文件。 +2. 在这些 `.conf` 文件中查找包含关键字 `server` 的行。 +3. 将包含关键字 `server` 的文件名和匹配的行保存到一个名为 `server_lines.txt` 的文件中。 + +**预期命令步骤:** + +1. 查找所有扩展名为 `.conf` 的文件: + + ```bash + lsting@lst:~$ find workspace -type f -name "*.conf" + ``` + +2. 在这些 `.conf` 文件中查找包含关键字 `server` 的行: + + ```bash + lsting@lst:~$ grep -r "server" workspace/*.conf + ``` + +3. 将结果保存到 `server_lines.txt` 文件中: + + ```bash + lsting@lst:~$ find workspace/ -type f -name "*.conf" -exec grep -n "server" {} + > workspace/server_lines.txt + ``` + +通过这套操作题和综合操作题,你可以全面地了解和应用Linux系统中与文件和内容查询相关的常用命令。 \ No newline at end of file -- Gitee