From 760f471232da628b145c29aad8ab7207de5e93f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=BF=97=E7=BF=94?= <230825509@qq.com> Date: Sun, 23 Jun 2024 00:10:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20240515LINUX.md" | 107 +++++ .../20240518\344\275\234\344\270\232.md" | 56 +++ ...72\347\241\200\345\221\275\344\273\244.md" | 233 +++++++++++ .../20240529nginx.md" | 303 ++++++++++++++ .../20240530sed.md" | 177 ++++++++ ...07\346\234\254\345\244\204\347\220\206.md" | 382 ++++++++++++++++++ ...20240606PacVim\344\270\213\350\275\275.md" | 89 ++++ ...57\345\242\203\345\217\230\351\207\217.md" | 113 ++++++ 8 files changed, 1460 insertions(+) create mode 100644 "\345\220\264\345\277\227\347\277\224/20240515LINUX.md" create mode 100644 "\345\220\264\345\277\227\347\277\224/20240518\344\275\234\344\270\232.md" create mode 100644 "\345\220\264\345\277\227\347\277\224/20240520Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" create mode 100644 "\345\220\264\345\277\227\347\277\224/20240529nginx.md" create mode 100644 "\345\220\264\345\277\227\347\277\224/20240530sed.md" create mode 100644 "\345\220\264\345\277\227\347\277\224/20240601\346\226\207\346\234\254\345\244\204\347\220\206.md" create mode 100644 "\345\220\264\345\277\227\347\277\224/20240606PacVim\344\270\213\350\275\275.md" create mode 100644 "\345\220\264\345\277\227\347\277\224/20240619\347\216\257\345\242\203\345\217\230\351\207\217.md" diff --git "a/\345\220\264\345\277\227\347\277\224/20240515LINUX.md" "b/\345\220\264\345\277\227\347\277\224/20240515LINUX.md" new file mode 100644 index 0000000..2933682 --- /dev/null +++ "b/\345\220\264\345\277\227\347\277\224/20240515LINUX.md" @@ -0,0 +1,107 @@ +## LINUX + +### 安装ssh + +```js +//显示ip信息 +ip addr show + +//更新软件库,将软件数据同步 +apt-get update + +//安装ssh +apt-get install ssh / -y ssh + +//ssh登录连接方式 +ssh -l 用户名 ip +ssh 用户名@ip +``` + +可以用两种账号登录,一个是root超级管理员,一个是user普通用户 + +普通用户权限受限,需要用到的时候需要借用root权限 + +root账号默认静止ssh登录 + +### 允许使用root登录ssh + +```js +//查询ssh文件 +whereis ssh + +//进入这个文件 +cd /etc/ssh + +//查看当前目录的文件 +ls +``` + +```js +//进入文件,vi编辑器 +vi 文件 + +vim编辑器比较好用 + +//按i进入编辑模式 + +//修改一下内容,文件为sshd_confi,注释也要记得删除 +Port 22 // 开启端口22 +PermitRootLogin yes // 允许root登录 +PasswordAuthentication yes // 使用密码验证的模式 +PermitEmptyPasswords no // 禁用空密码 + +//按esc退出编辑模式 +按:进入命令模式 +强制保存并退出 +输入wq! +``` + +### 安装vim编辑器 + +``` +apt-get install vim -y +``` + +### 配置完ssh要重启才能让ssh生效 + +![ae9ed91f1027be1ef15db54c07b0c00](assets/15.png) + +enabled 代表开启 + +```js +//查看ssh状态 +systemctl status ssh + +//关闭ssh +systemctl stop ssh + +//开启ssh +systemctl start ssh + +//重启ssh +systemctl restart ssh + +//linux 执行的服务的命令 +systemctl 指令 服务名 +/etc/init.d/服务器 指令 +``` + +连接的称为客户端,被连接的称为服务端 + +没有SSH服务无法远程连接 + +它本身也可以当客户端连接它人 + +```js +//查看文件 +cat 文件 + +//查看ip(需要安装ifconfig),if是interface的缩写 +ifconfig +``` + +### 下载ifconfig + +``` +apt-get install net-tools +``` \ No newline at end of file diff --git "a/\345\220\264\345\277\227\347\277\224/20240518\344\275\234\344\270\232.md" "b/\345\220\264\345\277\227\347\277\224/20240518\344\275\234\344\270\232.md" new file mode 100644 index 0000000..35bb8b9 --- /dev/null +++ "b/\345\220\264\345\277\227\347\277\224/20240518\344\275\234\344\270\232.md" @@ -0,0 +1,56 @@ +## 作业 + +1. 使用命令,在自己的家目录,以以下层次依次建立文件夹 + 1. 国家 + 1. 省份 + 1. 市 + 1. 县(区) + 1. 镇(街道) + 1. 村(小区) + 1. 姓名 +2. 在姓名文件夹,建立一个自己的学号姓名文件 +3. 在这个文件中,写内容 +4. 最后,将国家这个文件夹打包,解压缩 +5. 下载到本地 + +```js +//进入home家目录 +cd ~ + +//创建这个路径的目录 +mkdir -p 国家/省份/市区/街道/小区/姓名 + +//进入这个姓名目录 +cd 国家/省份/市区/街道/小区/姓名 + +//创建1个后缀为txt的文件 +touch 文件.txt + +//进入文件 +vi 文件.txt + +// 按i 进入编辑模式 +// 按esc 退出模式 +// 按: 进入命令模式 +// 命令模式下,输入wq! 强制保存并退出 + +//查看文件内容 +cat 文件.txt + +//解压缩文件 +//压缩国家目录的路径是 国家/ +// -c 压缩文件 -f 指定的文件名 -v 显示过程 -x 解压文件 +tar -cf 新文件名.tar 路径或文件 + +tar -xvf 需要解压的文件.tar +``` + +## 什么是环境变量 + +环境变量是包含诸如驱动器、路径或文件名之类的字符串。环境变量控制着多种程序的行为。 + +任何用户都可以添加、修改或删除用户的环境变量。但是,只有管理员才能添加、修改或删除系统环境变量。 + +环境变量简单来说就是将某些数据,文件或文件夹设置为系统默认值,这样调用的时候就不用给出完整路径和地址或进行设置,直接用名字就可以了 + +环境变量是包含关于系统及当前登录用户的环境信息的字符串,一些软件程序使用此信息确定在何处放置文件(如临时文件). \ No newline at end of file diff --git "a/\345\220\264\345\277\227\347\277\224/20240520Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" "b/\345\220\264\345\277\227\347\277\224/20240520Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" new file mode 100644 index 0000000..5c6d431 --- /dev/null +++ "b/\345\220\264\345\277\227\347\277\224/20240520Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" @@ -0,0 +1,233 @@ +## Linux基础命令 + +新建完一个用户时只会出现$,并且输入不了其他东西,可以使用这个代码 + +```bash +(sudo) chsh -s /bin/bash 用户名 +``` + +创建用户 + +```js +// 交互式,方便可以一次性设置好 +adduser 用户名 + +// 全部都要自己设置 +useradd 用户名 +``` + +切换root账号 + +```js +// 权限最高 +su - + +su root + +su +``` + +删除用户 + +```js +// 手动删除 +userdel + +// 安全的都删除 +deluser +``` + +退出 + +```js +exit + +logout +``` + +```js +// 进入主目录 +cd ~ + +// 创建目录 +mkdir -p 路径 +// -p 当相关目录不存在时,就创建,存在则跳过 + +// 创建文件 +touch 文件名(.扩展名) + +// 清屏快捷键 +Ctrl+L + +// 按i 进入编辑模式 +// 按esc 退回普通模式 +// 按shift+: 进入命令模式 +// wq! 保存并强制退出 +// w 写入(write) +// q 退出(quit) +// ! 强制 + +// 直接打开编辑器 +// :w 新文件名 保存文件名 +``` + +另一种编辑器 + +nano + +nano 所见即所得 用法都写在上面 + +```js +// 查询命令 +man 命令 + +命令 --help +``` + +```js +// 打包,不带压缩 +// v 过程 +// c 一定要在开头 +// f 一定要紧跟着文件名 +tar -cvf 打包后的文件名.tar 被打包的目录或文件名 + +// 打包压缩 +tar -czvf 打包后的文件名.tar.gz 被打包的目录或文件名 + +// 解包不解压缩 +// -C 指定解包在哪目录 +tar -xvf 打包后的文件名.tar -C 需要存放的目录 + +// 解包解压缩 +tar -xzvf 打包后的文件名.tar +``` + +```js +// && 并and,可以将代码一起使用,依次执行多个文件 +``` + +```js +// 通过echo将内容写入文件 +echo "内容" > 文件名 + +// 查看文件内容 +cat 文件名 +``` + +```js +// gzip 只负责压缩和解压缩,所用通常和tar一起使用,gzip作为tar一个 -g 参数存在 +// 压缩不保留原文件 +gzip 文件名 + +// 保留原文件压缩 +// -k 保留原文件 +gzip -k 文件名 +``` + +```js +// 都在客户端执行 +// 下载客户端文件到服务器 +scp 客户端本机主机路径 服务器主机名@ip:服务器路径 + +// 上传服务器文件到客户端 +scp 服务器主机名@ip:服务器路径 客户端本地主机路径 + +// 可以登上客户端,再进行上传与下载 +sftp 服务器主机名@ip + +// 下载,找到文件位置(用sftp登上之后),将文件下载到本地 +get 文件名 服务器路径 + +// 上传,找到文件位置(用sftp登上之后),将文件上传到服务器 +put 文件名 to 服务器路径 +``` + +```js +// 没有权限 +Permission denied +``` + +## 作业 + +1. ### 综合练习题:大学生生活场景中的文件夹和文件管理 + + 假设你是一名大学生,现在面临着整理学习资料和课程作业的任务。请按照以下要求完成相关的文件夹和文件管理操作: + + 1. 在你的个人文档目录下创建一个名为`学习资料`的文件夹,并进入该文件夹。 + + ```bash + mkdir 学习资料 ; cd 学习资料 + + # ; 表示并且 + ``` + + 2. 在`学习资料`文件夹中创建一个名为`计算机科学`的文件夹。 + + ```bash + cd 学习资料 && mkdir 计算机科学 + ``` + + 3. 在`计算机科学`文件夹中创建两个子文件夹,分别命名为`课程资料`和`编程项目`。 + + ```bash + cd 计算机科学 && mkdir {课程资料,编程项目} + ``` + + 4. 将你最近的一门计算机科学课程的课件文件(假设文件名为`CS101_第一讲.pdf`)放入`课程资料`文件夹。 + + ```bash + scp 本机需要上传的文件路径 liunx用户名@ip:/需要放置的文件路径 + ``` + + 5. 在`编程项目`文件夹中创建一个名为`Java项目`的文件夹。 + + ```bash + cd 编程项目 && mkdir Java + ``` + + 6. 在`Java项目`文件夹中创建两个空文件,分别命名为`主程序.java`和`工具类.java`。 + + ```bash + touch {主程序,工具类}.java + ``` + + 7. 复制`主程序.java`并命名为`备份_主程序.java`。 + + ```bash + cp 复制的文件 粘贴的文件名 + ``` + + 8. 创建一个名为`Python项目`的文件夹,并将`工具类.java`移动到`Python项目`文件夹中。 + + ```bash + mv 工具类.java ./python + + # mv 文件 指定移动的路径 + ``` + + 9. 列出`计算机科学`文件夹中所有文件和文件夹的内容。 + + ```bash + ls -aR + + # -a 所有文件包括隐藏文件 + # -R 所有内容 + ``` + + 10. 删除`编程项目`文件夹及其包含的所有内容。 + + ```bash + rm -rf 目录名 + ``` + + 11. 重命名`Python项目`为`数据分析项目`。 + + ```bash + mv 旧名字 新名字 + ``` + + 12. 最后,列出当前所在目录的路径。 + + ```bash + pwd + ``` \ No newline at end of file diff --git "a/\345\220\264\345\277\227\347\277\224/20240529nginx.md" "b/\345\220\264\345\277\227\347\277\224/20240529nginx.md" new file mode 100644 index 0000000..1a1bc59 --- /dev/null +++ "b/\345\220\264\345\277\227\347\277\224/20240529nginx.md" @@ -0,0 +1,303 @@ +## nginx + +```bash +# 安装nginx +sudo apt install nginx + +# 查看nginx +systemctl status nginx + +# 修改nginx网页 +vim /var/www/html/index.nginx.debian.html + +# 可能会出现编码错误记得加上 + +``` + +## 文件内容管理 + +cat:显示文件内容 + +tac:与cat相反,从文件末尾开始显示 + +more:分页显示文件内容 + +less:与more类似。但提供了更多的导航和搜索功能 + +head:显示文件开头内容(默认10行) + +tail:显示文件结尾内容(默认10行) + +nl:显示文件内容,并添加行号 + +od:以八进制、十进制、十六进制或其他格式转储文件内容 + +```bash +# 将内容放在test.txt,如果在文件本身有内容则会覆盖 +echo 111 > test.txt +# 将内容追加在test.txt,不会覆盖 +echo 222 >> test.txt +``` + +## cat + +```bash +# 显示文件内容 +cat 选项 文件 + +# 可以查看多个文件 +cat 文件1 文件2 + +# -n 显示行号 +cat -n 文件 +``` + +## tac + +```bash +# 反向显示文件内容 +tac 选项 文件 + +# 可以查看多个文件 +cat 文件1 文件2 +``` + +## more + +```bash +# 分页显示文件内容,每次显示一屏,按页显示文件内容 +more 选项 文件 + +# 空格键显示下一页,回车键显示下一行,q键退出 +``` + +## less + +```bash +# 查看大文件,一页一页加载 +less 选项 文件 + +# 作用与more相似但是提供更多的导航和搜索功能,如上下滚动、搜索等 + +# 上下键、page up\page down键进行滚动,/搜索,n下一个匹配,N上一个匹配,q退出 + +# -N 显示行号 +# -M 显示长提示符 +# -MN 内容在显示行号,底部显示文件名,行号和百分比 +# -m 或 -i 搜索时忽略大小写 +# +行数 打开文件后立即跳转到指定的行数 +``` + +## head + +```bash +# 显示文件前几行内容不打开文件 +head 选项 文件 + +# 显示文件开头10行 +head 文件 + +# 显示多个文件开头10行 +head 文件1 文件2 + +# 指定显示行数 +head -n 指定行数 文件 + +# 不显示文件名,当打开多个文件时可以不显示文件名 +head -q 文件1 文件2 +``` + +## tail + +```bash +tail 选项 文件 + +# 显示文件末尾内容10行 +tail 文件 + +# 显示多个文件结尾10行 +tail 文件1 文件2 + +# 显示指定行数 +tail -n 指定行数 文件 + +# 实时查看文件增长(如日志文件) +tail -f 文件 + +# 不显示文件名,当打开多个文件时可以不显示文件名 +tail -q 文件1 文件2 +``` + +## nl + +```bash +# 显示文件内容,并添加内容(空行不加) +nl 选项 文件 + +# 指定分隔符 +nl -s: 文件 +``` + +## od + +```bash +# 以八进制、十进制、十六进制或其他格式转储文件内容 +# 显示文件内容的八进制 +od -An -t o 文件 + +# 显示文件的内容十六进制 +od -An -t x1 文件 + +# 显示字符 +od -c 文件 +``` + +## 作业 + +**以下所有操作都在家目录执行:** + +### `cat` 命令操作题 + +1. **操作题一**:使用 `cat` 命令显示 `/etc/passwd` 文件的内容。 + + ```bash + cat /etc/passwd + ``` + +2. **操作题二**:将文件 `/etc/passwd` 的内容复制到 `passwd_bak.txt` 文件中,但不使用 `cp` 命令。 + + ```bash + cat /home/user/yina/etc/passwd > passwd_bak.txt + ``` + +3. **操作题三**:新建两个文件 `file1.txt` 和 `file2.txt`,分别写一些不同的内容,再将这两个文件的内容合并到一个新的文件 `file3.txt` 中。 + + ```bash + cat file1.txt file2.txt > file3.txt + ``` + +### `tac` 命令操作题 + +1. 使用命令从尾部开始显示 `bigfile.txt` 文件的内容。 + + ```bash + tac bigfile.txt + ``` + +2. 尝试找出 `bigfile.txt` 文件的最后一行内容,只使用 `tac` 命令。 + + ```bash + tac bigfile.txt | head -n 1 + ``` + +3. 查看 `bigfile.txt` 文件的最后5行内容。 + + ```bash + tac bigfile.txt | head -n 5 + ``` + +4. 倒序查看 `bigfile.txt` 文件的最后5行内容。 + + ```bash + tac bigfile.txt | tail -n 5 + ``` + +### `more` 命令操作题 + +1. **操作题一**:使用 `more` 命令查看 `bigfile.txt` 文件的内容,并在查看过程中使用空格键翻页。 + + ```bash + more bigfile.txt + ``` + +2. **操作题二**:在 `more` 命令的查看过程中,如何使用回车键来逐行查看文件内容? + + ```bash + more bigfile.txt + ``` + +3. **操作题三**:如何在 `more` 命令中搜索`bigfile.txt`特定字符串(例如 "error")并跳转到下一个匹配项? + + ```bash + more bigfile.txt + /error 向下 + ?error 向上 + 按enter回车跳转 + ``` + +### `less` 命令操作题 + +1. **操作题一**:使用 `less` 命令查看 `bigfile.txt` 文件,并快速定位到文件的末尾。 + + ```bash + less bigfile.txt + 按G 定位文件最后一行 + 按g 定位文件第一行 + ``` + +2. **操作题二**:在 `less` 命令中,如何向上和向下滚动文件内容? + + ```bash + u 向前滚动半页 + y 向前滚动一行 + 空格键 滚动一行 + 回车键 滚动一页 + ``` + +3. **操作题三**:在 `less` 命令中,如何搜索`bigfile.txt`一个特定的函数名(例如 `def my_function`),并查看所有匹配项? + + ``` + /def my_function 向下 + ?def my_function 向上 + 按enter回车跳转 + ``` + +### `head` 命令操作题 + +1. **操作题一**:使用 `head` 命令显示 `bigfile.txt` 文件的前5行内容。 + + ```bash + head -n 5 bigfile.txt + ``` + +2. **操作题二**:将 `bigfile.txt` 的前20行内容保存到 `bigfile_20.txt` 文件中。 + + ```bash + head -n 20 bigfile.txt > bigfile_20.txt + ``` + +3. **操作题三**:如何结合 `head` 和 `grep` 命令来查找 `bigfile.txt` 文件中以 "A" 开头的前10行? + + ```bash + grep "A" bigfile.txt | head -n 10 + ``` + +### `tail` 命令操作题 + +1. **操作题一**:使用 `tail` 命令显示 `bigfile.txt` 文件的最后20行内容。 + + ```bash + tail -n 20 bigfile.txt + ``` + +2. **操作题二**:如何实时跟踪一个正在写入的日志文件(如 `bigfile.txt`)的最后10行内容? + + ```bash + tail -fn 10 bigfile.txt + ``` + +3. **操作题三**:在 `tail` 命令中,如何反向显示文件的最后10行内容(即按从旧到新的顺序显示)? + + ```bash + tac bigfile.txt | tail -n 10 + ``` + +### 综合题 + +**综合题**:假设你有一个非常大的日志文件 `bigfile.txt`,你需要找出所有包含 "ERROR" 字符串的行,并查看这些行及其之前的两行内容。如何结合使用 `grep`、`head`、`tail` 和其他命令来完成这个任务? + +**提示**:你可能需要多次使用 `grep` 来找到包含 "ERROR" 的行,并使用 `tail` 和 `head` 来提取这些行及其前后的内容。另外,考虑使用管道(`|`)来连接命令。 + +```bash +grep -B 2 "ERROR" bigfile.txt | head -n -2 +``` \ No newline at end of file diff --git "a/\345\220\264\345\277\227\347\277\224/20240530sed.md" "b/\345\220\264\345\277\227\347\277\224/20240530sed.md" new file mode 100644 index 0000000..538e425 --- /dev/null +++ "b/\345\220\264\345\277\227\347\277\224/20240530sed.md" @@ -0,0 +1,177 @@ +## sed + +```bash +# -e 需要执行的sed命令 +# -i 直接修改文件内容(sed 不是直接修改文件) +# 替换文件内容 +sed 选项 命令 文件 + +# 替换文件内容,s 表示替换 +sed "s/旧内容/新内容" 文件 + +# 将替换好的内容存放在另一个文件 +sed "s/旧内容/新内容" 需要替换内容的文件 > 存放的文件 + +# 使用通配符替换 +# * 任意字符串,将1 中间任意字符串 1替换成111 +sed "s/1*1/111" 文件 +# ^指定字符串 开头为指定字符串替换为222 +sed "s/^1/222" 文件 +``` + +## cut + +```bash +# 从每行中删除部分字段并输出剩余部分 +# -f 指定要提取的字段 +# -d 指定字段分隔符 +cut 选项 文件名 + +# 提取文件内容 +cut -f 指定行数(,指定行数) 文件 + +# 指定分隔符提取文件分隔符前的内容 +cut -d ',' -f 指定位置分隔符(数字代表位置,按列提取) 文件 +``` + +## join + +```bash +# -t 指定字段分隔符 +# -1 指定第一个文件的连接字段 +# -2 指定第二个文件的连接字段 +# 将指定字段合并两个文件的行 +join 选项 文件1 文件2 + +# 根据共同字段进行连接 +join 文件1 文件2 + +# 使用制表符作为字段分隔符连接文件 +join -t ':' -1 指定字段 -2 指定字段 文件1 文件2 +# 连接结果 +张三:19岁:180cm:1班:80分 +李四:20岁:170cm:2班:90分 +# -t $'\t' 指定空格 +``` + +## sort + +```bash +# 排序文件内容(正向) +sort 文件 + +# 反向排序整理文件 +sort -r 文件 +``` + +## paste + +```bash +# 合并文件的行,每行由指定的分隔符分割 +# -d 指定各行之间的分隔符 +paste 选项 文件1 文件2 + +# 合并文件 +paste 文件1 文件2 + +# 用逗号作为分隔符合并文件 +paste -d ',' 文件1 文件2 +``` + +## fmt + +```bash +# 简化文本格式 +# -w 指定行宽度 +fmt 选项 文件名 + +# 格式化指定字符宽度 +fmt -w 指定字符宽度 文件 +``` + +## column + +```bash +# 输入文本格式化为多列输出 +# -t 使用表格格式输出 +column 选项 文件名 +``` + +## tr + +```bash +# 可以回车使用echo写入文件 +echo '内容' > 文件 +# ctrl + d 退出 +``` + +## uniq + +```bash +# 除去文件的连续重复行,显示文件中的唯一行 +# -c 显示每行重复次数 +# -d 仅显示重复行 +# -u 仅显示不重复行 +uniq 选项 文件 + +# 去除文件的重复行 +uniq 文件 + +# 显示文件中不重复行及其出现次数 +uniq -c 文件 +``` + +## split + +```bash +# 大文件分割成小文件 +# -l 指定每个输出文件的行数 +# -b 指定每个输出文件的字节数 +split 选项 输入文件 输出文件前缀 + +# 将文件按指定行数分割文件 +split -l 指定行数 文件 + +# 将文件按指定大小分割文件 +split -b 指定文件大小 文件 +``` + +## wc + +```bash +# 计算文件中的字节数、字数和行数 +# -c 计算字节数 +# -w 计算字数 +# -l 计算行数 +wc 选项 文件 + +# 统计文件 +wc 文件 + +# 仅统计文件 +wc -l 文件 +``` + +## ps + +```bash +# 查看系统中运行的进程以及它们的状态和资源占用情况 +# aux 显示所有进程的详细 +# -e 显示所有进程 +# -f 显示完整格式 +ps 选项 +``` + +## pidof + +```bash +# 根据进程名查找对应的进程id +pidof 进程名 +``` + +## kill + +```bash +# 向指定的进程发送信号,终止进程 +kill 进程id +``` \ No newline at end of file diff --git "a/\345\220\264\345\277\227\347\277\224/20240601\346\226\207\346\234\254\345\244\204\347\220\206.md" "b/\345\220\264\345\277\227\347\277\224/20240601\346\226\207\346\234\254\345\244\204\347\220\206.md" new file mode 100644 index 0000000..9c9e214 --- /dev/null +++ "b/\345\220\264\345\277\227\347\277\224/20240601\346\226\207\346\234\254\345\244\204\347\220\206.md" @@ -0,0 +1,382 @@ +## 文本处理 + +cat 正向查看整个文件 + +-n 显示行号 + + + +tac 倒序查看整个文件 + +more 按页显示文件内容 + +先加个文件再分页 + + + +less 加载一页显示一页 + +比more 功能更丰富 + +-n 显示行号 + +-m 长格式显示进度 + +-i 忽略大小写 + + + +head 查看头部指定行数的内容 + +默认10行 + +-n 行数 查看n行 + + + +tail 查看尾部指定行数的内容 + +默认10行 + +-n 行数 查看n行 + +-f 实时查看新增的内容 + + + +nl 显示整个文件的内容并加上行号 不给空行加行号 + +与cat -n 很像 空行也加行号 + +## sed + +```bash +sed 选项 '命令' 文件 + +# -e 直接在命令行模式执行多个sed命令 +# -f 从指定的文件中读取sed命令 +# -i 直接编辑文件内容 +# -n 禁止自动打印模式空间内容 + +# d 删除行 +# p 打印行 +# a\ 后面追加文本 +# i\ 前面插入文本 +# c\ 替换整行文本 + +# 替换 +sed '(/其他命令/)s/旧/新/(其他命令)' 文件 + +# 将有包含food的行的apple替换成苹果(默认替换第一个) +# s 替换 +sed '/food/s/apple/苹果/' 1.txt + +# 将有包含food的行的apple全部替换成苹果 +# g 全局 全部 +sed '/food/s/apple/苹果/g' 1.txt + +# 将有包含food的行的第二个apple替换成苹果 +sed '/food/s/apple/苹果/2' 1.txt + +# 替换第5行的第4个 +sed '5s/旧/新/4' 文件 + +# 将内容添加到每行开头 +# ^ 开头 +sed 's/^/内容/' 文件 + +# 将内容添加到每行结尾 +# $ 结尾 +sed 's/$/内容/' 文件 + +# 删除 +# 删除第2行 +# d 删除 +sed '2d' 文件 + +# 删除全部 +sed 'd' 文件 + +# 删除指定内容行 +sed '/指定内容/d' 文件 + +# 删除包含apple的行 +sed '/apple/d' 文件 + +# 打印 +sed '/关键字/p' 文件 +# -n 与 p 搭配使用 +# p 打印会打印sed模式的内容和原文件的内容 +# -n 禁止自动打印模式空间内容 +# 所以 -n 与 p 这样才可以打印一遍 +sed -n '/关键字/p' 文件 + +# 添加插入 +# \ 添加插入(在字母后) +# 在第四行前插入内容 +# i 行前插入 +sed "4i\She don't like apple" 文件 + +# 在第四行前插入内容 +# a 行后插入 +sed "4a\She don't like apple" 文件 + +# 在第四行插入内容(直接替代原先的第四行) +# c 替换插入 +sed "4c\She don't like apple" 文件 + +# 全部替换 +# 没有数字默认全部 +sed 'c\我爱葡萄' 文件 +# c 没有任何修饰则是全部替换 + +# 关键字替换 +# 将包含grape关键字的行替换成我爱葡萄 +sed '/grape/c\我爱葡萄' 文件 + +# 给所有空行前加入我后面是空行 +# ^$ 表示空行 +sed '/^$/i\我后面是空行' 文件 + +# 将修改结果保存为原文件 +# -i 直接编辑文件内容 +sed -i 's/apple/苹果' 文件 + +# 将修改结果另存为新文件 +sed 's/apple/苹果' 文件1 > 文件2 + +# 从指定文件中读取sed命令 +# -f 从指定的文件中读取sed命令 +# 先 echo /apple/d > 3.txt +# 再 sed -f 3.txt 2.txt +sed -f 包含命令的文件 操作的文件 + +# 执行多个sed命令 +# -e 执行多个命令(每个命令前都要加-e) +sed -e '/apple/d' -e 's/banana/grape' 文件 +# ; 执行多个命令(每个命令前都要加;) +sed '/apple/d;s/banana/grape/;/^$/d;s/fruits/水果/' 文件 +``` + +## 作业 + +为了设计一个素材文件,使得上述所有操作题都可以在这个文件上执行,我们可以创建一个名为 `lianxi.txt` 的文件,其中包含以下内容: + +```sh +# This is a comment line in the file +apple +This is an apple on the table. +Another apple is in the basket. + +banana +I like to eat banana for breakfast. + +A line with some text +A line starting with A + +Line 1 of report +Line 2 of report +... + +# A configuration option +# This is another comment + +Email: someone@example.com +This is a test email address: test@example.com + +A note about something + +Another note + +color is an important concept in art. +I like this color. +``` + +接下来,我们可以使用 `sed` 命令来执行上述操作题: + +### 操作题 1 + +1. 使用 `sed` 将文件 `lianxi.txt` 中所有的 "apple" 替换为 "banana",并将结果输出到标准输出。 + +```bash +sed 's/apple/banana/g' lianxi.txt +``` + +2. 使用 `sed` 删除文件 `lianxi.txt` 中所有以字母 "A" 开头的行,并将结果保存到新文件 `clean_data.csv` 中。 + +```bash +sed '/^A/d' lianxi.txt > clean_data.csv +``` + +注意:尽管我们保存为 `.csv`,但内容并不是 CSV 格式。 + +3. 使用 `sed` 在文件 `lianxi.txt` 的每一行开头插入文本 "Line:",并将结果覆盖原始文件。 + +或者(如果支持 `-i` 选项直接修改文件): + +```bash +sed -i 's/^/Line/' lianxi.txt +``` + +### 操作题 2 + +1. 使用 `sed` 将文件 `lianxi.txt` 中所有以 "#" 开头的行(注释行)删除,然后将结果输出到标准输出。 + +```bash +sed '/^#/d' lianxi.txt +``` + +2. 使用 `sed` 在文件 `lianxi.txt` 中每一行的末尾追加文本 " - The End",并将结果保存到新文件 `story_end.txt` 中。 + +```bash +# s 替换,也可以用于末尾追加或者开头添加 +# $ 结尾 +sed 's/$/-The End/' lianxi.txt > story_end.txt +``` + +3. 使用 `sed` 将文件 `lianxi.txt` 中第10行至第20行的内容输出到标准输出。 + +```bash + sed -n '10,20p' lianxi.txt +``` + +### 操作题 3 + +1. 使用 `sed` 找到文件 `lianxi.txt` 中所有包含 "@example.com" 的邮箱地址,并将结果输出到标准输出。 + +```bash +sed -n '/@example.com/p' lianxi.txtsed +``` + +2. 使用 `sed` 删除文件 `lianxi.txt` 中的空白行,并将结果保存到新文件 `clean_notes.txt` 中。 + +```bash +sed '/i/d' lianxi.txt > clean_notes.txt +``` + +3. 使用 `sed` 将文件 `lianxi.txt` 中所有的 "color" 替换为 "colour",并将结果输出到标准输出。 + +```bash +sed 's/color/colour/g' lianxi.txt +``` + +### exam.txt 文件内容: + +``` +This is a text file for practice. +It contains some words like dog, cat, and bird. +There are also numbers like 123 and 456. +# heihei +We will use sed to manipulate this file. +``` + +#### 修改操作 + +1. 使用 `sed` 将文件 `exam.txt` 中所有的 "dog" 替换为 "cat",并将结果输出到标准输出。 + +```bash + sed 's/dog/cat/g' exam. +``` + +1. 使用 `sed` 将文件 `exam.txt` 中所有的 "123" 替换为 "OneTwoThree",并将结果保存到新文件 `updated_exam.txt` 中。 + +```bash +sed 's/123/OneTwoThree/g' exam.txt > updated_exam.txt + +``` + +#### 删除操作 + +1. 使用 `sed` 删除文件 `exam.txt` 中所有以 "#" 开头的注释行,并将结果输出到标准输出。 + +```bash +sed '/^#/d' exam.txt +``` + +1. 使用 `sed` 删除文件 `exam.txt` 中所有包含 "words" 的行,并将结果保存到新文件 `clean_exam.txt` 中。 + +```bash +sed '/words/d' exam.txt > clean_exam.txt +``` + +#### 插入操作 + +1. 使用 `sed` 在文件 `exam.txt` 的第2行插入一行 "Welcome to sed manipulation",并将结果保存到新文件 `updated_exam.txt` 中。 + +```bash +sed '2a\Welcome to sed manipulation' exam.txt > updated_exam.txt +``` + +1. 使用 `sed` 在文件 `exam.txt` 的`numbers`所在行插入一行 "This is a new line",并将结果输出到标准输出。 + +```bash +sed '/numbers/a\This is a new line' exam.txt +``` + +#### 追加操作 + +1. 使用 `sed` 在文件 `exam.txt` 的末尾追加一行 "End of practice",并将结果保存到新文件 `updated_exam.txt` 中。 + +```bash +sed '$c\End of practice' exam.txt > update_exma.txt +``` + +1. 使用 `sed` 在文件 `exam.txt` 的每一行末尾追加内容 " - 2024-05-31",并将结果输出到标准输出。 + +```bash +sed 's/$/-2024-05-31' exam.txt +``` + +#### 整行替换操作 + +1. 使用 `sed` 将文件 `exam.txt` 中所有以字母 "W" 开头的行替换为 "Not Available",并将结果输出到标准输出。 + +```bash +sed '/^W/c\Not Available' exam.txt +``` + +1. 使用 `sed` 将文件 `exam.txt` 中所有包含 "words" 的行替换为 "Replaced",并将结果保存到新文件 `updated_exam.txt` 中。 + +```bash +sed '/word/c\Replaced' exam.txt > updated_exam.txt +``` + +#### 多命令操作 + +1. 使用 `sed` 删除文件 `exam.txt` 中`dog`所在行,`file`换成`文件`,并将结果输出到标准输出。 + +```bash +sed '/dog/d; s/file/文件/g' exam.txt +``` + +1. 使用 `sed` 将文件 `exam.txt` 中,删除空白行并将所有以 "It" 开头的行替换为 "This", + +```bash +sed -e '/i/d' -e 's/^It/This/g' exam.txt +``` + +#### 脚本文件操作 + +1. 创建一个 `sed` 脚本文件 `replace_apple_with_orange.sed`,实现将文件 `exam.txt` 中所有 "apple" 替换为 "orange" 的功能,并将结果输出到标准输出。 + +```bash +echo 's/apple/orange/g' > replace_apple_with_orange.sed +``` + +运行脚本: + +```bash +sed -f replace_apple_with_orange.sed exam.txt +``` + +1. 创建一个 `sed` 脚本文件 `remove_blank_lines.sed`,实现删除文件 `exam.txt` 中所有空白行的功能,并将结果保存到新文件 `cleaned_exam.txt` 中。 + +```bash +echo '/^$/d' > remove_blank_lines.sed +``` + +运行脚本: + +```bash +sed -f remove_blank_lines.sed exam.txt > cleaned_exam.txt +``` \ No newline at end of file diff --git "a/\345\220\264\345\277\227\347\277\224/20240606PacVim\344\270\213\350\275\275.md" "b/\345\220\264\345\277\227\347\277\224/20240606PacVim\344\270\213\350\275\275.md" new file mode 100644 index 0000000..30817b1 --- /dev/null +++ "b/\345\220\264\345\277\227\347\277\224/20240606PacVim\344\270\213\350\275\275.md" @@ -0,0 +1,89 @@ +## PacVim下载 + +[技术|PacVim:一个学习 vim 命令的命令行游戏 (linux.cn)](https://linux.cn/article-9738-1.html) + +## SSL证书 - nginx + +### 购买SSL证书 + +[购买SSL证书_云证书管理服务 CCM (huaweicloud.com)](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0074.html) + +### 申请SSL证书 + +[提交SSL证书申请_云证书管理服务 CCM (huaweicloud.com)](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0075.html) + +### 下载SSL证书 + +[下载SSL证书_云证书管理服务 CCM (huaweicloud.com)](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0027.html) + +### 安装SSL证书 + +[在Nginx服务器上安装SSL证书_云证书管理服务 CCM (huaweicloud.com)](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0082.html) + +#### 创建目录 + +在Nginx的安装目录下创建“cert”目录 + +并且将“server.key”(私钥)和“server.crt”(证书)复制到“cert”目录下 + +![image-20240610144841366](assets/16.png) + +![848ba9a3b7441da0f27ac59e427c94d](assets/17.png) + +#### 修改配置文件 + +因为是另起一个配置文件制作网页 + +没有在nginx作更改所以需要在那个文件配置 + +```bash +# 需要将http与https重定向 +# 上一个server需要添加 rewrite ^(.*)$ http://$host$1; +# 上一个server可以将location注释 +``` + +```bash +# 在文件里添加 +server { + listen 443 ssl; + server_name 域名; + ssl_certificate 证书路径; + ssl_certificate_key 私钥路径; + ssl_session_cache shared:SSL:1m; + ssl_session_timeout 5m; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + location / { + root 网页内容文件路径; + index index.html index.htm; + } +} +``` + +在nginx里作更改添加到nginx.conf里 + +#### 验证配置是否正确 + +```bash +# 在nginx执行目录下执行命令 +sbin/nginx -t + +# 但是执行目录也有可能在/etc/nginx +# 所以可以进入/etc/nginx执行命令 +./nginx -t + +# 成功会显示一下信息 +nginx.conf syntax is ok +nginx.conf test is successful +# 失败会报错 +``` + +#### 重启nginx + +```bash +cd /usr/local/nginx/sbin +./nginx -s reload + +# 不知道nginx在哪可以使用重启nginx +systemctl restart nginx +``` \ No newline at end of file diff --git "a/\345\220\264\345\277\227\347\277\224/20240619\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/\345\220\264\345\277\227\347\277\224/20240619\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000..bad6519 --- /dev/null +++ "b/\345\220\264\345\277\227\347\277\224/20240619\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,113 @@ +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + + +```bash +printenv +env +``` +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + + +```bash +echo $HOME +``` +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + + +```bash +export MY_AGE=18 +``` +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + + +```bash +echo $MY_AGE +``` +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + + ```bash + # 什么都没有,因为是临时的环境变量 + ``` + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + + +```bash +export PATH=在这行后面加上 :/home/user/yina +``` +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +```bash +export PATH=/tmp:/home/user/yina +``` + +### 练习题 7: 验证`PATH`的修改 + +* 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + + +```bash +echo $PATH +``` +### 练习题 8: 永久设置环境变量 + +* 在你的shell配置文件中(如`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等,取决于你使用的shell和配置)添加一行来永久设置`MY_NAME`,值设置为`奥德彪`。 + +例如,对于bash shell,你可以使用: + + +```bash +~/.bash_profile 或者 ~/.bashrc +``` +如何让`MY_NAME`生效,并验证 + +```bash +export MY_NAME = '奥德彪' +echo $MY_NAME +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + + +```bash +unset MY_AGE +export PATH=$(echo $PATH | sed -e 's|:要移除的path环境变量') +``` +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + + +```bash +# 进入.git/config +# 在core里 +export EDITOR=nano +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +```bash +export LANG=zh_CN.utf8 +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +```bash +export LANGUAGE=zh_CN.utf8 +``` \ No newline at end of file -- Gitee