man当我想获取有关特定命令的信息时,我一直使用该命令。但是当该特定命令是内置的 shell 时,这对我没有太大帮助。例如:
man cd
Run Code Online (Sandbox Code Playgroud)
返回:
No manual entry for cd
Run Code Online (Sandbox Code Playgroud)
我的问题是:有可能使man也是所有shell内建命令(如工作cd,alias,history等),和关键字(如if,while,[[,{,等)?
当我运行这两个命令时,我得到
$ type cd
cd is a shell builtin
$ type if
if is a shell keyword
Run Code Online (Sandbox Code Playgroud)
清楚地表明这cd是一个shell内置并且if是一个shell关键字。那么shell内置和关键字有什么区别呢?
locate whereis和which命令之间的基本区别是什么。
我观察到的基本区别是,locate定位所有相关的文件名称在整个文件系统,而whereis和which命令只给安装应用程序的位置(文件系统/本地地址)。我的观察有多准确?
这些命令是如何在内部实现的。locate与破折号搜索相比,为什么工作如此之快,而locate必须在整个文件系统层次结构中搜索与目标字符串匹配的特定文件名?