《Linux命令行与shell脚本编程大全》- 读书笔记3 - 理解shell
2017-08-31 22:50
183 查看
当用户登录终端的时候,通常会启动一个默认的交互式shell。系统究竟启动哪个shell,这取决于用户配置。一般这个shell都是/bin/shell。默认的系统shell(/bin/sh)用于系统shell脚本,如那些在系统启动时运行的脚本。
用于登录某个虚拟控制器终端或在GUI中运行终端仿真器时所启动的默认的交互shell,是一个父shell。在CLI提示符后输入/bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序。这个shell程序被称为子shell。
使用
在后台模式中运行命令可以在处理命令的同时让出CLI,以供他用。要想将命令置入后台模式,可以在命令末尾加上字符&。
除了ps命令,也可以使用jobs命令来显示后台作业信息。-l选项还可以显示PID。
在CLI中运用子shell的创造性方法之一就是将进程列表置于后台模式。你既可以在子shell中进行繁重的处理工作,同时也不会让子shell的I/O受制于终端。例如:
协程可以同时做两件事。它的后台生成一个子shell,并在这个子shell中执行命令。使用coproc命令进行协程处理。例如:
协程与进程列表结合起来产生嵌套的子shell。例如:
外部命令,有时候也被称为文件系统命令,是存在于bash shell之外的程序。外部命令程序通常位于/bin,/usr/bin,/sbin,/usr/sbin中。当外部命令执行时,会创建一个子进程。这种操作被称为衍生(forking)。
内建命令就是shell工具的一部分,不需要使用子进程来执行。
一个有用的内建命令是history命令。环境变量$HISTSIZE指定保存的历史命令数量。
命令历史记录被保存在隐藏文件.bash_history中。要注意的是,bash命令的历史记录是先存放在内存中,当shell退出时才被写入到历史文件中。
alias命令是另一个shell的内建命令。命令别名允许你为常用的命令及其参数创建另一个名称,从而将输入量减少到最低。Linux发行版可能已经为你设置好了一些常用命令的别名,使用
用于登录某个虚拟控制器终端或在GUI中运行终端仿真器时所启动的默认的交互shell,是一个父shell。在CLI提示符后输入/bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序。这个shell程序被称为子shell。
使用
$ps --forest查看这种嵌套bash进程的关系。
在后台模式中运行命令可以在处理命令的同时让出CLI,以供他用。要想将命令置入后台模式,可以在命令末尾加上字符&。
除了ps命令,也可以使用jobs命令来显示后台作业信息。-l选项还可以显示PID。
在CLI中运用子shell的创造性方法之一就是将进程列表置于后台模式。你既可以在子shell中进行繁重的处理工作,同时也不会让子shell的I/O受制于终端。例如:
$(tar -cf Rich.tar /home/rich ; tar -cf My.tar /home/christine)&
协程可以同时做两件事。它的后台生成一个子shell,并在这个子shell中执行命令。使用coproc命令进行协程处理。例如:
$coproc sleep 10。除了会创建子shell之外,协程基本上就是将命令置入后台模式。
协程与进程列表结合起来产生嵌套的子shell。例如:
$coproc ( sleep 10 ; sleep 20)。
外部命令,有时候也被称为文件系统命令,是存在于bash shell之外的程序。外部命令程序通常位于/bin,/usr/bin,/sbin,/usr/sbin中。当外部命令执行时,会创建一个子进程。这种操作被称为衍生(forking)。
内建命令就是shell工具的一部分,不需要使用子进程来执行。
$type cdcd和exit命令都内建于bash shell。可以用type命令来了解某个命令是否是内建的。
$type -a pwd有的命令有多种实现,可以用type命令的-a选项来查看多种实现。注意
$shich pwd只显示出了外部命令文件。
一个有用的内建命令是history命令。环境变量$HISTSIZE指定保存的历史命令数量。
$!!显示并执行上次执行的那条命令。
命令历史记录被保存在隐藏文件.bash_history中。要注意的是,bash命令的历史记录是先存放在内存中,当shell退出时才被写入到历史文件中。
alias命令是另一个shell的内建命令。命令别名允许你为常用的命令及其参数创建另一个名称,从而将输入量减少到最低。Linux发行版可能已经为你设置好了一些常用命令的别名,使用
$alias -p查看。
$alias gs='git status'创建别名。
相关文章推荐
- 深入理解PHP内核[读书笔记]--第二章:用户代码执行--SAPI概述-Apache模块-FastCGI
- 《CSS设计彻底研究》读书笔记 第03章 深入理解盒子模型
- 30分钟理解关键链--《突破项目的瓶颈--关键链 》读书笔记
- 读书笔记-深入理解JVM虚拟机-1.OOM初探
- 【JavaScript高级程序设计】读书笔记之一 —— 理解函数
- The Linux Command Line 读书笔记(一)初识shell
- 读书笔记:机器学习实战(4)——章五的逻辑回归代码和个人理解
- android内核剖析 Context理解读书笔记
- 读书笔记--101个shell脚本--05
- 读书笔记--101个shell脚本 之#9
- 深入理解计算机系统读书笔记之第一章:漫游
- [李景山php] 深入理解PHP内核[读书笔记]--第五章:类和面向对象 --概览
- 深入理解Java虚拟机 读书笔记(一)
- 深入理解计算机系统读书笔记之程序的跳转
- 从学习export命令理解到的Shell环境和变量生存期
- 【读书笔记】深入理解Nginx模块开发与架构解析(一)
- 《Android内核剖析》读书笔记 第7章 理解Context
- 读书笔记《深入理解计算机系统》(第三版) 第一章 计算机系统漫游
- 对shell的理解
- 干货 |《深入理解Elasticsearch》读书笔记