Linxu Shell 介绍
Posted sparkchan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linxu Shell 介绍相关的知识,希望对你有一定的参考价值。
Shell 的启动
每个用户的登陆自动启动的 Shell 在 /etc/passwd
文件中定义。例如我们可以使用 cat /etc/passwd
命令查看 root 用户在配置文件中配置默认启动的 Shell。从下图中可以看到,root 用户默认启动的 Shell 是 /bin/bash
这个 Shell。
Shell 的父子关系
在父 Shell 中执行 /bin/bash
命令会打开一个新的子 Shell,再执行命令的话就是在子 Shell中执行的。首先在当前 Shell 中执行 /bin/bash
,然后再执行 ps --forest
命令查看进程关系,可以看到如下结果。这里显示有两个 Shell,它们的关系是父子关系,同时在子 Shell 中有一个 ps 进程,它是子 Shell 的子进程。可以使用 exit
命令退出当前 Shell,若当前 Shell 为登陆时创建的 Shell,则会退出登陆。
-
进程列表
使用小括号包裹一组命令可以使该组命令成为进程列表,即启动一个子 Shell 来执行这组命令。可以通过命令
echo $BASH_SUBSHELL
来判断是否有子 Shell 生成。该命令返回 0 则表明没有子 Shell 生成;如果返回 1 或者更大值,则表明有子 Shell 生成。例如下面的命令(pwd; echo $BASH_SUBSHELL)
。它的返回值为 1 。表明有一个子 Shell。 -
后台使用
将进程置于后台模式,可以在子 Shell 中处理繁重的工作,同时不会让子 Shell 的 IO 受制于终端。例如利用
(tar -cf testuser.tar /home/testuser; tar -cf root.tar /home/root)&
后台进程创建备份文件。
使用协程。协程可以同时做两件事。它在后台生层一个子 Shell,并在这个子 Shell 中执行命令。# 启动一个协程 coproc cat # 往协程输入数据 echo "hello" >& ${COPROC[1]} # 读取协程的输入数据 read -u "${COPROC[0]}" a # 显示读取数据 echo $a
参考
[1] : Linux 命令行和 Shell 脚本编程大全
[2] : Is coproc command the same as command &?
[3] : Bash编程之协作进程coproc
以上是关于Linxu Shell 介绍的主要内容,如果未能解决你的问题,请参考以下文章