在虚拟终端中,让脚本运行自身

・1 分钟阅读

 $ tty >/dev/null || { urxvt -e /bin/sh -c "tty >/tmp/proc$$; while test x; do sleep 1; done" & while test ! -f /tmp/proc$$; do sleep .1; done; FN=$(cat /tmp/proc$$); rm /tmp/proc$$; exec >$FN 2>$FN <$FN; }

说明

  • 我们首先测试脚本是否不在带有tty的终端中,
  • 如果不是,我们启动一个运行tty的终端并将它保存到文件名。$$是由原始脚本设置的,它是PID ,在后台使用&打开,然后原始脚本等待文件名出现,然后读取,并且删除它,
  • 最后,主命令是bash内置命令exec的一个特殊语法,它只包含重定向(标准的标准输出),这样它们将应用于脚本文件。
Hujiuxiang profile image