相关疑难解决方法(0)

管道输出到两个不同的命令

可能重复:
osx/linux:管道分为两个进程?

有没有办法将输出从一个命令输入到另外两个命令的输入中,同时运行它们?

像这样的东西:

$ echo 'test' |(cat) |(cat)
test
test
Run Code Online (Sandbox Code Playgroud)

我想这样做的原因是我有一个程序从USB SDR设备接收FM无线电信号,并输出音频作为原始PCM数据(如.wav文件,但没有标题.)由于信号不是音乐但POCSAG寻呼机数据,我需要将其传输到解码器程序以恢复寻呼机文本.但是我也想听信号,所以我知道是否有任何数据进入.(否则我无法判断解码器是否损坏或者没有广播数据.)因此,除了将数据传输到寻呼机解码器之外,我还需要将相同的数据传输到play命令.

目前我只知道如何做一个 - 将其传输到解码器并静默读取数据,或将其传输到play并听到它而不会看到任何解码文本.

如何将相同的数据传输到两个命令,以便我可以阅读文本并听到音频?

我无法使用tee,因为它只将重复数据写入文件,但我需要实时处理数据.

bash pipe tee

24
推荐指数
3
解决办法
2万
查看次数

捕获R中系统调用的退出状态和输出

我已经打了一下,与system()system2()欢乐,我突然想到我能救输出或在对象退出状态.玩具示例:

X <- system("ping google.com",intern=TRUE)
Run Code Online (Sandbox Code Playgroud)

给我输出,而

X <- system2("ping", "google.com")
Run Code Online (Sandbox Code Playgroud)

给我退出状态(在这种情况下为1,谷歌不接受ping).如果我想要输出和退出状态,我必须进行2次系统调用,这看起来有点矫枉过正.如何只使用一个系统调用?

编辑:我想在控制台中同时使用两者,如果可能的话,不通过stdout="somefile.ext"system2调用中使用临时文件并随后读取它.

linux r system call

18
推荐指数
3
解决办法
9217
查看次数

阻止 git 将非错误写入 stderr

我有一个脚本,用于自动同步各种远程 git 存储库。我试图用我的脚本做的一件事是从每个命令中捕获 stderr 的输出,并将所有这些错误写入一个文本文件,然后在脚本完成后通过电子邮件发送给我。这将提醒我需要解决的任何问题。不过,我在以下两行中遇到了问题:

{
    git fetch --prune-tags github-fetch master
    git push github master 
} 2> '/tmp/stderr-contents-sync_git_repositories.txt'
Run Code Online (Sandbox Code Playgroud)

问题是该git fetch行正在将以下内容写入 stderr:

From https://github.com/XJDHDR/xjdhdr-random-code.wiki
 * branch            master     -> FETCH_HEAD
   13af304..333d602  master     -> github/master
Run Code Online (Sandbox Code Playgroud)

git pull条线是这样写的:

To ssh://github.com/XJDHDR/xjdhdr-random-code.wiki.git
   333d602..da65970  master -> master
Run Code Online (Sandbox Code Playgroud)

我的问题是这些都不是错误,每次运行脚本时都会通过电子邮件发送。我想知道是否有可能阻止 git 将这些非错误写入 stderr 或从 stderr 输出中过滤出这些类型的消息,同时保留真正的错误。

git bash stderr

11
推荐指数
1
解决办法
1381
查看次数

如何从 bash 脚本中将 stdout 和 stderr 重定向到文件?

我想在 bash 脚本中添加一个命令,将所有 stderr 和 stdout 定向到特定文件。从这个和许多其他来源,我知道我会从命令行使用:

/path/to/script.sh >> log_file 2>> err_file
Run Code Online (Sandbox Code Playgroud)

然而,我想要在我的脚本中添加一些类似于这些 slurm 标志的东西:

#!/bin/bash
#SBATCH -o slurm.stdout.txt # Standard output log
#SBATCH -e slurm.stderr.txt # Standard error log

<code>
Run Code Online (Sandbox Code Playgroud)

有没有办法在脚本内直接输出,或者我是否需要在>> log_file 2>> err_file每次调用脚本时使用?谢谢

bash stdout stderr

7
推荐指数
2
解决办法
3059
查看次数

Bash 命令输出未保存到文本文件或变量

在尝试存储 SSH 检查的输出以查看我是否具有对帐户的 SSH 访问权限时,我看到了奇怪的行为。我尝试了以下方法:

ssh git@bitbucket.org > temp.txt
Run Code Online (Sandbox Code Playgroud)

并且我希望收到一条字符串消息,告诉我权限是否被拒绝或不保存到temp.txt. 但输出直接到终端,而不是保存到文件。但是,如果我这样做

ls -l > temp.txt
Run Code Online (Sandbox Code Playgroud)

该输出保存到文件。什么可能导致这种行为差异?我最终将把输出保存到一个变量中,但在这种情况下也会看到类似的行为。我使用的是 Ubuntu 16.04 bash 版本 4.3.48(1)。

bash

6
推荐指数
1
解决办法
1956
查看次数

带有 STDERR/STDOUT 重定向的 eval 命令导致问题

我正在尝试编写一个 bash 脚本,其中每个命令都通过一个使用以下行评估命令的函数:

eval $1 2>&1 >>~/max.log | tee --append ~/max.log
Run Code Online (Sandbox Code Playgroud)

它不起作用的一个例子是在尝试评估 cd 命令时:

eval cd /usr/local/src 2>&1 >>~/max.log | tee --append ~/max.log
Run Code Online (Sandbox Code Playgroud)

导致问题的部分是 | tee --append ~/max.log 部分。知道为什么我遇到问题吗?

bash cd eval tee

4
推荐指数
1
解决办法
6561
查看次数

控制台警告文件

我正在运行一个 python 脚本,用于pandas.read_csv导入 csv 文件。当 Pandas 没有看到预期的内容时,它会提供控制台警告,例如:

Skipping line 163: Expected 41 fields in line 163, saw 42
Run Code Online (Sandbox Code Playgroud)

我如何将其记录到文本文件中?

如果我从命令行运行脚本,python > logfile.txt则文件中仅显示 print 的输出,而不显示警告。

python

3
推荐指数
1
解决办法
1296
查看次数

如何将fmt.Print和log.Print保存到Golang中的同一文件中

在shell中,我使用go run file > output,但只有fmt.Print被保存到输出中.所有log.Print仍然输出到屏幕!在我在互联网上搜索之后,我发现我可以设置日志的输出目录,但是如何在同一个文件中保存日志和文件?

shell go

2
推荐指数
1
解决办法
532
查看次数

git命令的输出未完全重定向到文件

git fetch命令的输出test1从以下cmd 重定向到“ ”文件:

manish@rigved:~$ git fetch --all --prune > test1
From https://github.com/Beawel/wwwnew
 x [deleted]         (none)     -> origin/test
Run Code Online (Sandbox Code Playgroud)

问题:但是x [deleted] ...输出中显示的“ ”行未重定向到test1,为什么?请提出建议。

为什么git命令会在stderr上打印明显不是错误消息的内容?

manish@rigved:~$ cat test1
Fetching origin
Run Code Online (Sandbox Code Playgroud)

git redirect

2
推荐指数
1
解决办法
711
查看次数

标签 统计

bash ×5

git ×2

stderr ×2

tee ×2

call ×1

cd ×1

eval ×1

go ×1

linux ×1

pipe ×1

python ×1

r ×1

redirect ×1

shell ×1

stdout ×1

system ×1