forked from study-area-cn/learn-linux-basic
拆分 Shell
This commit is contained in:
parent
f2f87d14bf
commit
258025a5b8
|
@ -1,16 +1,6 @@
|
|||
# 学习 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 的使用吧!
|
||||
|
||||
## 快捷键
|
||||
|
||||
|
@ -174,10 +164,6 @@ ls -l $(cat files.txt)
|
|||
1. 使用 Shell 的输出重定向功能,在主目录中创建一个保存了主目录中所有文件列表的文件,命名为 `files.txt`
|
||||
2. 使用 `cat` 读取所有文件的内容。
|
||||
|
||||
## 参考
|
||||
|
||||
- [Shell - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/Shell)
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
||||
|
|
|
@ -1 +1,55 @@
|
|||
# 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
|
||||
|
|
Loading…
Reference in New Issue