fg、bg和jobs用于作业管理。但出于某种原因(也许只是我自己),我找不到它们的二进制文件和man页(whereis没有输出任何信息)。which也没有输出。不过这些命令本身运行得很好。
我尝试了像find /bin bg这样的命令,但没有找到任何结果。我还运行了find / bg来扩大搜索范围。
fg、bg和jobs用于作业管理。但出于某种原因(也许只是我自己),我找不到它们的二进制文件和man页(whereis没有输出任何信息)。which也没有输出。不过这些命令本身运行得很好。
我尝试了像find /bin bg这样的命令,但没有找到任何结果。我还运行了find / bg来扩大搜索范围。
$ type fg
fg is a shell builtin
$ type bg
bg is a shell builtin
$ type jobs
jobs is a shell builtin
请注意,您的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
要获取shell内置命令的文档,你可以查看bash的man页或使用help命令(这是一个内置命令):
help jobs
另外,正如@terdon所指出的那样,你应该使用"type"而不是"which"。
whereis echo和which echo都会给出正常的输出,而type echo则表示echo是内建命令。你知道这背后的原因吗? - Guildensternecho或kill这样的命令既可以存在于命令行中,也可以作为内建命令存在,而其他大部分内建命令不能,是因为它们在没有成为shell的一部分时无法正常工作。那么一个外部的bg命令会做什么呢?它不知道要继续哪个进程,并且无法控制其与终端的交互。 - Random832type fg bg jobs - Cyrushelp fg或help jobs来获取基本使用信息,或者从bash manpage中获得更详细的信息。
fg、bg和jobs必须内置到shell中,因为它们操作shell内存中的数据结构和/或与shell进程相关联的内核状态。无法编写一个外部命令来完成fg的功能。
其他必须内置的命令包括cd、eval、exec、exit、export、history、read、set、source(也称为.)、shift、trap、ulimit、umask和wait。根据所实现的扩展功能的多少,您的shell可能有更长的列表。POSIX有一个不同但有重叠的“特殊内置工具”列表 - 我不确定为什么像break和continue这样的东西被视为命令而不是控制结构关键字,或者为什么POSIX在它们无法以其他方式实现时不将umask视为必须内置的。(您可以编写一个名为/bin/umask的程序来调用umask(2),但它只会更改自身的设置,而不会影响由shell创建的后续进程,因此它无法满足其规范。)
fg、bg和jobs不是独立的实用工具,而是bash(shell内置命令)的一部分。
你可以使用命令在bash手册中找到更多关于它们的信息。
man bash
man bash。 - IQAndreas
bash。执行man bash | grep fg;)(参见steeldrivers的答案)。 - Rinzwind