V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tuduweb
V2EX  ›  Bash

请教一下,怎么把向终端输入的内容重定向一份到文件?

  •  
  •   tuduweb · 2021-12-21 22:05:50 +08:00 · 1493 次点击
    这是一个创建于 1059 天前的主题,其中的信息可能已经有所发展或是发生改变。

    类似于使用node | tee out.txt可以把 node 中输出的内容不仅输出到屏幕终端,还可以输出到文件out.txt

    那怎么样做才能把不影响向终端中正常输入内容,同时把输入的内容保存一份到文件中,作为记录呢?

    是要对/dev/stdin动手脚吗?

    RTRT 谢谢各位了!

    15 条回复    2021-12-21 23:59:00 +08:00
    andyfan
        1
    andyfan  
       2021-12-21 22:10:53 +08:00 via Android
    有一个命令叫 history
    thedrwu
        2
    thedrwu  
       2021-12-21 22:12:27 +08:00 via Android
    tee in.txt | node
    tuduweb
        3
    tuduweb  
    OP
       2021-12-21 22:14:16 +08:00
    @andyfan 这个我试了,但好像它没办法获取在程序中的输入呀。比如可以获取在`node`中的输入信息吗…
    tuduweb
        4
    tuduweb  
    OP
       2021-12-21 22:16:53 +08:00
    @thedrwu 刚试了,这样切不进去 node 界面诶
    lululau
        5
    lululau  
       2021-12-21 22:28:24 +08:00
    tee out.txt | node

    另外,虽然标准 IO 默认指向终端,但是它和终端不是一个概念,标题应该把终端改为标准输入
    tuduweb
        6
    tuduweb  
    OP
       2021-12-21 22:30:12 +08:00
    @lululau
    ```
    (base) ➜ ~ tee out.txt | node
    let a = 1
    let b = 2
    ```
    但是这样阻塞了 node 的交互信息输出了,有什么办法吗。…
    lululau
        7
    lululau  
       2021-12-21 22:39:58 +08:00
    brew install ttyrec

    man ttyrec

    man ttyplay
    sisylocke
        8
    sisylocke  
       2021-12-21 22:44:08 +08:00
    不行的,在 stdout 进程结束前终端不能读取 stdin ,你需要的是 readlineSync 之类的工具。
    zhlxsh
        9
    zhlxsh  
       2021-12-21 22:49:28 +08:00 via iPhone
    你要做的原本的事情是什么,我觉得有可能通过其他方法去完成你的要求
    lululau
        10
    lululau  
       2021-12-21 22:49:35 +08:00
    其实 tee out.txt | node 这个方法是对的,你说的阻塞了 node 的交互信息输出,是因为 node 判断了如果标准输入不是 tty 则默认启用 script mode ,可以加 -i 参数强制 interactive mode

    tee out.txt | node -i
    hsfzxjy
        11
    hsfzxjy  
       2021-12-21 22:57:43 +08:00 via Android
    你是要 script 命令吧
    tuduweb
        12
    tuduweb  
    OP
       2021-12-21 23:46:00 +08:00
    @zhlxsh 我要做的是,根据用户在终端中的输入,来判断用户是否完成了某些步骤。
    比如我想判断用户在 gdb 调试器中,是否根据流程(教程)输入了某些控制指令,我个人想到的简单的方式是判断输入。
    tuduweb
        13
    tuduweb  
    OP
       2021-12-21 23:47:52 +08:00
    @lululau @sisylocke 谢谢!想过通过工具来实现,但是更想知道有没有什么原生的方式来实现这个功能特性。
    tuduweb
        14
    tuduweb  
    OP
       2021-12-21 23:53:31 +08:00
    @hsfzxjy 谢谢!刚试了一下,这样会把所有的按键操作都给记录了,删除啊这些等等,跟想要的还是不太一样。
    tuduweb
        15
    tuduweb  
    OP
       2021-12-21 23:59:00 +08:00
    @lululau 感谢!加了-i 参数可以了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5959 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 02:03 · PVG 10:03 · LAX 18:03 · JFK 21:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.