拆分 Shell

This commit is contained in:
cxykevin 2024-09-01 11:27:46 +08:00
parent f2f87d14bf
commit 258025a5b8
2 changed files with 55 additions and 15 deletions

View File

@ -1,16 +1,6 @@
# 学习 Shell # 学习 Shell
## 概念 在上一章我们简单了解了 Shell接下来让我们学习 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 的基本使用。
## 快捷键 ## 快捷键
@ -174,10 +164,6 @@ ls -l $(cat files.txt)
1. 使用 Shell 的输出重定向功能,在主目录中创建一个保存了主目录中所有文件列表的文件,命名为 `files.txt` 1. 使用 Shell 的输出重定向功能,在主目录中创建一个保存了主目录中所有文件列表的文件,命名为 `files.txt`
2. 使用 `cat` 读取所有文件的内容。 2. 使用 `cat` 读取所有文件的内容。
## 参考
- [Shell - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/Shell)
--- ---
> study-area-cn > study-area-cn

View File

@ -1 +1,55 @@
# Shell 与 Shell Script # Shell 与 Shell Script
在之前的“Linux 常识”中我们接触到了一些简单的 Linux 命令。实际上,这些命令都被运行在一个叫 `Shell` 的程序上。
## 什么是 Shell
> Shell也称为壳在计算机中指“为用户提供用户界面”的软件通常指的是命令行界面的解析器。一般来说这个词是指操作系统中提供访问内核所提供之服务的程序。Shell也用于泛指所有为用户提供操作界面的程序也就是程序和用户交互的层面。因此与之相对的是内核英语Kernel内核不提供和用户的交互功能。[1]
>
> 但是,在 Linux 中,我们通常所讲的 Shell 是指命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序来实现自动化的功能。
>
> Shell 也指代一种命令语言,由这种语言编写的脚本称为 Shell Script。
上面的内容有些难懂,你不妨可以理解为 Shell 就是用户的命令与 Kernel 之间的“桥梁”。
## Shell 有哪些
在 Windows 上,你或许知道 CMD。CMD 在 Windows 上其实就扮演了Shell的作用。但是在 Linux 上,就连 Shell 也有好多种。下面是许多常见的 Shell
- `sh`Bourne Shell现在只在某些“嵌入式”的 Linux 设备上使用(绝大部分都用“软链接”指向其它 Shell。在现在的 Linux 上输入 `sh`,打开的大概率是 Bash。
- `bash`Bourne Again Shell被使用最广泛的 Shell现在几乎所有的发行版都能看见 Bash 的身影。
- `ash` 嵌入式常见的 Shell功能相比 Bash 有些许缺失,但是体积十分的小,通常由 `busybox`(一个 Linux 基本命令的微型实现)提供。
- `dash` 和 ash 都是用于嵌入式的微型 Shell。
- `zsh` 一个新兴的 Shell扩展能力十分强被现在的 MacOS 作为默认 Shell。部分语法略有不同。
下文的所有内容均以 `bash` 为标准。
> Shell 命令语言的标准为参考 AT&T 的 ksh 和 GNU 计划的 Bourne Again Shell 制定的 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
```bash
bash
```
可以输入 `exit` 退出当前 Shell返回到上一级 Shell如有
也可以使用 `-c` 单独执行一行 Shell 命令然后退出:
```bash
bash -c "<要执行的命令>"
```
例如 `bash -c "ls"` 和直接执行 `ls` 的效果是一样的。那么 `-c` 选项有什么用呢?好处就是启动了一个新的 Shell 环境,在执行脚本的时候和原来环境的不会冲突。
## 参考
- [Shell - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/Shell)
---
> study-area-cn