10第六章:【01】常用指令-帮助指令

文章介绍了LinuxShell的基本概念,包括Shell作为命令解释器的作用,以及如何通过man命令获取指令帮助。此外,文章详细阐述了内建命令(如help和type)与外部命令的区别,内建命令执行效率更高且无需创建子进程。man和help命令分别用于获取shell外置和内置命令的帮助信息。
摘要由CSDN通过智能技术生成

Shell 可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。我们可以
通过终端控制台来输入命令,由 shell 进行解释并最终交给内核执行。

当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。

一、man 获得帮助信息

man 命令 是 Linux 下的帮助指令,通过 man 指令可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息

基本语法

man (选项)(参数:命令或配置文件)

选项
-a:在所有的man帮助手册中搜索;
-f:等价于whatis指令,显示给定关键字的简短描述信息;
-P:指定内容时使用分页程序;
-M:指定man手册搜索的路径。

参数
数字:指定从哪本man手册中搜索帮助;
关键字:指定要搜索帮助的关键字

• 应用实例

案例:查看 ls 命令的帮助信息

二、help 获得 shell 内置命令的帮助信息

一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令 被称为“外部命令”。

help 命令 help 命令只能显示 bash 内建命令的帮助信息,而对于外部命令的帮助信息只能使用 man 或者 info 命令查看

基本语法

help(选项)(参数)

选项
-d:显示内建命令的简要描述。
-m:按照man手册的格式输出内建命令的帮助信息。
-s:仅输出内建命令的命令格式。
不指定选项时:输出的帮助信息类似于-m选项,但是缺少段落名称和'SEE ALSO''IMPLEMENTATION'部分。

参数
bash内建命令(可以为多个,请用空格分隔开)

• 应用实例

案例:查看 cd 命令的帮助信息

三、type 指令

type:显示指定命令的类型。

概要
type [-afptP] name [name ...]


主要用途
  - 显示要查找的命令的信息。
  - 控制查找范围和行为。
  - 显示要查找的命令优先级最高的类型

案例:

注意:

  • 该命令是 bash 内建命令,相关的帮助信息请查看 help 命令。
  • 命令优先级问题请查看 builtin 命令

四、shell 的内建命令

1、shell 简介

shell 是 Linux 系统中一个提供命名行的交互式工具,本质是一个 c 语言可执行程序,为用户提供了启动程序,管理文件系统中的文件以及运行在 Linux 系统上的进程的途径。命令行提示符是 shell
负责交互的部分,允许用户输入文本命令,然后解释命令,并在内核中执行。

Linux 系统上有多种 shell 可用,Linux 发行版默认的 shell 都是 bash shell,接下来主要介绍 bash shell。

系统中启动哪种类型的 shell,取决用个人用户 ID 配置,在/etc/passwd 文件中可见。只要用户登录到某个虚拟控制终端或是在 GUI 中启动终端仿真器,默认的 shell 程序就会开始运行。

在 CentOS 上打开终端,这时候默认的 shell 程序就开始运行了,同时第一次登录是父 shell,提供 CLI 提示符,等待命令输入。

用户 niujifei 用 bash shell 作为自己的默认程序,bash shell 位于/bin 目录下,/bin/bash 是一个可执行的二进制程序,每个用户都会对应一个 shell

x 代表可执行,ls 加-F 选项,会在可执行文件中的后面加一个 * 号,以便用户找出系统上可执行的文件。-F 选项也可以区分文件夹和文件。

2、外部命令:

外部命令也被称为文件系统命令,是存在与 bash shell 之外的程序,它们并不是 shell 程序的一部分。之前说过 bash shell 本质是也是一个二进制可执行程序。通常位于 /bin、/usr/bin、/sbin
或/usr/sbin 下。

外部命令程序通常位于/bin,/usr/bin,/sbin 或/usr/sbin 中。

当外部命令执行时,会创建出一个子进程。这种操作被称为衍生(forking),外部命令就在衍生的子进程中被执行。

当执行外部程序时,父进程 bash shell 会执行 fork() 创建一个子程序,子程序调用 exec() 执行当前的外部程序,执行完之后结束自己的生命,等待 bash shell 父进程调用 wait() 进行回收子程序的资源。

创建一个进程会有一定的开销,会打开文件,进行磁盘文件 IO 操作。

外部命令比如,可以使用 type 来确定一个命令是否是外部程序。


$PATH 变量包含的目录中系统中绝大多数的可执行命令,它们都是外部命令:

3、内建命令

内建命令并不需要父进程 bash shell 创建一个子程序,内建命令是 bash shell 程序的一部分,执行内建命令等于调用 bash shell 程序的一个程序。可以使用 type 来确定一个命令是否是内建命令。

内建命令不要子进程来执行。它是作为 shell 工具的组成部分存在。

如:cd 和 exit 命令都内建在 bash shell 中。


内建命令属于 shell 执行的一部分,因此执行内建命令不需要创建子进程,也不需要打开程序文件,这样不用操作文件 IO,执行效率高,运行快。

还有一些命令即属于外部命令也属于内建命令,用 type -a 进行查看,比如

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

对于即属于外部命令也属于内建命令的,要想执行外部命令,输入指定文件

4、总结

内建命令比外部命令,效率更高,执行更快,执行内建命令相当于调用当前 Shell 进程的一个函数。比如 cd、exit 这些是内部命令,本质是函数调用,可以直接使用,内建命令并不是某个外部程序,而是 bash shell
该程序的组成部分,只要在 bash shell 中就可以运行这个命令。

内建命令不会受到系统环境变化的影响。

执行外部命令时,会打开文件,不但会产生磁盘 I/O,还需要调用 fork 创建一个进程来执行,执行完成后再退出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值