linux中的命令大致可分为两类,内部命令和外部命令

内部命令:也称shell内嵌命令;

外部命令:存放在一个文件中,使用时需要去文件中查找,这些文件被定义在$PATH

[root@centos7 ~]# echo $PATH

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

type命令可以查看命令类型,以区别是内部命令还是外部命令

[root@centos7 ~]# type cd

cd is a shell builtin

[root@centos7 ~]# type ls

ls is aliased to `ls --color=auto'

[root@centos7 ~]# type ifconfig

ifconfig is /usr/sbin/ifconfig

可以看到,cd为shell内嵌命令,ls命令为ls --color=auto的别名,ifconfig命令为外部命令在文件/usr/sbin/ifconfig中。



内部命令与外部命令查看帮助的区别


内部命令:

    使用help COMMAND

[root@centos7 ~]# help cd

cd: cd [-L|[-P [-e]]] [dir]

    Change the shell working directory.

......

也可使用man命令查看bash帮助文档

enable命令可以禁用内部命令;

enable -n 内部命令: 禁用内部命令(重启失效)

    :enable -n cd

enable   内部命令:解除禁用

    :enable cd


外部命令:

    外部命令查看帮助的方法相对与内部命令还是比较多的

① command --help 或 command -h 

  命令的不同存在一些实用长选项 --help或短选项 -h的区别

例:[root@centos7 ~]# ifconfig --help

Usage:

  ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]

  [add <address>[/<prefixlen>]]

 ......

②使用man手册查看帮助, man command

例:[root@centos7 ~]# man ifconfig

IFCONFIG(8)    Linux System Administrator's Manual           IFCONFIG(8)

NAME

       ifconfig - configure a network interface

......

③使用info命令查看信息页

例:[root@centos7 ~]# info ifconfig

File: *manpages*,  Node: ifconfig,  Up: (dir)

IFCONFIG(8)           Linux System Administrator's Manual          IFCONFIG(8)

NAME

       ifconfig - configure a network interface

......

④使用程序自身的帮助文档 

 在一些程序下有些README INSTALL ChangeLog文件,可以查看文件内容帮助使用。

⑤程序的官方文档或发行版的官方文档


使用过外部命令会暂存在内存中,可以使用hash命令查看内存中的外部命令

hash命令:查看内存中执行的外部命令,

hash: hash [-lr] [-p pathname] [-dt] [name ...]

Remember or display program locations.

选项:

-r :清除内存中的命令

-d command :删除内存中的command命令


有时我们会经常使用一些很长的命令,为了便于使用我们可以使用别名的方法来重新命名命令,创建别名可以使用alias命令;直接执行alias命令可以查看当前文件系统的别名列表,

命令别名alias name command

如:alias cp='cp -i'

上文已经看到ls命令就是一个别名;


命令也存在同名的情况所以在执行命令也存在优先级

别名>内部命令>内存中的外部命令>外部命令

如果要使用优先级较低的命令可以使用完整路径或\COMMAND的方式来实现。