当我像往常一样运行 git clone 命令时,会看到这个:
$ git clone https://github.com/bensmithett/webpack-css-example
Cloning into 'webpack-css-example'...
remote: Counting objects: 179, done.
remote: Total 179 (delta 0), reused 0 (delta 0), pack-reused 179
Receiving objects: 100% (179/179), 24.07 KiB | 0 bytes/s, done.
Resolving deltas: 100% (79/79), done.
Checking connectivity... done
然而,当我尝试将其重定向到文件中(或将其存储在shell变量中),我只看到了这个:
Cloning into 'webpack-css-example'...
这是我尝试过的:
$ git clone https://github.com/bensmithett/webpack-css-example 2>&1 | tee out.log
$ cat out.log
Cloning into 'sample-data'...
我在 Node.js 中也试过了,结果是一样的:
const fs = require('fs');
const child = spawn('git clone https://github.com/bensmithett/webpack-css-example');
child.stdout.on('data', function(data){
console.log(String(data));
});
child.stderr.on('data', function(data){
console.log(String(data));
});
// Cloning into 'webpack-css-example'...
为什么所有的remote:
等内容都没有被输送到stdin/stderr?有没有办法捕获这些输出?如果没有,那么为什么输出会显示在终端上,但它却没有通过stdout或stderr传递?为什么所有的
remote:
等内容都没有被输送到stdin/stderr?有没有办法捕获这些输出?如果没有,那么为什么输出会显示在终端上,但它却没有通过stdout或stderr传递?
unbuffer
,是无法做到的。 - Charles Duffyunbuffer git clone [...]
- Charles Duffyscript
命令使用ptys,像screen
和tmux
这样的程序也是如此,也有用于在C、Python等编程语言中使用ptys的库。 - torek