这个问题可能听起来有点愚蠢,但我真的看不出重定向和管道之间的区别。
重定向用于重定向 stdout/stdin/stderr,例如ls > log.txt.
管道用于将命令的输出作为另一个命令的输入,例如ls | grep file.txt.
但是为什么同一件事有两个运营商呢?
为什么不直接写ls > grep来传递输出,这不也是一种重定向吗?我缺少什么?
如何在 shell 的后台运行程序,并能够在保持程序运行的同时关闭 shell?假设我的 UI 有问题,或者出于某种原因,我需要从终端窗口启动一个程序,例如nm-applet:
nm-applet
Run Code Online (Sandbox Code Playgroud)
当它启动时,它占据终端窗口的前景。
有没有什么简单的方法可以在后台运行程序而无需让终端保持打开状态或让它占据整个终端?
在那一点上,我确实找到了一种从终端运行程序并允许其他输入的方法,方法是&在命令中附加一个与号 ( ) ,如下所示:
nm-applet &
Run Code Online (Sandbox Code Playgroud)
但这没有多大用处,因为一旦终端关闭,在终端中启动的任何进程都会被终止。