如何解决避免在存储命令和函数输出的脚本上捕获输入
我有一个脚本,用于在日志文件中存储命令、函数和其他脚本的输出。
我想避免捕获用户输入。
$command 2>&1 | tee /dev/tty | ruby -pe 'print Time.Now.strftime("[%s] ") if !$stdin.tty?' >> "$tempfile"
如果命令是要求用户输入并打印出这些数据的函数或脚本,则该输入将存储在临时文件中。我想避免这种情况,因为我不想捕获合理的数据。
解决方法
您的命令只保存程序输出,不保存用户输入。您看到的问题是该命令选择输出用户输入的任何内容,将其合并到自己的输出中,然后显然会记录。
没有好的方法可以解决这个问题。请修复您的命令。
无论如何。这是一个糟糕的、脆弱的、hacky 的方法:
tempfile=test.txt
command='read -ep Enter_some_input: '
$command 2>&1 |
tee /dev/tty |
python3 -c $'import os\nwhile s:=os.read(0,1024):\n if len(s) > 3: os.write(1,s)' |
ruby -pe 'print Time.now.strftime("[%s] ") if !$stdin.tty?' >> "$tempfile"
Python 命令删除 3 个字节或更少的所有读取。这旨在逐个字符地删除回显,就像在用户输入 readline
和类似内容的最基本情况下会发生的那样,同时希望不会删除太多有意输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。