Gui*_*ern 18 command-line bash manpage
fg,bg以及jobs用于作业管理。出于某种原因(也许只有我一个人),我无法找到他们的二进制文件和联机帮助页(不whereis打印任何信息)。which没有输出。不过,这些命令本身工作得很好。
我运行了类似的命令find /bin bg,但没有成功。我也跑去find / bg广撒网。
hee*_*ayl 36
您不会针对这些命令获取任何文件,因为它们是 shell ( bash) 内置程序,而不是单独的可执行文件(例如二进制文件、脚本)。实际上,shell 内置函数被编译成 shell 可执行文件;如果你愿意,你可以检查源代码以确保它。由于which或whereis仅查找外部可执行文件,您不会获得内置程序的任何输出。
要查找命令是内置文件还是别名或函数还是外部文件,最好的方法是使用type内置文件:
$ type fg
fg is a shell builtin
$ type bg
bg is a shell builtin
$ type jobs
jobs is a shell builtin
Run Code Online (Sandbox Code Playgroud)
另请注意,您的find命令在语法上不正确。正确(最简单)的语法是find /where/to/search -name 'name_to_search'.
另请注意,很少有命令同时实现为 shell 内置和单独的独立可执行文件。对于此类命令,请始终记住内置命令将优先于外部命令。所以,当你运行时echo something,内置的echo就会运行。如果要运行二进制可执行文件echo,则需要以不同的方式调用它。一种方法是使用可执行文件的完整路径:/bin/echo something.
要显示命令的所有可用版本,请type使用以下-a选项运行:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
Run Code Online (Sandbox Code Playgroud)
要获取 shell 内置程序的文档,您可以检查man页面bash或使用help命令(这是一个内置命令):
help jobs
Run Code Online (Sandbox Code Playgroud)
同样正如@terdon 指出的那样,您应该使用type而不是which.
它们是 shell 内置程序 - 您可以通过键入help fg或help jobs在 bash shell 提示符下获取基本使用信息,或者从 bash 联机帮助页获取更多详细信息。
除了 heemayl 的回答之外,值得指出的是fg,bg, 和jobs 必须内置到外壳中,因为它们操作外壳内存中的数据结构和/或与外壳进程相关的内核状态。不可能编写一个外部命令来完成fg它的工作。
其他必须内置的命令包括cd,
eval,
exec,
exit,
export,
history,
read,
set,
source(aka .),
shift,
trap,
ulimit,
umask, 和wait。您的 shell 可能有更长的列表,这取决于它实现了多少扩展功能。 POSIX 有一个不同但重叠的“特殊内置实用程序”列表——我不确定为什么像break和continue算作命令而不是控制结构关键字,或者为什么 POSIX不考虑像umaskmust-build这样的东西-in 当它们不能以任何其他方式实现时。(您可以编写一个/bin/umask名为umask(2),但它只会更改自己的设置,而不是由 shell 创建的后续进程,因此它不会满足其规范。)