“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
完成。