5.1

1. cat /etc/passwd

可以查看每个用户自己的默认的shell程序。

2.默认的交互shell会在用户登录某个虚拟控制台终端时启动。

不过还有另外一个默认的shell是/bin/sh,它作为默认的shell,用于那些需要在启动时使用的shell脚本

ls -l /bin/sh   进行查看

乌班图的发行版中默认的系统shell(dash shell)和默认的交互shell(bash shell)并不相同。

可以直接 dash 来启动 dash shell

exit 退出

5.2 shell 的父子关系

一个shell可以创建另外一个shell(子shell)。

ps -f 查看一下。

bash shell就是一个进程(运行的程序)。

输入bash就会创建一个子shell。exit退出。  ps- f --forest。可以展示进程间的嵌套结构。

5.2.1 进程列表

$ pwd; ls; pwd; cd /; echo $BASH_SUBSHELL

这样可以让命令依次执行。这是在当前shell中执行的。

$(pwd; ls; echo $BASH_SUBSHELL;) // 这个是在子shell中执行。

() 还可以嵌套,比如pwd;(pwd; (ls; cd /home))

echo $BASH_SUBSHELL   若返回0,表示没有子shell。

$sleep 300&   // 后台运行命令,& 就是把命令置入后台模式

jobs  可以查看后台作业信息

还可以这样,将进程列表置入后台。

$(sleep 2; echo $BASH_SUBSHELL; sleep 2;)&

协程:可以同时做两件事,它在后台生成一个子shell,并在这个子shell中执行命令。

使用coproc命令进行协程处理:

$ coproc sleep 10

还可以这样:

$coproc MyJob { sleep 10; }  // 相当于给sleep 10取了个名字。注意那几个空格

5.3 理解shell的内建命令

1.外部命令:又称文件系统命令,存在与bash shell之外的命令。并不是shell程序的一部分

通常位于 /bin  /usr/bin   /sbin   /usr/sbin中。

外部 命令执行时会创建一个子进程。这种操作叫 衍生(forking

比如ps是一个外部命令,可以使用which 和 type命令找到它

$which ps

$ type -a ps

$ ls -l /bin/ps

2. 内建命令:不需要子进程来执行,和shell是一体的,不需要借助外部程序文件来运行。

(1)比如  exit 和 cd是内建命令

$type exit

$type cd

有些命令有多种实现,比如pwd和echo既有外部命令也有内建命令

#type -a echo

which  只显示出外部命令文件。

type -a 显示出每个命令的两种实现。

窍门:对于多种实现的命令,默认执行是内建的,若想要执行外部命令可以指定对应的文件就好了。

比如

$pwd  // 执行的是内部命令

$/bin/pwd   // 执行的外部命令

(2)查看历史执行的命令

$ history  // 这个是内建命令

可以看到之前执行的命令,前面有个数字,代表命令编号。比如是38

$ !38  // 表示执行第38条命令

(3)$ !!   这个是执行上一条输入的命令。

(4)命令别名

alias   也是内建命令

$alias  -p   // 查看当前可用的别名

创建自己的命令

$alias xcyls='ls -al'

一个别名仅仅在它所被定义的shell进程中才有效。在 ~/.bashrc下修改可以对所有shell都有效

shell  子shell  进程 子进程 都会受到环境变量的影响。

《Linux命令行与shell脚本编程大全》 第五章理解shell的更多相关文章

  1. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  2. 《Linux命令行与shell脚本编程大全》23章24章

    第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell.但是它并不是唯一的选择,还有其他的shell可以供你选择. 23.1 什么是dash shell 百度百 ...

  3. 《Linux命令行与shell脚本编程大全》第九章 安装软件程序

    包管理系统(PMS):用来进行软件安装.管理和删除的命令行工具 9.1包管理基础 1.主流的Linux发行版都采用了某种形式的包管理系统来控制软件和库的安装 2.PMS用一个数据库来记录:系统上安装了 ...

  4. Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]

    此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)

  5. 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  6. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  7. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  9. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  10. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---54

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

随机推荐

  1. Json和Map互转,四个包(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)

    目前使用的(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)这四种json-map互转,其他的以后在补充.............. ...

  2. 余玄相似度,TF-IDF

    能干什么? 文章去重,语句去重,提取关键词(文章摘要,页面指纹),图片识别,语音识别 想要做一个相似度,最重要的是什么? 必须得到一个度量:计算个体之间的相似程度(分数,0-1之间,0代表完全不同,一 ...

  3. Jupyter Notebook 工作空间 / 默认路径 的设置方式

    Jupyter notebook 安装后,启动后,默认的工作空间是当前用户目录.为了方便对文档进行管理,往往需要自行设置工作空间. 下面介绍两种亲试有效的工作空间设置方法. 1.修改快捷方式 对 Ju ...

  4. PAT甲题题解-1073. Scientific Notation (20)-字符串处理

    题意:给出科学计数法的格式的数字A,要求输出普通数字表示法,所有有效位都被保留,包括末尾的0. 分两种情况,一种E+,一种E-.具体情况具体分析╮(╯_╰)╭ #include <iostrea ...

  5. SQL Sever——远程过程调用失败(0x800706be)

    最近重装了系统,VS和SQL Sever莫名奇妙的不能用了.下面总结一下这个过程中遇到的问题,跟大家分享一下经验~~ 大概是以前的安装过程都十分顺利,这次,在尝试了数次登陆不上去之后,我仍然怀疑是自己 ...

  6. 圆桌的项目Alpha冲刺——测试

    测试工作安排 作为一个测试计划来讲,核心的三个要素是时间,资源,范围.时间就是什么时候做以及要花多久做,资源就是你要调用的人力.机器等资源,范围是你要测试的东西以及测试重点. 时间:每天完成相应的模块 ...

  7. CentOS下 NFS的简单使用以及windows 关在linux的NFS存储方法

    1. 全部安装的情况下NFS已经安装到服务器上面了,如果没有安装的话 需要使用如下命令进行安装 yum -y install nfs-utils rpcbind 2. 创建需要使用的NFS目录 mkd ...

  8. layout图形化界面看不到内容 Failed to find the style corresponding to the id

    1.问题 在创建新的工程的时候,选择目标SDK为api21,编译SDK为api23.创建出来的layout文件图形化界面中看不到,并且报错: Failed to find the style corr ...

  9. Add Again UVA - 11076(排列之和)

    题意: 输入n个数字,求这些数字 所有全排列的和 (1<= n <= 12) 对于任意一个数字,其在每一位出现的次数是相同的    即所有数字的每一位相加的和是相同的. 因此可以等效为它们 ...

  10. hdu 5274 Dylans loves tree (树链剖分 + 线段树 异或)

    Dylans loves tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...