Typescript

如何知道你是否在打字稿中?

  • March 3, 2021

我正在使用該script命令將終端的所有輸出保存到一個名為typescript. 或者script foo保存到文件foo中。

現在,假設我正在一個接一個地輸入命令,但我忘記了我是否在打字稿中。

我怎樣才能知道我是否在打字稿中?

也許與:

if lsof -tac script "$(tty)" > /dev/null; then
 echo "I'm running under script"
else
 echo "I'm not"
fi

您可以添加如下內容:

lsof -tac script "$(tty)" > /dev/null && PS1="[script] $PS1"

對於您的~/.zshrcor ~/.bashrc,因此有關您是否在其中的資訊script將在您的 shell 提示符上可見。

或者,如果您不能保證lsof已安裝,您可以這樣做(假設未修改 IFS):

terminal=$(ps -o comm= -p $(ps -o ppid= -p $(ps -o sid= -p "$$")))
[ "$terminal" = script ] && PS1="[script] $PS1"

啟發式方法是獲取會話領導者的父級的命令名稱,通常是終端仿真器(xterm, script, screen…)。

引用自:https://unix.stackexchange.com/questions/68563