“ls –alR /”和“ls –alR / &”之间的区别?

“ls –alR /”和“ls –alR / &”之间的区别?

“ls –alR /”和“ls –alR / &”有什么区别?我似乎得到了同样的输出。但我认为 & 符号应该在后台运行它?

答案1

在后台运行仍然意味着默认情况下输出会发送到终端。不同之处在于您在程序运行时键入其他命令。显然,对于像ls这样产生大量输出的程序来说,这将是困难的。尝试这个:

ls -alR / >ls_files &

ls跑步时您可以做其他事情。完成后第一次按 Enter 键时ls,您将收到如下消息:

[1]+  Done                    ls -alR / >ls_files

所有输出现在都将位于ls_files文件中。

答案2

区别很简单:使用与号 ( &) 时,程序的执行将发送到后台,在执行过程中,您可以执行其他命令。

由于ls命令只需要很短的时间来运行,因此您不会真正注意到它。使用sleep命令和 bash 脚本可以更容易地说明这一点。

在示例中,我将其设置为sleep(等待)5 秒。这在终端中的工作方式与 BASH 脚本中的工作方式相同。

测试文件

#!/bin/sh
sleep 5s
echo hello

echo hello行将在 5 秒后执行。

现在如果你这样做:

#!/bin/sh
sleep 5s &
echo hello

echo hello行将立即执行,无需等待 5 秒即可sleep完成。

相关内容