From d0a0eb6479eef51f40f54a069c7baeb24ab070e5 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Tue, 27 Aug 2024 19:10:49 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/conventions.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/conventions.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/conventions.md b/src/conventions.md index 59a2e64..b797eee 100755 --- a/src/conventions.md +++ b/src/conventions.md @@ -1,11 +1,27 @@ # 约定 -本文中如有转载文章,均已与原站取得授权,如有疑问请联系 “” - -本站对一些文章进行了适当的修改和删减,以适合当下的环境。 +## 内容 章节之间可能会出现「笔者」的部分类似于配置的信息不一致的问题,这是因为「笔者」不是一个人,而是指代整个贡献这列表中的所有直接编辑过本书的人,所以会出现该问题,敬请谅解。 +在本教程中,快捷键使用以下格式表示: +`Ctrl`键使用`^`(如 `^C`)或者`C`表示,`Alt`键使用`M`表示,`Super`(即`Windows`键)使用`S`表示。 +它们的排列顺序是这样的:`C-M-S-`。 + +你可能会看到这种内容:`:q!`,其中 `<按键名>` 表示按下对应的按键(包括上面的快捷键)。 + +例如上面的内容,就表示: + +1. 按一下键盘上的 `[Esc]` +2. 输入 `:q!` +3. 再按一下 `[Enter]` + +## 授权 + +本文中如有转载文章,均已与原站取得授权,如有疑问请联系 “” + 且转载文章会在末尾处注明作者与出处。 +本站对一些文章进行了适当的修改和删减,以适合当下的环境。 + 本站原创文章若无特别说明均在 [MIT](./licenses/LICENSE-MIT.md) 与 [Apache2](./licenses/LICENSE-APACHE.md) 的双重许可下发布,转载请遵守相关规定。 -- 2.40.1 From 532d6b9948e15c739e7777713e8ba80a6e29dfb2 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Tue, 27 Aug 2024 19:12:06 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/learn=5Flinux=5F?= =?UTF-8?q?basic/linux=5Fcommon=5Fsense.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/linux_common_sense.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/learn_linux_basic/linux_common_sense.md b/src/learn_linux_basic/linux_common_sense.md index 9a465b6..c444748 100755 --- a/src/learn_linux_basic/linux_common_sense.md +++ b/src/learn_linux_basic/linux_common_sense.md @@ -5,10 +5,6 @@ 其实,Linux 的很多逻辑以及文件的组织结构都是与 Windows 大不相同的,接下来,我们就一起了解一下。 > 注意,以下操作,若无特殊说明,输入命令均在终端(Terminal)下操作,可以按下 C-M-T 呼出。 ---- -> 本文中,快捷键使用以下格式表示: -> `Ctrl`键使用`^`或者`C`表示,`Alt`键使用`M`表示,`Super`(即`Windows`键)使用`S`表示。 -> 它们的排列顺序是这样的:`C-M-S-` ## Linux 路径的格式 -- 2.40.1 From 0fb5946b8eaca4ae243f5094cb8459371f9086b2 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Tue, 27 Aug 2024 19:58:01 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E5=AE=8C=E6=88=90=20Vim=20Editor=20(#22)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.hmtsai.cn/study-area-cn/study-area-cn/pulls/22 --- src/SUMMARY.md | 6 +- .../shell_and_shell_script/assets/2.3.2.1.png | Bin 0 -> 43816 bytes .../shell_and_shell_script/assets/2.3.2.2.png | Bin 0 -> 104227 bytes .../shell_and_shell_script/learn_shell.md | 1 + .../shell_and_shell_script.md | 1 + .../shell_and_shell_script/vim_editor.md | 198 ++++++++++++++++++ 6 files changed, 203 insertions(+), 3 deletions(-) create mode 100644 src/learn_linux_basic/shell_and_shell_script/assets/2.3.2.1.png create mode 100644 src/learn_linux_basic/shell_and_shell_script/assets/2.3.2.2.png create mode 100644 src/learn_linux_basic/shell_and_shell_script/learn_shell.md create mode 100644 src/learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md create mode 100644 src/learn_linux_basic/shell_and_shell_script/vim_editor.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index bfe88c3..494b1e9 100755 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -42,9 +42,9 @@ - [tar打包软件](./learn_linux_basic/file_and_path/tar_command.md) - [gzip与xz](./learn_linux_basic/file_and_path/gzip_and_xz.md) - [备份]() -- [Shell与Shell Script]() - - [学习Shell]() - - [Vim编辑器]() +- [Shell与Shell Script](./learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md) + - [学习Shell](./learn_linux_basic/shell_and_shell_script/learn_shell.md) + - [Vim编辑器](./learn_linux_basic/shell_and_shell_script/vim_editor.md) - [Shell Script基本语法]() - [条件判断语句]() - [循环]() diff --git a/src/learn_linux_basic/shell_and_shell_script/assets/2.3.2.1.png b/src/learn_linux_basic/shell_and_shell_script/assets/2.3.2.1.png new file mode 100644 index 0000000000000000000000000000000000000000..001dc47494df9f2c01f7f345be1746a65e58d6d4 GIT binary patch literal 43816 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 A?f?J) literal 0 HcmV?d00001 diff --git a/src/learn_linux_basic/shell_and_shell_script/assets/2.3.2.2.png b/src/learn_linux_basic/shell_and_shell_script/assets/2.3.2.2.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f39c6f2db4f94c3aec85c6e7c5c73d07b8be59 GIT binary patch literal 104227 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ðW`-$Nvt0l+B_*!9JPh%loQ^$^=J`W4vPJYjd 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Ν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 B56b`m literal 0 HcmV?d00001 diff --git a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md new file mode 100644 index 0000000..80716f7 --- /dev/null +++ b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md @@ -0,0 +1 @@ +# 学习 Shell diff --git a/src/learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md b/src/learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md new file mode 100644 index 0000000..9b4472d --- /dev/null +++ b/src/learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md @@ -0,0 +1 @@ +# Shell 与 Shell Script diff --git a/src/learn_linux_basic/shell_and_shell_script/vim_editor.md b/src/learn_linux_basic/shell_and_shell_script/vim_editor.md new file mode 100644 index 0000000..5b51fca --- /dev/null +++ b/src/learn_linux_basic/shell_and_shell_script/vim_editor.md @@ -0,0 +1,198 @@ +# Vim 编辑器 + +> 在 Vim 中所有的键位注意区分大小写,所有大写的命令都需要按下 `Shift` 键,例如 `V` 表示为 `S-v` + +不知道你有没有听说过 Bram 发明的 Vim 编辑器,有这么一个梗,就是: + +> 如何产生一串随机字符串?答:让新手退出 Vim。 + +你应该能看出 Vim 的操作是多么“反人类”了吧。事实上,在 Vim 发明的时候,电脑上还没有鼠标,所有的操作只能靠命令完成的(可以想一想 tty)。所以,Vim 的设计理念就是让用户通过键盘完成所有的操作。 + +但是,我们如果要通过终端远程管理一台 Linux 服务器,那么必须使用像 Vim 这样的终端编辑器。Vim 的功能比前文的 Nano 强大许多,如果你熟悉了 Vim,那么你的速度可能远远超过那些使用其它编辑器的人。 + +> Vim 的前身是 Vi,本文的绝大部分命令同样适用于 Vi。几乎所有的 Linux 发行版都自带 Vi 或是 Vim 其中之一,不用担心是否安装了 Vim。其实 Windows 上也可以安装 Vim。 +> +> 如果你在 Vim 中困住了,只需要按下 `:q!` 就可以退出 Vim 了 + +## 启动 Vim + +Vim 的启动十分简单,只需要在终端输入 `vim` 即可。 + +```bash +vim [文件名] +``` + +文件名是可选的。如果文件存在,Vim 就会打开这个文件;如果文件不存在,Vim 就会创建这个文件。 + +然后你会看到如下界面: + +![Vim](./assets/2.3.2.1.png) + +## Vim 的使用 + +首先,我们进入 Vim,会发现我们并不能像 Nano 一样直接打字。这是因为 Vim 默认处于“命令模式”,我们需要按下对应的按键可以进入到不同的模式。记住:无论在任何时候,按下 `Esc` 键都可以回到命令模式。 + +下面是一张 Vim 的键位图: + +![Vim Keymap](./assets/2.3.2.2.png) + +如果看不懂也没关系,下面我们会讲解其中常用的一些功能。 + +### Vim 的“模式” + +Vim 有一个最基本的东西“模式”,在不同模式下,快捷键的功能会有所不同。Vim 会在左下角提示你所在的模式。 + +以下是常见的模式: + +- `命令模式` 这个是 Vim 启动所在的模式,以下的所有内容均在这个模式内进行。其它模式均可以使用 `Esc` 退出到命令模式。 +- `编辑模式` 使用 `i` 进入,底部会提示 `-- INSERT --`(`-- 插入 --`),在这个模式下,你可以正常编辑文档,和一般的文本编辑器无异。 + - `替换模式` 底部会提示 `-- REPLACE --`(`-- 替换 --`),使用 `R` 进入,这个模式与编辑模式差别不大,但是你输入的所有内容都会替换光标后的内容。 +- `选择模式` 原名是“可视模式”,使用 `v` 进入,底部会提示 `-- VISUAL --`(`-- 可视 --`),你可以选择一段文本进行操作。 + - `选择行模式` 使用 `V` 进入,底部会提示 `-- VISUAL LINE --`(`-- 可视 行 --`),此时所有的选择都变成了整行选择。操作没有任何区别。 +- `底部命令行模式` 使用 `:`、`/`、`?` 进入(功能不同),此时整个底部都会变成命令行,以 `:` 与 `/` 等字符开头,此时可以输入命令,按下 `Enter` 就可以执行并退出。 + +### 移动光标 + +在命令模式下,我们可以使用键盘上的方向键来移动光标。但是,我们也可以使用 Vim 提供的命令来移动光标: + +```text + ^ + k +< h l > + j + v +``` + +> 当你熟悉了 `hjkl` 的使用后,你会发现使用这几个命令比使用方向键快多了 + +### 命令行 + +我们输入 `:` 就可以进入命令行(和上面的底部命令行模式有点区别)了。在 Vim 中,命令行负责了许多复杂的工作。 + +下面是最常见的命令组合: + +- `:w` 保存文件 +- `:wq` 保存并退出 Vim +- `:q!` 强制退出 Vim(文件未保存的情况下) + +> `!` 接在命令后表示强制执行一个命令 +> +> 另外,在 `w` 命令后面可以接上文件保存的路径,实现另存为的功能,例如 `:w 1.txt` + +其中命令行模式的其它功能我们在下面还会讲到。 + +### 删除与剪切 + +假如有一大段文字,在 Vim 中又不能像图形化一样鼠标一拖一删,那么如何快速删除呢? + +在 Vim 中,我们可以单独使用 `x` 和 `d` 命令,也可以在“可视模式”(待会会讲到)下编辑。 + +`x` 命令可以删除光标所指的当前字符,而 `d` 命令的功能就比较复杂了。`d` 命令是一个“多字符命令”,需要在 `d` 后面输入其它的东西搭配使用。 + +> `d` 命令实际上是剪切,后面会说如何粘贴 + +下面是一些例子(均包括开头的 `d`): + +- `dd` 删除整行 +- `dw` 删除当前单词(以空格分割) +- `d0` 删除这行从光标的位置到最前 +- `d$` 删除这行从光标的位置到最后 + +> 在 Vim 中,很多命令例如 `x`、`d` 和后文的 `y`、`G`、`gg` 等前面都可以加一个数字,表示重复这个命令多少次,例如 `5dd` 就是删除5行,包括 `hjkl` 也可以。 + +### 复制 + +前面我们说到了 `d` 的本质是剪切,那么我们如何复制呢?`y` 命令便可以复制。 + +> 注意:Vim 的剪贴板是独立的,和系统使用的不同 + +`y` 命令和 `d` 命令的用法如出一辙,例如 `yy` 就是复制整行,`yw` 就是复制单词。 + +### 粘贴 + +`p` 命令代表 `parse`,就是粘贴。可以粘贴使用 `y` 复制或者 `d` 剪切的内容。 + +### 跳转 + +如果我们想要快速在文件中跳转,那么`gg` 命令和 `G` 命令是不可或缺的。 + +`gg` 命令可以让你快速来到文件的开头,而 `G` 命令单独使用可以来到文件尾部, + +这个两个命令前面加上数字,就可以快速跳转到指定的行(`G` 命令也是从头开始数的)。 + +使用也非常简单,按一下就可以,前面也可以加数字。 + +另外,可以使用 `0` 跳转到行首和 `$` 跳转到行尾。 + +`d` 和 `y` 命令后面也可以接 `gg`、`G`、`0`、`$` 命令,效果就是从指定的位置选择到当前光标所在处。 + +### 重复上一个命令 + +这个命令是 `.`,没错,就是点。可以重复你的上一个命令。 + +### 选择模式(可视模式) + +可视模式,这个名字其实有点误导人。事实上,这个模式就是选择一段文字。(事实上你如果在终端中直接使用鼠标进入的就是这个模式) + +下面是在可视模式中的操作: + +- 使用 `hjkl` 移动(当然方向键也可以) +- `y` 复制 +- `d` 剪切 +- `x` 删除 +- `p` 覆盖粘贴 +- `gg`、`G`、`0`、`$` 移动光标 + +### 查找内容 + +在 Vim 中,我们可以使用 `/` 进行查找,输入 `/` 然后再输入关键词。 + +在查找过程中,我们可以使用 `n` 查找下一个,`N` 查找上一个。 + +### 小技巧:使用 `:!` 快速调试 Shell 脚本 + +在使用 Vim 的过程中,假如我们需要调试一个 Shell,那么我们就需要退出 Vim,启动脚本,再打开 Vim,十分的麻烦。不过 Vim 提供了一个命令 `:!` 来让我们快速运行一行命令。 + +```vim +:! [要执行的命令] +``` + +然后我们会跳出 Vim,并看到这个命令的执行结果。如果想要回到 Vim,只需要在程序结束后敲一下 `` 便可以回到 Vim 了。 + +另外,我们可以单独使用 `:!` 查看执行的历史记录。 + +## Vim 的配置 + +在 Vim 中,我们可以使用 `:set (no)[配置名]` 去开关某些配置。 + +对于有参数的配置,可以使用 `:set [配置名]=[值]` + +下面是一些常用配置: + +```vim +:set number "启用行号 +:set autoindent "自动缩进 +:set autoread "如果文件有更改自动更新文件 +:set wrap "自动折行 +:set encoding=utf-8 "设置显示格式,文件显示乱码可尝试调整 +:set fileencoding=utf-8 "设置写入格式 +:set hlsearch "高亮搜索结果 +``` + +这些配置都是临时启用,如果每次启动时都要手动配置,属实有点麻烦。那么该怎么办呢?我们可以将配置文件写入 `~/.vimrc` 文件实现永久配置。(注意所有配置不要带冒号) + +> 其实 Vim 的功能远不止如此,感兴趣的可自行了解 VimScript 相关内容。 + +## 课后作业 + +Vim 的功能十分强大,并且在维护时十分常用。下面的练习可以帮你更好掌握 Vim: + +> 试试看在下面的过程中,全程不使用方向键吧! + +1. 使用 `touch` 新建一份 `.sh` 文件,文件名随意 +2. 使用 Vim 编辑这个文件,使用 `echo` 输出一个 `helloworld` +3. 保存这个文件 +4. 使用 `:!` 运行这个文件 +5. 退出 Vim +6. 使用 Vim 定制你的 `~/.vimrc` 配置文件 +7. 你也可以将这个配置文件发到论坛上与小伙伴交流 -- 2.40.1 From baacf2a231c7212a967e0a7dbbf489eec2978ef6 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Tue, 27 Aug 2024 20:07:51 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/learn=5Flinux=5F?= =?UTF-8?q?basic/shell=5Fand=5Fshell=5Fscript/vim=5Feditor.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/shell_and_shell_script/vim_editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/learn_linux_basic/shell_and_shell_script/vim_editor.md b/src/learn_linux_basic/shell_and_shell_script/vim_editor.md index 5b51fca..035162b 100644 --- a/src/learn_linux_basic/shell_and_shell_script/vim_editor.md +++ b/src/learn_linux_basic/shell_and_shell_script/vim_editor.md @@ -169,7 +169,7 @@ Vim 有一个最基本的东西“模式”,在不同模式下,快捷键的 下面是一些常用配置: -```vim +```text :set number "启用行号 :set autoindent "自动缩进 :set autoread "如果文件有更改自动更新文件 -- 2.40.1 From f77e79a58c82e640e00e0660072aedf303050ab3 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Tue, 27 Aug 2024 20:15:44 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E5=88=A0=E9=99=A4vim=E7=9A=84=E9=AB=98?= =?UTF-8?q?=E4=BA=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/shell_and_shell_script/vim_editor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/learn_linux_basic/shell_and_shell_script/vim_editor.md b/src/learn_linux_basic/shell_and_shell_script/vim_editor.md index 035162b..86d3fbc 100644 --- a/src/learn_linux_basic/shell_and_shell_script/vim_editor.md +++ b/src/learn_linux_basic/shell_and_shell_script/vim_editor.md @@ -153,7 +153,7 @@ Vim 有一个最基本的东西“模式”,在不同模式下,快捷键的 在使用 Vim 的过程中,假如我们需要调试一个 Shell,那么我们就需要退出 Vim,启动脚本,再打开 Vim,十分的麻烦。不过 Vim 提供了一个命令 `:!` 来让我们快速运行一行命令。 -```vim +```text :! [要执行的命令] ``` -- 2.40.1 From 0eba964a5afabae6ed9e33512324cdb1ab98cd73 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Tue, 27 Aug 2024 22:39:25 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E4=B8=BB=E9=A2=98=E5=B0=8F=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20(#23)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.hmtsai.cn/study-area-cn/study-area-cn/pulls/23 --- theme/js/page.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/theme/js/page.js b/theme/js/page.js index 9570bab..53473b8 100644 --- a/theme/js/page.js +++ b/theme/js/page.js @@ -2,6 +2,26 @@ if (window.innerWidth > 640) { // 自动展开导航栏 document.getElementById("toc-drawer").setAttribute('open', true); } +// 细节修复 +function update_text() { + console.log(1) + // 修复 table + var tables = document.getElementsByTagName("table") + if (tables != undefined) { + for (let i = 0; i < tables.length; i++) { + tables[i].parentNode.classList.add('mdui-table'); + } + } + + // 修复 hr + var hrs = document.getElementsByTagName("hr") + if (hrs != undefined) { + for (let i = 0; i < hrs.length; i++) { + hrs[i].replaceWith(document.createElement("mdui-divider")); + } + } +} + function prevPage() { var link = document.getElementById("helper_prevpage").href; @@ -71,6 +91,9 @@ function changePage(url) { // 刷新高亮 hljs.highlightAll(); + + // 修复内容 + update_text(); } }; // 发送 XHR @@ -83,3 +106,5 @@ window.addEventListener('popstate', function (event) { console.log('pop state:', window.location.protocol + "//" + window.location.host + location.pathname); changePage(window.location.protocol + "//" + window.location.host + location.pathname); }); + +update_text(); \ No newline at end of file -- 2.40.1 From 20b6cc1b62f2ee0b33408e2cac03137b46cd7c13 Mon Sep 17 00:00:00 2001 From: hmtsai Date: Thu, 29 Aug 2024 11:07:52 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E7=94=A8=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file_and_path/diskpart_and_filesystem.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/learn_linux_basic/file_and_path/diskpart_and_filesystem.md b/src/learn_linux_basic/file_and_path/diskpart_and_filesystem.md index 8497ea6..06611b4 100644 --- a/src/learn_linux_basic/file_and_path/diskpart_and_filesystem.md +++ b/src/learn_linux_basic/file_and_path/diskpart_and_filesystem.md @@ -455,10 +455,10 @@ losetup -d [设备文件] ## 课后作业 -由于本节课非常长并且十分重要,所以设置了以下作业: +由于这章长且十分重要,所以设置以下作业: 1. 在虚拟机中创建一个虚拟磁盘,大小大于等于系统磁盘 -2. 给这个磁盘初始化分区表并且创建一个 xfs 分区,填满整个磁盘 +2. 给这个磁盘初始化分区表并且创建一个 xfs 分区,分区大小为整个磁盘的容量。 3. 尝试把这个磁盘挂载到 `/mnt/test` 4. 使用 dd 命令从 `/dev/zero` 读取,写入大小为 20MB 的空文件到 `/mnt/test/hello.img` 5. 卸载这个磁盘 -- 2.40.1 From 7cca05c26c19b4afda0d6f84e8d6dd8f4628f9cd Mon Sep 17 00:00:00 2001 From: hmtsai Date: Thu, 29 Aug 2024 11:44:39 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A4=87=E4=BB=BD?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/file_and_path/backup.md | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/learn_linux_basic/file_and_path/backup.md diff --git a/src/learn_linux_basic/file_and_path/backup.md b/src/learn_linux_basic/file_and_path/backup.md new file mode 100644 index 0000000..c47deb7 --- /dev/null +++ b/src/learn_linux_basic/file_and_path/backup.md @@ -0,0 +1,85 @@ +# 备份 + +## 概念 + +备份是计算机使用中非常重要的操作。原则上来说,进行任何重大修改(比如更新系统、更新生产环境中的软件。)之前都需要备份。 + +按照备份的范围来分,常用的备份方式有以下几种: + +- 全量备份:指把硬盘等存储介质中的所有文件**一次性完整复制**到其他介质上。 +- 增量备份:对上一次备份后的数据后修改的数据进行备份。 +- 差异备份:在完整备份之后,修改备份中与当前数据有差别的数据。 +- 选择性备份:仅对系统中的一部分进行备份。 + +按照备份的时间来分,常用的备份方式分为以下两种: + +- 计划性备份:比如一周一备份、一天一备份等。 +- 操作前备份:在重大操作前备份,以便在操作后出现问题时可以快速回滚,减少损失。 + +> 有的人可能会说:“我们自己用电脑,备份有什么意义呢?” 2017年,勒索病毒WannaCry的肆虐,为我们敲响了警钟。这个病毒用AES加密用户电脑上的所有文件,以勒索钱财。没有人知道,下一个被勒索的,究竟是不是自己,我们只能通过备份将损失降到最低。 + +## 备份软件 + +Linux下,常用的备份工具有以下几种: + +- dd:直接克隆整个分区。 +- tar:将需要备份的文件打包压缩。 +- rsync:可以进行增量备份、全量备份以及可以将备份传输到远程。 + +### `dd`命令 + +> 这个小节的内容,了解即可。 + +`dd`是一个比较简单的命令,它的功能也很简单,就是读入然后写出。 + +进行备份所需要了解的参数只有下面几个: + +- `if=`:输入的文件名。 +- `of=`:输出的文件名。 + +备份整块`sda`硬盘到`sdb`只需要以下命令。 + +```sh +dd if=/dev/sda of=/dev/sda +``` + +> 注意!这里的sdb物理容量必须大于sda!并且sdb上所有的文件都会被覆盖!**无法找回!** + +### `tar`命令 + +Linux中,可以直接使用`tar`打包需要的文件,比如备份`/etc`: + +```sh +cd / +sudo tar -zcvf etc_backup.gz etc +``` + +## `rsync`命令 + +在之前的章节中,我们创建了一个新的虚拟磁盘。现在,让我们挂载它到`/backup`进行备份。 + +```sh +sudo mkdir /backup +sudo mount /dev/sdb1 /backup +sudo mkdir /backup/etc +``` + +> 如果你完成了所有的课后作业,那么sdb上应该有唯一的一个xfs分区占满了整个磁盘。 + +现在,我们使用`rsync`命令,将虚拟磁盘中的文件复制到新的虚拟磁盘上。 + +```sh +sudo rsync -avz /etc /backup/etc +``` + +`rsync`命令的参数如下: + +- `-a`:递归模式,表示以递归方式传输文件,并保持所有文件属性。 +- `-v`:显示详细输出。 +- `-z`:压缩传输的数据。 +- `/etc`:源文件。 +- `/backup/etc`:目标文件。 + +`rsync`命令会自动判断源文件和目标文件是否相同,如果相同,则不会进行复制。如果不同,则会复制不同的文件。 + +> `rsync`命令是一个非常强大的命令,它不仅可以进行文件复制,还可以进行文件的同步、文件的删除等操作。如果你需要备份大量的文件,那么`rsync`命令是一个非常好的选择。 -- 2.40.1 From 8b3c8339fc85451c72e886ed94bc1ac70b91a959 Mon Sep 17 00:00:00 2001 From: Hmtsai Date: Thu, 29 Aug 2024 11:58:08 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/file_and_path/backup.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/learn_linux_basic/file_and_path/backup.md b/src/learn_linux_basic/file_and_path/backup.md index c47deb7..90d3ee4 100644 --- a/src/learn_linux_basic/file_and_path/backup.md +++ b/src/learn_linux_basic/file_and_path/backup.md @@ -30,13 +30,6 @@ Linux下,常用的备份工具有以下几种: > 这个小节的内容,了解即可。 -`dd`是一个比较简单的命令,它的功能也很简单,就是读入然后写出。 - -进行备份所需要了解的参数只有下面几个: - -- `if=`:输入的文件名。 -- `of=`:输出的文件名。 - 备份整块`sda`硬盘到`sdb`只需要以下命令。 ```sh -- 2.40.1 From 91e766aea28546c947000bcc77af111602649ef3 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Thu, 29 Aug 2024 12:03:15 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/learn=5Flinux=5F?= =?UTF-8?q?basic/file=5Fand=5Fpath/backup.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/file_and_path/backup.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/learn_linux_basic/file_and_path/backup.md b/src/learn_linux_basic/file_and_path/backup.md index 90d3ee4..b4246ef 100644 --- a/src/learn_linux_basic/file_and_path/backup.md +++ b/src/learn_linux_basic/file_and_path/backup.md @@ -49,16 +49,16 @@ sudo tar -zcvf etc_backup.gz etc ## `rsync`命令 -在之前的章节中,我们创建了一个新的虚拟磁盘。现在,让我们挂载它到`/backup`进行备份。 +在之前的章节中,我们创建了一个新的虚拟磁盘。现在,让我们挂载它到`/mnt/backup`进行备份。 + +> 如果你完成了之前的课后作业,那么sdb上应该有唯一的一个xfs分区占满了整个磁盘。如果你已经持久挂载了磁盘,本步骤可以跳过。 ```sh -sudo mkdir /backup -sudo mount /dev/sdb1 /backup -sudo mkdir /backup/etc +sudo mkdir /mnt/backup +sudo mount /dev/sdb1 /mnt/backup +sudo mkdir /mnt/backup/etc ``` -> 如果你完成了所有的课后作业,那么sdb上应该有唯一的一个xfs分区占满了整个磁盘。 - 现在,我们使用`rsync`命令,将虚拟磁盘中的文件复制到新的虚拟磁盘上。 ```sh @@ -75,4 +75,5 @@ sudo rsync -avz /etc /backup/etc `rsync`命令会自动判断源文件和目标文件是否相同,如果相同,则不会进行复制。如果不同,则会复制不同的文件。 -> `rsync`命令是一个非常强大的命令,它不仅可以进行文件复制,还可以进行文件的同步、文件的删除等操作。如果你需要备份大量的文件,那么`rsync`命令是一个非常好的选择。 +> `rsync`命令是一个非常强大的命令,它不仅可以进行文件复制,还可以联网进行文件的同步、文件的删除等操作。如果你需要备份大量的文件,那么`rsync`命令是一个非常好的选择。 + -- 2.40.1 From 4a07a842f5cfc868024738524e9cb446fd1bbf97 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Thu, 29 Aug 2024 12:03:40 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/learn=5Flinux=5F?= =?UTF-8?q?basic/file=5Fand=5Fpath/backup.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/file_and_path/backup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/learn_linux_basic/file_and_path/backup.md b/src/learn_linux_basic/file_and_path/backup.md index b4246ef..0814e8e 100644 --- a/src/learn_linux_basic/file_and_path/backup.md +++ b/src/learn_linux_basic/file_and_path/backup.md @@ -62,7 +62,7 @@ sudo mkdir /mnt/backup/etc 现在,我们使用`rsync`命令,将虚拟磁盘中的文件复制到新的虚拟磁盘上。 ```sh -sudo rsync -avz /etc /backup/etc +sudo rsync -avz /etc /mnt/backup/etc ``` `rsync`命令的参数如下: @@ -71,7 +71,7 @@ sudo rsync -avz /etc /backup/etc - `-v`:显示详细输出。 - `-z`:压缩传输的数据。 - `/etc`:源文件。 -- `/backup/etc`:目标文件。 +- `/mnt/backup/etc`:目标文件。 `rsync`命令会自动判断源文件和目标文件是否相同,如果相同,则不会进行复制。如果不同,则会复制不同的文件。 -- 2.40.1 From 83fa4d4b0385bc0724834db4e24455eb62c94de4 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Thu, 29 Aug 2024 12:05:01 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/SUMMARY.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 494b1e9..1b4bd82 100755 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -41,7 +41,7 @@ - [在 VirtualBox 上创建虚拟磁盘](./learn_linux_basic/file_and_path/diskpart_and_filesystem/create_disk_on_vbox.md) - [tar打包软件](./learn_linux_basic/file_and_path/tar_command.md) - [gzip与xz](./learn_linux_basic/file_and_path/gzip_and_xz.md) - - [备份]() + - [备份](./learn_linux_basic/file_and_path/backup.md) - [Shell与Shell Script](./learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md) - [学习Shell](./learn_linux_basic/shell_and_shell_script/learn_shell.md) - [Vim编辑器](./learn_linux_basic/shell_and_shell_script/vim_editor.md) -- 2.40.1 From c0fd2c82bee2c3c3bb21ef737f4a2e809525ebc7 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Thu, 29 Aug 2024 12:07:14 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E5=8C=85=E5=90=AB=E5=AD=97=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/book.toml b/book.toml index 9cef7d0..5365e91 100755 --- a/book.toml +++ b/book.toml @@ -14,6 +14,7 @@ additional-css = [ "theme/css/font.css", "theme/font/icons.woff2", "theme/font/noto.otf", + "theme/font/sourcecodepro.woff2", ] additional-js = [ "theme/js/mdui.global.js", -- 2.40.1 From 8bf629d14018553a0c18ee411adb67aa0c2b7fa1 Mon Sep 17 00:00:00 2001 From: hmtsai Date: Thu, 29 Aug 2024 13:06:59 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=EF=BC=9A=E2=80=9D=E5=AD=A6=E4=B9=A0Shell=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SUMMARY.md | 2 +- .../shell_and_shell_script/learn_shell.md | 168 ++++++++++++++++++ 2 files changed, 169 insertions(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 1b4bd82..70a51fc 100755 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -44,6 +44,7 @@ - [备份](./learn_linux_basic/file_and_path/backup.md) - [Shell与Shell Script](./learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md) - [学习Shell](./learn_linux_basic/shell_and_shell_script/learn_shell.md) + - [Job]() - [Vim编辑器](./learn_linux_basic/shell_and_shell_script/vim_editor.md) - [Shell Script基本语法]() - [条件判断语句]() @@ -56,7 +57,6 @@ - [程序、线程和进程]() - [什么是程序]() - [线程和进程]() - - [Job]() - [进程与线程的管理]() - [特殊的进程和文件]() - [SELinux]() diff --git a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md index 80716f7..e06ef95 100644 --- a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md +++ b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md @@ -1 +1,169 @@ # 学习 Shell + +## 概念 + +Shell(也称为壳)在计算机中指“为用户提供用户界面”的软件,通常指的是命令行界面的解析器。一般来说,这个词是指操作系统中提供访问内核所提供之服务的程序。Shell也用于泛指所有为用户提供操作界面的程序,也就是程序和用户交互的层面。因此与之相对的是内核(英语:Kernel),内核不提供和用户的交互功能。[1] + +但是,在Linux中,我们通常所讲的Shell是指命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序来实现自动化的功能。 + +Shell 也指代一种命令语言,由这种语言编写的脚本称为Shell Script。 + +Shell 命令语言的标准为参考AT&T的ksh和GNU计划的Bourne Again Shell (bash)制定的The Open Group Base Specifications Issue 6 中的 [2.Shell Command Language](https://pubs.opengroup.org/onlinepubs/9690949599/utilities/xcu_chap02.html)。 + +本章我们将学习Shell的基本使用。 + +## 快捷键 + +Shell也有快捷键?是的。大多数Shell都支持以下的快捷键: + +- `C-C`:终止当前进程。 +- `C-Z`:暂停当前进程。 +- `C-D`:退出当前Shell。 +- `C-L`:清屏。 + +在Bash中,还有一些特殊的快捷键,它们继承自GNU Emacs编辑器,用于快速移动光标以及编辑文本: + +- `C-A`:移动光标到行首。 +- `C-E`:移动光标到行尾。 +- `C-B`:向左移动光标。 +- `C-F`:向右移动光标。 +- `C-K`:删除从光标位置到行尾的文本。 +- `C-U`:删除从光标位置到行首的文本。 +- `C-W`:删除光标左侧的单词。 +- `C-Y`:粘贴之前删除的文本。 + +## 命令 + +命令分为内部命令和外部命令,内部命令是Shell自带的命令,外部命令是Shell外部的可执行程序。 + +一条Shell的指令的标准格式为: + +```sh +command [options] [arguments] +``` + +其中,`command`是命令的名称,`options`是命令的选项,`arguments`是命令的参数。 + +它的格式不一定必须遵守,但是通常遵守这个格式会带来更好的可读性(用什么工具采用什么方式对什么文件做什么)。 + +但是,有一个例外,就是指定输出,这时,我们推荐將指定输出的选项以及参数放在文件明后面。 + +例如,`ls`命令用于列出当前目录下的文件和文件夹,它的选项可以是`-l`、`-a`等,参数可以是文件名或目录名。 + +## 变量 + +Shell中的变量分为环境变量和用户变量,环境变量是Shell启动时自动设置的变量,用户变量是用户自定义的变量。 + +用户变量可以通过`export`命令导出为环境变量,例如: + +```sh +export GREET="Hello, World!" +``` + +然后我们启动一个新的 Shell,仍然可以在环境中找到这个变量。 + +```sh +bash -c 'echo $GREET' +``` + +用户变量可以通过`declare`命令声明,例如: + +```sh +declare USER_GREET="Hello, Shell" +``` + +变量可以通过`${}`或`$`符号来引用,例如: + +```sh +echo ${GREET} +echo $USER_GREET +``` + +## 特殊的环境变量 + +Shell中有一些特殊的环境变量,它们在Shell启动时自动设置,例如: + +- `$HOME`:当前用户的主目录。 +- `$PATH`:可执行文件的搜索路径。 +- `$SHELL`:当前Shell的名称。 +- `$PWD`:当前工作目录。 +- `$USER`:当前用户的用户名。 + +其中最重要也是最常用的就是PATH,它决定了Shell在执行命令时搜索可执行文件的路径。当我们发现明明安装了某个软件但是找不到可执行文件的时候应该首先检查PATH的设置。 + +## 管道 + +Shell中的管道是链接两个命令的方式,管道遵守下面的格式。 + +```sh +command1 | command2 +``` + +`command1`的输出将会作为`command2`的输入提供,例如: + +```sh +ls -a | grep "test" +``` + +这个命令将会列出当前目录下的所有文件,然后使用`grep`命令过滤出文件名包含"test"的文件。 + +## 输出重定向 + +Shell中的重定向是改变命令的输出地点的方式,重定向遵守下面的格式。 + +```sh +command > file +``` + +`command`的输出将会被重定向到`file`中,例如: + +```sh +ls -a > files.txt +``` + +这个命令将会列出当前目录下的所有文件,然后使用`>`符号将输出重定向到`files.txt`中。 + +## 输入重定向 + +Shell中的输入重定向是改变命令的输入地点的方式,输入重定向遵守下面的格式。 + +```sh +command < file +``` + +`command`的输入将会被重定向到`file`中,例如: + +```sh +cat < files.txt +``` + +这个命令将会读取`files.txt`中的内容,然后使用`cat`命令输出到标准输出中。 + +## 将命令的输出作为参数 + +让我们想像这个场景:有一个文件有一个文件名列表,我们想要获取这些文件的详细信息,这怎么实现呢? + +运算符`$()`可以将命令的输出作为参数,它的标准格式如下: + +```sh +command1 $(command2) +``` + +`command2`的输出将会作为`command1`的参数。 + +实现前文的场景所需的命令如下: + +```sh +ls -l $(cat files.txt) +``` + +这个命令将会读取`files.txt`中的文件名列表,然后使用`ls -l`命令获取这些文件的详细信息。 + +## 课后作业 + +1. 使用Shell的输出重定向功能,在主目录中创建一个保存了住目录中所有文件的文件,命名为`files.txt` +2. 使用`cat`读取所有文件的内容。 + +## 参考 + +- [Shell - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/Shell) \ No newline at end of file -- 2.40.1 From 4711a455692adc2ad48bbe2dbb7f2bd3dfae1d31 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Fri, 30 Aug 2024 09:56:34 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E6=94=B9=E9=94=99=E5=88=AB=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/shell_and_shell_script/learn_shell.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md index e06ef95..d23776d 100644 --- a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md +++ b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md @@ -161,7 +161,7 @@ ls -l $(cat files.txt) ## 课后作业 -1. 使用Shell的输出重定向功能,在主目录中创建一个保存了住目录中所有文件的文件,命名为`files.txt` +1. 使用Shell的输出重定向功能,在主目录中创建一个保存了主目录中所有文件列表的文件,命名为`files.txt` 2. 使用`cat`读取所有文件的内容。 ## 参考 -- 2.40.1 From 6e25b485ff265c3e0719d78d33c5d428d2babf9c Mon Sep 17 00:00:00 2001 From: cxykevin Date: Fri, 30 Aug 2024 10:18:15 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shell_and_shell_script/learn_shell.md | 68 ++++++++++--------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md index d23776d..218f2ab 100644 --- a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md +++ b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md @@ -4,24 +4,24 @@ Shell(也称为壳)在计算机中指“为用户提供用户界面”的软件,通常指的是命令行界面的解析器。一般来说,这个词是指操作系统中提供访问内核所提供之服务的程序。Shell也用于泛指所有为用户提供操作界面的程序,也就是程序和用户交互的层面。因此与之相对的是内核(英语:Kernel),内核不提供和用户的交互功能。[1] -但是,在Linux中,我们通常所讲的Shell是指命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序来实现自动化的功能。 +但是,在 Linux 中,我们通常所讲的 Shell 是指命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序来实现自动化的功能。 -Shell 也指代一种命令语言,由这种语言编写的脚本称为Shell Script。 +Shell 也指代一种命令语言,由这种语言编写的脚本称为 Shell Script。 -Shell 命令语言的标准为参考AT&T的ksh和GNU计划的Bourne Again Shell (bash)制定的The Open Group Base Specifications Issue 6 中的 [2.Shell Command Language](https://pubs.opengroup.org/onlinepubs/9690949599/utilities/xcu_chap02.html)。 +Shell 命令语言的标准为参考 AT&T 的 ksh 和 GNU 计划的 Bourne Again Shell (bash) 制定的 The Open Group Base Specifications Issue 6 中的 [2.Shell Command Language](https://pubs.opengroup.org/onlinepubs/9690949599/utilities/xcu_chap02.html)。 -本章我们将学习Shell的基本使用。 +本章我们将学习 Shell 的基本使用。 ## 快捷键 -Shell也有快捷键?是的。大多数Shell都支持以下的快捷键: +Shell 也有快捷键?是的。大多数 Shell 都支持以下的快捷键: - `C-C`:终止当前进程。 - `C-Z`:暂停当前进程。 - `C-D`:退出当前Shell。 - `C-L`:清屏。 -在Bash中,还有一些特殊的快捷键,它们继承自GNU Emacs编辑器,用于快速移动光标以及编辑文本: +在 Bash 中,还有一些特殊的快捷键,它们继承自 GNU Emacs 编辑器,用于快速移动光标以及编辑文本: - `C-A`:移动光标到行首。 - `C-E`:移动光标到行尾。 @@ -34,54 +34,58 @@ Shell也有快捷键?是的。大多数Shell都支持以下的快捷键: ## 命令 -命令分为内部命令和外部命令,内部命令是Shell自带的命令,外部命令是Shell外部的可执行程序。 +命令分为内部命令和外部命令,内部命令是 Shell 自带的命令,外部命令是 Shell 外部的可执行程序。 -一条Shell的指令的标准格式为: +一条 Shell 的指令的标准格式为: ```sh command [options] [arguments] ``` -其中,`command`是命令的名称,`options`是命令的选项,`arguments`是命令的参数。 +其中,`command` 是命令的名称,`options` 是命令的选项,`arguments` 是命令的参数。 它的格式不一定必须遵守,但是通常遵守这个格式会带来更好的可读性(用什么工具采用什么方式对什么文件做什么)。 但是,有一个例外,就是指定输出,这时,我们推荐將指定输出的选项以及参数放在文件明后面。 -例如,`ls`命令用于列出当前目录下的文件和文件夹,它的选项可以是`-l`、`-a`等,参数可以是文件名或目录名。 +例如,`ls` 命令用于列出当前目录下的文件和文件夹,它的选项可以是 `-l`、`-a` 等,参数可以是文件名或目录名。 ## 变量 -Shell中的变量分为环境变量和用户变量,环境变量是Shell启动时自动设置的变量,用户变量是用户自定义的变量。 +Shell 中的变量分为环境变量和用户变量,环境变量是Shell启动时自动设置的变量,用户变量是用户自定义的变量。 -用户变量可以通过`export`命令导出为环境变量,例如: +用户变量可以通过 `export` 命令设置为临时环境变量,例如: ```sh export GREET="Hello, World!" ``` -然后我们启动一个新的 Shell,仍然可以在环境中找到这个变量。 +然后我们在这个 Shell 里启动一个新的 Shell,仍然可以在环境中找到这个变量。 ```sh bash -c 'echo $GREET' ``` -用户变量可以通过`declare`命令声明,例如: +> `export` 声明的变量只在当前环境下有效,如果你开启了个新的终端或者重启,那么这个环境就无效了 + +用户变量可以通过 `declare` 命令声明,例如: ```sh declare USER_GREET="Hello, Shell" ``` -变量可以通过`${}`或`$`符号来引用,例如: +变量可以通过 `${}` 或 `$` 符号来引用,例如: ```sh echo ${GREET} echo $USER_GREET ``` +> 当变量的前后有别的内容紧挨着,那么只能使用 `${}`。 + ## 特殊的环境变量 -Shell中有一些特殊的环境变量,它们在Shell启动时自动设置,例如: +Shell 中有一些特殊的环境变量,它们在 Shell 启动时自动设置,例如: - `$HOME`:当前用户的主目录。 - `$PATH`:可执行文件的搜索路径。 @@ -89,67 +93,69 @@ Shell中有一些特殊的环境变量,它们在Shell启动时自动设置, - `$PWD`:当前工作目录。 - `$USER`:当前用户的用户名。 -其中最重要也是最常用的就是PATH,它决定了Shell在执行命令时搜索可执行文件的路径。当我们发现明明安装了某个软件但是找不到可执行文件的时候应该首先检查PATH的设置。 +其中最重要也是最常用的就是 PATH,它决定了Shell在执行命令时搜索可执行文件的路径。当我们发现明明安装了某个软件但是找不到可执行文件的时候应该首先检查 PATH 的设置。如果你熟悉 Windows,你会发现 Windows 的 PATH 是一串由分号分隔的路径。而 Linux 下的路径使用的是 `:` 冒号分隔。 + +> 在 Windows 中的 PATH 中有一条路径是 `.` 就是当前目录,而 Linux 中默认是不会搜索当前目录的。如果你在当前目录有一个 `run.sh`,那么你必须要使用 `./run.sh` 才能执行。 ## 管道 -Shell中的管道是链接两个命令的方式,管道遵守下面的格式。 +Shell 中的管道是链接两个命令的方式,管道遵守下面的格式。 ```sh command1 | command2 ``` -`command1`的输出将会作为`command2`的输入提供,例如: +`command1` 的输出将会作为 `command2` 的输入提供,例如: ```sh ls -a | grep "test" ``` -这个命令将会列出当前目录下的所有文件,然后使用`grep`命令过滤出文件名包含"test"的文件。 +这个命令将会列出当前目录下的所有文件,然后使用 `grep` 命令过滤出文件名包含"test"的文件。 ## 输出重定向 -Shell中的重定向是改变命令的输出地点的方式,重定向遵守下面的格式。 +Shell 中的重定向是改变命令的输出地点的方式,重定向遵守下面的格式。 ```sh command > file ``` -`command`的输出将会被重定向到`file`中,例如: +`command` 的输出将会被重定向到 `file` 中,例如: ```sh ls -a > files.txt ``` -这个命令将会列出当前目录下的所有文件,然后使用`>`符号将输出重定向到`files.txt`中。 +这个命令将会列出当前目录下的所有文件,然后使用 `>` 符号将输出重定向到 `files.txt` 中。 ## 输入重定向 -Shell中的输入重定向是改变命令的输入地点的方式,输入重定向遵守下面的格式。 +Shell 中的输入重定向是改变命令的输入地点的方式,输入重定向遵守下面的格式。 ```sh command < file ``` -`command`的输入将会被重定向到`file`中,例如: +`command` 的输入将会被重定向到 `file` 中,例如: ```sh cat < files.txt ``` -这个命令将会读取`files.txt`中的内容,然后使用`cat`命令输出到标准输出中。 +这个命令将会读取 `files.txt` 中的内容,然后使用 `cat` 命令输出到标准输出中。 ## 将命令的输出作为参数 让我们想像这个场景:有一个文件有一个文件名列表,我们想要获取这些文件的详细信息,这怎么实现呢? -运算符`$()`可以将命令的输出作为参数,它的标准格式如下: +运算符 `$()` 可以将命令的输出作为参数,它的标准格式如下: ```sh command1 $(command2) ``` -`command2`的输出将会作为`command1`的参数。 +`command2` 的输出将会作为 `command1` 的参数。 实现前文的场景所需的命令如下: @@ -157,12 +163,12 @@ command1 $(command2) ls -l $(cat files.txt) ``` -这个命令将会读取`files.txt`中的文件名列表,然后使用`ls -l`命令获取这些文件的详细信息。 +这个命令将会读取 `files.txt` 中的文件名列表,然后使用 `ls -l` 命令获取这些文件的详细信息。 ## 课后作业 -1. 使用Shell的输出重定向功能,在主目录中创建一个保存了主目录中所有文件列表的文件,命名为`files.txt` -2. 使用`cat`读取所有文件的内容。 +1. 使用 Shell 的输出重定向功能,在主目录中创建一个保存了主目录中所有文件列表的文件,命名为 `files.txt` +2. 使用 `cat` 读取所有文件的内容。 ## 参考 -- 2.40.1 From d3ac3e700e063da4d03f8cc4a2387e569a0106b3 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Fri, 30 Aug 2024 10:20:41 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shell_and_shell_script/learn_shell.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md index 218f2ab..699ddc3 100644 --- a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md +++ b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md @@ -1,4 +1,4 @@ -# 学习 Shell +# 学习 Shell。 ## 概念 @@ -38,7 +38,7 @@ Shell 也有快捷键?是的。大多数 Shell 都支持以下的快捷键: 一条 Shell 的指令的标准格式为: -```sh +```bash command [options] [arguments] ``` @@ -56,13 +56,13 @@ Shell 中的变量分为环境变量和用户变量,环境变量是Shell启动 用户变量可以通过 `export` 命令设置为临时环境变量,例如: -```sh +```bash export GREET="Hello, World!" ``` 然后我们在这个 Shell 里启动一个新的 Shell,仍然可以在环境中找到这个变量。 -```sh +```bash bash -c 'echo $GREET' ``` @@ -70,13 +70,13 @@ bash -c 'echo $GREET' 用户变量可以通过 `declare` 命令声明,例如: -```sh +```bash declare USER_GREET="Hello, Shell" ``` 变量可以通过 `${}` 或 `$` 符号来引用,例如: -```sh +```bash echo ${GREET} echo $USER_GREET ``` @@ -101,13 +101,13 @@ Shell 中有一些特殊的环境变量,它们在 Shell 启动时自动设置 Shell 中的管道是链接两个命令的方式,管道遵守下面的格式。 -```sh +```bash command1 | command2 ``` `command1` 的输出将会作为 `command2` 的输入提供,例如: -```sh +```bash ls -a | grep "test" ``` @@ -117,13 +117,13 @@ ls -a | grep "test" Shell 中的重定向是改变命令的输出地点的方式,重定向遵守下面的格式。 -```sh +```bash command > file ``` `command` 的输出将会被重定向到 `file` 中,例如: -```sh +```bash ls -a > files.txt ``` @@ -133,13 +133,13 @@ ls -a > files.txt Shell 中的输入重定向是改变命令的输入地点的方式,输入重定向遵守下面的格式。 -```sh +```bash command < file ``` `command` 的输入将会被重定向到 `file` 中,例如: -```sh +```bash cat < files.txt ``` @@ -151,7 +151,7 @@ cat < files.txt 运算符 `$()` 可以将命令的输出作为参数,它的标准格式如下: -```sh +```bash command1 $(command2) ``` @@ -159,7 +159,7 @@ command1 $(command2) 实现前文的场景所需的命令如下: -```sh +```bash ls -l $(cat files.txt) ``` -- 2.40.1 From 124e4a030810cd3e39c41cdf802d780eae0eab35 Mon Sep 17 00:00:00 2001 From: cxykevin Date: Fri, 30 Aug 2024 10:40:12 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/learn=5Flinux=5F?= =?UTF-8?q?basic/shell=5Fand=5Fshell=5Fscript/learn=5Fshell.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/learn_linux_basic/shell_and_shell_script/learn_shell.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md index 699ddc3..7626dd2 100644 --- a/src/learn_linux_basic/shell_and_shell_script/learn_shell.md +++ b/src/learn_linux_basic/shell_and_shell_script/learn_shell.md @@ -18,9 +18,11 @@ Shell 也有快捷键?是的。大多数 Shell 都支持以下的快捷键: - `C-C`:终止当前进程。 - `C-Z`:暂停当前进程。 -- `C-D`:退出当前Shell。 +- `C-D`:退出当前Shell(实际上是发送一个 `EOF` 文件结束字符)。 - `C-L`:清屏。 +> 其中 `C-C` 和 `C-D` 是十分重要的两个快捷键,十分常用。 + 在 Bash 中,还有一些特殊的快捷键,它们继承自 GNU Emacs 编辑器,用于快速移动光标以及编辑文本: - `C-A`:移动光标到行首。 @@ -32,6 +34,8 @@ Shell 也有快捷键?是的。大多数 Shell 都支持以下的快捷键: - `C-W`:删除光标左侧的单词。 - `C-Y`:粘贴之前删除的文本。 +> 这部分只需要了解即可 + ## 命令 命令分为内部命令和外部命令,内部命令是 Shell 自带的命令,外部命令是 Shell 外部的可执行程序。 -- 2.40.1