当我在终端中启动程序时,我会看到输出。我可以通过Ctrl+C退出并再次使用终端,但是有没有办法将其输出再次放入终端?
我知道我可以将输出直接放入文件并读取它,但最好将其再次显示在屏幕上进行测试。
答案1
通过以下方式启动应用程序或命令
command &
并且不要使用Ctrl- C。您将看到输出,直到关闭终端。
使用以下命令将命令重新置于前台
fg
例子
创建一个简单的脚本,例如
#!/bin/bash
while true; do
echo foo
sleep 5
done
启动脚本,程序会输出单词foo
。过了一会儿,我输入echo bar
,然后按fg
和Ctrl-C来终止脚本。
$./foo& 复制代码 [1] 29544 $ foo 富 富 回音栏 酒吧 $ foo 富 韋克 [1] + 29544 正在运行 ./foo 富 ^C
答案2
点击Ctrl+C会向终端前台运行的进程发送 SIGINT 信号,终止该进程,除非该进程故意忽略 SIGINT 信号;
因此,通过点击Ctrl+,C您可以告诉在终端前台运行的进程终止。
要运行某个进程以防止其占用终端,您可以&
在命令末尾附加以下内容以将其启动到后台:
user@user-X550CL:~/tmp$ bash script.sh &
[1] 24961
user@user-X550CL:~/tmp$
如果你已经在前台启动了一个进程,你仍然可以通过按Ctrl+来停止它Z:
user@user-X550CL:~/tmp$ bash script.sh
^Z
[1]+ Stopped bash script.sh
user@user-X550CL:~/tmp$
并将其发送到后台并使用内置bg
功能恢复其执行:
user@user-X550CL:~/tmp$ bg
[1]+ bash script.sh &
user@user-X550CL:~/tmp$
您可以将多个进程发送到后台:
user@user-X550CL:~/tmp$ bash script.sh &
[1] 24961
user@user-X550CL:~/tmp$ bash script.sh &
[2] 24984
user@user-X550CL:~/tmp$ bash script.sh &
[3] 24989
user@user-X550CL:~/tmp$
您可以使用内置功能将所有进程列出到后台jobs
:
user@user-X550CL:~/tmp$ jobs
[1] Running bash script.sh &
[2]- Running bash script.sh &
[3]+ Running bash script.sh &
user@user-X550CL:~/tmp$
要将一个进程从后台移动到前台,可以使用fg
内置函数传递作业号作为参数:
user@user-X550CL:~/tmp$ fg %1
bash script.sh
运行时fg
如果不指定作业号作为参数将会把最后一个后台进程移到前台:
user@user-X550CL:~/tmp$ fg
bash script.sh