学过linux操作系统的人,对文件、命令比较熟悉。最多的操作是用命令处理文件。
随着学习的深入,会提出疑问:命令长什么样?
出于好奇,会找到命令存放的地方,用cat命令看一下,结果可想而知。
我们知道,命令分内部命令和外部命令,存放在不同的位置。外部命令就是一个可执行文件的文件名,其就是由C语言编写的二进制文件而经过编译成为可执行可链接的格式文件。
我们一般把C语言编写的二进制文件称为命令的源码(因为源码文件需要编译后才能执行, linux操作系统中不直接保存源码,仅保留可执行的格式文件)。源码文件保存在GNU网络服务器上,需要时下载保存。
本文就命令的二进制工具查看及源码文件作一讨论。
一、命令位置
考虑到运行效率等原因,不可能把所有的命令都集成在shell里面。更多的linux命令是独立于shell,称作外部命令,比如cp、ls等命令。每个外部命令都对应系统中的一个可执行的二进制程序文件
内部命令保存在bash中,不以独立文件存在,下面的命令不能查到。
1.ls
外部命令一般存放在目录/bin/、/usr/bin/下,可用ls查看:
呈绿色的命令就是可用的外部命令。
2.which
which命令(或指令)功能是在环境变量$PATH设置的目录里查找符合条件的文件。
which bash
which cd
which uname
which echo
3.whereis
whersis命令(或指令)功能是在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件或是帮助文件。
该命令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位查找需使用locate命令。
whereis bash
whereis cd
whereis uname
whereis echo
4.rpm -qf
对于某一个外部命令,可以用rpm命令查看该命令由哪个程序包安装的。或者说,外部命令所在的安装包可用rpm –qf `which 命令名` 查询到。
(本文所有命令执行案例均在centos stream9 系统中验证,其他操作系统的同功能命令有所不同,请注意!)