有没有办法计算当前用户的会话持续时间或会话长度?
我知道使用last
命令我们可以获取用户的登录和空闲时间,但是当用户登录时,是否有直接命令或任何可以计算的数学运算。
还如何在提示中添加此会话持续时间信息。我知道export PS1
可以使用它,但是要输入的参数是什么?
任何帮助表示赞赏。谢谢。
有没有办法计算当前用户的会话持续时间或会话长度?
我知道使用last
命令我们可以获取用户的登录和空闲时间,但是当用户登录时,是否有直接命令或任何可以计算的数学运算。
还如何在提示中添加此会话持续时间信息。我知道export PS1
可以使用它,但是要输入的参数是什么?
任何帮助表示赞赏。谢谢。
在 Bash 中执行此操作的最简单方法是将其添加到您的 .bashrc 中:
PS1="\$SECONDS $PS1"
假设你还没有对你的 PS1 做任何奇特的事情,比如动态设置它PROMPT_COMMAND
或其他什么。您之前需要反斜杠$SECONDS
以确保每次都对其进行评估。(您也可以使用单引号,但也可能没有必要$PS1
每次都进行评估。)
这只是给你一个代表会话已经存在的秒数的裸数字。对于更高级的格式,您将不得不付出更多的努力。例如:
PROMPT_COMMAND='SESSIONTIME=$(printf "%02d:%02d:%02d" $(($SECONDS / 3600)) $(($SECONDS / 60 % 60)) $(($SECONDS % 60)))'
PS1="\$SESSIONTIME $PS1"
其他 shell 可能有SECONDS
,但不会有PROMPT_COMMAND
;例如,在 zsh 中,您可以通过定义一个precmd
函数来完成同样的事情。阅读文档。
这取决于您使用的外壳。在bash
中,SECONDS
参数的值是自当前 shell 启动以来的秒数。