bash shell命令学习之理解shell(存在疑问)

本文详细介绍了Linux bash shell的基础知识,包括shell的类型、父子关系,特别是子shell的创建与退出。通过示例展示了进程列表(存在疑问)的用法,解释了如何在后台模式下运行命令以及使用协程命令coproc。同时,讨论了shell的内建命令与外部命令的区别,并提到了history和alias这两个实用功能。
摘要由CSDN通过智能技术生成

本博客内容来自《Linux命令行与shell脚本编程大全》第五章以及第一章、第二章等部分节选

目录

1、背景

2、shell的类型

3、shell的父子关系

进程列表

命令列表

进程列表(存在疑问)

子shell新奇用法

后台模式

在后台使用进程列表

协程命令coproc

4、shell的内建命令

外部命令

内建命令

history命令

命令别名alias


1、背景

Linux系统分为以下四部分

Linux内核

GNU工具

图形化桌面环境

应用软件

其中GNU工具是由GNU组织(GNU's Not Unix)开发的一套完整的Unix工具,该工具内有一种特殊的交互式工具——shell,为用户提供启动程序、管理文件系统中的文件以及Linux系统上进程的途径,其核心是命令行提示符。所有Linux发行版的shell都是bash shell,这是GNU项目提供的默认版本。

shell提供了文本命令行界面(command line interface,CLI),CLI只接受文本输入,也只能显示出文本和基本的图形输出。

当然,shell不仅仅是一种CLI,而是一个时刻都在运行的复杂交互式程序。

2、shell的类型

系统启动后使用的shell类型可以在/etc/passwd文件中查看,第七个字段即为默认shell程序

[root@izwz9194nuv8g0cwqfqsh3z ~]# cat -n /etc/passwd
     1    root:x:0:0:root:/root:/bin/bash

此外,还有一个默认shell是/bin/sh,这个shell主要用于需要在启动时使用的系统shell脚本

[root@izwz9194nuv8g0cwqfqsh3z ~]# ls -lF /bin/bash
-rwxr-xr-x 1 root root 960472 Dec  7  2016 /bin/bash*
[root@izwz9194nuv8g0cwqfqsh3z ~]# ls -lF /bin/sh
lrwxrwxrwx 1 root root 4 Aug 18  2017 /bin/sh -> bash*

可以看出在本文所选环境中,/bin/sh通过软链接设置为bash shell

3、shell的父子关系

父shell:用于登录某个虚拟控制器终端或在GUI中运行终端仿真器时所启动的默认交互shell

子shell:在CLI提示符后输入/bin/bash命令或其他等效bash命令时创建的新的shell程序,创建子shell是有代价的

[root@izwz9194nuv8g0cwqfqsh3z ~]# ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
root     15419 15417  0 14:07 pts/0    00:00:00 -bash
root     15455 15419  0 14:25 pts/0    00:00:00 ps -f
[root@izwz9194nuv8g0cwqfqsh3z ~]# bash
[root@izwz9194nuv8g0cwqfqsh3z ~]# ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
root     15419 15417  0 14:07 pts/0    00:00:00 -bash
root     15456 15419  0 14:25 pts/0    00:00:00 bash
root     15467 15456  0 14:25 pts/0    00:00:00 ps -f

上述显示表明第二个ps -f命令是在子shell中运行的,可以用ps --forest查看父子关系

[root@izwz9194nuv8g0cwqfqsh3z ~]# ps --forest
  PID TTY          TIME CMD
15419 pts/0    00:00:00 bash
15456 pts/0    00:00:00  \_ bash
15474 pts/0    00:00:00      \_ ps

退出子shell采用exit命令

进程列表

  • 命令列表

命令列表是将一连串命令用 ; 分号隔开,如下所示,命令依次执行不存在任何问题

[root@izwz9194nuv8g0cwqfqsh3z ~]# pwd; ls; cd tast/; pwd; cd ..; ls

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值