1、执行命令

输入命令后回车

提请shell程序找到键入命令所对应的可执行程序或者代码,并且由其分期后,提交给内核分配资源将其运行起来。

在shell中可执行的命令有俩类:

内部命令:由shell自带的内部集成命令

help 可以查看内部命令列表

[root@centos7 ~]# help

GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

These shell commands are defined internally. Type `help' to see this list.

Type `help name' to find out more about the function `name'.

Use `info bash' to find out more about the shell in general.

Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

job_spec [&] history [-c] [-d offset] [n] or history -anrw [filename] or >

(( expression )) if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; >

. filename [arguments] jobs [-lnprs] [jobspec ...] or jobs -x command [args]

: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... o>

[ arg... ] let arg [arg ...]

[[ expression ]] local [option] name[=value] ...

alias [-p] [name[=value] ... ] logout [n]

bg [job_spec ...] mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C c>

bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name]> popd [-n] [+N | -N]

break [n] printf [-v var] format [arguments]

builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]

caller [expr] pwd [-LP]

case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N >

cd [-L|[-P [-e]]] [dir] readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C>

command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] or readonly -p

compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat]> return [n]

complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] > select NAME [in WORDS ... ;] do COMMANDS; done

compopt [-o|+o option] [-DE] [name ...] set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]

continue [n] shift [n]

coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]

declare [-aAfFgilrtux] [-p] [name[=value] ...] source filename [arguments]

dirs [-clpv] [+N] [-N] suspend [-f]

disown [-h] [-ar] [jobspec ...] test [expr]

echo [-neE] [arg ...] time [-p] pipeline

enable [-a] [-dnps] [-f filename] [name ...] times

eval [arg ...] trap [-lp] [[arg] signal_spec ...]

exec [-cl] [-a name] [command [arguments ...]] [redirection .> true

exit [n] type [-afptP] name [name ...]

export [-fn] [name[=value] ...] or export -p typeset [-aAfFgilrtux] [-p] name[=value] ...

false ulimit [-SHacdefilmnpqrstuvx] [limit]

fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [comma> umask [-p] [-S] [mode]

fg [job_spec] unalias [-a] name [name ...]

for NAME [in WORDS ... ] ; do COMMANDS; done unset [-f] [-v] [name ...]

for (( exp1; exp2; exp3 )); do COMMANDS; done until COMMANDS; do COMMANDS; done

function name { COMMANDS ; } or name () { COMMANDS ; } variables - Names and meanings of some shell variables

getopts optstring name [arg] wait [id]

hash [-lr] [-p pathname] [-dt] [name ...] while COMMANDS; do COMMANDS; done

help [-dms] [pattern ...] { COMMANDS ; }

enable 也可以查看命令列表

[root@centos7 ~]# enable

enable .

enable :

enable [

enable alias

enable bg

enable bind

enable break

enable builtin

enable caller

enable cd

enable command

enable compgen

enable complete

enable compopt

enable continue

enable declare

enable dirs

enable disown

enable echo

enable enable

enable eval

enable exec

enable exit

enable export

enable false

enable fc

enable fg

enable getopts

enable hash

enable help

enable history

enable jobs

enable kill

enable let

enable local

enable logout

enable mapfile

enable popd

enable printf

enable pushd

enable pwd

enable read

enable readarray

enable readonly

enable return

enable set

enable shift

外部命令:在文件系统路径下有对应的可执行的文件

查看路径命令

一、wheris

[root@centos7 ~]# whereis ls #多了帮助文档,更加详细

ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

二、which -a

[root@centos7 ~]# which -a ls

alias ls='ls --color=auto'

/usr/bin/ls

如果判断命令是内部命令还是外部命令

命令:type

实例:[root@centos7 ~]# type pwd

pwd is a shell builtin #内部命令

[root@centos7 ~]# type hostname

hostname is /usr/bin/hostname #外部命令表示为一个文件

也有可能一个命令既是外部命令也是内部命令,可以这样查看

[root@centos7 ~]# type -a pwd

pwd is a shell builtin

pwd is /usr/bin/pwd

那么问题来了,输入命令是执行内部命令,还是外部命令呢?

命令执行是过程是这样的:

先看下是不是内部命令(内部命令执行速度更快),内部命令优先级更高,然后再去检查hash表(记录外部命令的路径),如果找到,找到后再执行。如果找不到这个命令在磁盘下的路径,就会以下面的方式寻找。

外部命令寻找路径的过程(首次执行)

[root@centos7 bin]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

在我们再执行一个命令时,当确认不是内部命令后,就会当成外部命令在以上的目录文件中寻找,找到了(找到就停下)就执行,比如这个:

[root@centos7 bin]# type hostname

hostname is /usr/bin/hostname #在/usr/bin 下面找到

如果找不到就会报错。

[root@centos7 bin]# lsls

bash: lsls: command not found... #命令输入有误

再找到这个命令后,就会将这个命令的路径记录在hash表中,再次使用时,就可以很快执行,提高命令调用速率。

实例:

root@centos7 bin]# hash

hits command

2 /usr/bin/whereis

2 /usr/bin/man

3 /usr/bin/ls

再次查看命令:

[root@centos7 bin]# type whereis

whereis is hashed (/usr/bin/whereis)

[root@centos7 bin]# type ifconfig

ifconfig is hashed (/usr/sbin/ifconfig)

清除hash缓存

[root@centos7 etc]# hash

hits command

6 /usr/sbin/ifconfig

1 /usr/bin/rm

1 /usr/bin/cat

9 /usr/bin/whereis

3 /usr/bin/cp

2 /usr/bin/man

4 /usr/bin/ls

1 /usr/bin/clear

[root@centos7 etc]# hash -r

[root@centos7 etc]# hash

hash: hash table empty

Linux is执行程序命令,linux命令执行过程详解相关推荐

  1. Linux系统下SVN服务器的搭建过程详解 UpJ}s7+

    Linux系统下SVN服务器的搭建过程详解 UpJ}s7+   1 环境:  服务器放在redhatAS4.0上,客户端在windows 2000. k_lb"5z   Z]jSq@%1H* ...

  2. Hadoop学习之Mapreduce执行过程详解

    一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...

  3. linux开发 | 根文件系统构建实验及过程详解

    <2.uboot和系统移植-第19部分-2.19.根文件系统构建实验及过程详解> 第一部分.章节目录 2.19.1.根文件系统的构建路线 2.19.2.busybox的移植实战 2.19. ...

  4. 二十.Linux开发之根文件系统构建及过程详解

    老规矩 有道云笔记地址: 详情看这里链接,记录太多,就不一一排版了. http://note.youdao.com/noteshare?id=15b6e982c2e66d0f47b1c787a49f4 ...

  5. sql server修改字段编码格式_原理:一条 sql 的执行过程详解

    思维导航: 写操作执行过程 组件介绍 1.undo log 与 MVCC 2.redo log 与 Buffer Pool 3.bin log(Server 层) 1.连接器 2.缓存(Cache) ...

  6. mysql查询解析过程_MySQL查询执行过程详解

    查询是用户通过设置某些查询条件,从表或其他查询中选取全部或者部分数据,以表的形式显示数据供用户浏览.查询是一个独立的.功能强大的.具有计算功能和条件检索功能的数据库对象.MySQL数据库中,MySQL ...

  7. 一个sql的执行过程详解

    作者:猿来是八阿哥 链接:https://www.jianshu.com/p/e2926d6a808f 一个sql的执行过程 一. 组成部分 PDO_MYSQL is a driver that im ...

  8. 数据库除关系运算符执行过程详解

    数据库除关系运算符案例详解 声明与简介 数据库里的Div(除)运算符是借鉴了数学基本元素除的理念,即整体除以个体,得到组(满足个体的特征的集合). 所以如果"被除数"的集合R有4个 ...

  9. ajax是宏任务还是微任务,(滴滴面试)事件循环Event Loop及微任务和宏任务的执行过程详解...

    之前一直在面试,对于一些大厂面试题真的还是很注重原理和基础的, 还有就是数据结构和算法这种,校招的话,这些是很重要的, 前天和滴滴的人面试,问的真心觉得不难,而且也都是现在面试前端很常见的问题, 对于 ...

最新文章

  1. Cocos 物理系统
  2. android多媒体图文混排,干货!!!Android富文本实现图文混排
  3. 每日一皮:昨晚梦见男朋友和别的女人在逛街,梦里我的第一反应就是查源代码......
  4. vue 虚拟服务器,vue+webpack项目中使用dev-server搭建虚拟服务器,请求json文件数据,实现先后台分离开发...
  5. 再写单链表(不带头单链表)
  6. 基于JQuery框架的AJAX
  7. QT每日一练day14:QFontDialog字体对话框
  8. 获取类型的完全限定名
  9. AE、PR视频压缩导出mp4、mov格式插件:AfterCodecs1.6.1汉化破解版
  10. Springboot整合minio
  11. 联想电脑重装系统F12开机项选择无USB启动选项
  12. MySQL把性别编码转换成名字_两种转换mysql数据编码的方法
  13. Ceph Recovery分析
  14. windows10删除$WINDOWS.~BT文件
  15. NAT、SNAT、DNAT
  16. Esp32 spi slave配置
  17. QP+uc/GUI嵌入式系统图形界面
  18. 【数据结构 C描述】有两个整数集合 A 和 B 分别用两个线性表 LA 和 LB 表示,求:一个新的集合A=A∪B,A仍然为纯集合,线性表采用链式存储方式。【单链表】
  19. 与朱元思书(南朝 梁 吴均)
  20. 优信拍集团php面试题_【优信拍PHP高级工程师面试一般都会问什么问题?】-看准网...

热门文章

  1. 一起学nRF51xx 5 -  ppi
  2. STM32 基础系列教程 5 – 系统定时器
  3. c运行库、c标准库、windows API的区别和联系
  4. Android属性之build.prop生成过程分析
  5. 【arduino】DIY音乐播放器,arduino音箱播放wav音乐
  6. 惊了!7 行代码优雅地实现 Excel 文件生成下载功能
  7. Centos7 Docker Jenkins ASP.NET Core 2.0 自动化发布和部署
  8. 理解ThreadLocal 2
  9. 监控 WebBrowser 控件内容的改变
  10. Linux 文件系统概述