标签: pipe

管道是否必须写入临时文件?

我发现如果我通过管道在两个进程之间传输大量数据,Linux 会在 /tmp 目录中创建一些临时文件。如果管道操作成功,操作系统会自动删除相应的临时文件。但如果操作失败,tmp 文件会保留在那里。

出于某种原因,我不希望用户有机会获取我通过管道传输的数据,所以即使我的程序崩溃,我也不希望在硬盘上留下任何东西。我怎样才能做到这一点?

linux pipe

14
推荐指数
1
解决办法
7873
查看次数

Windows 如何将文件参数重定向到标准输出?(Windows 相当于`/dev/stdout`)

视窗控制台:

  • 工具 A 可以将二进制数据写入文件,但无法告诉它使用标准输出。
  • 工具 B 可以从 stdin 读取二进制数据并处理其中的信息。

如何在不使用中间文件的情况下通过 B 获得 A 的输出?

换句话说:Windows 相当于/dev/stdout什么?

windows pipe stdout stdin

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

14
推荐指数
1
解决办法
4399
查看次数

管道和标准输入重定向到 cat

为什么

echo "hello world" | cat
Run Code Online (Sandbox Code Playgroud)

工作时

cat < echo "hello world"
Run Code Online (Sandbox Code Playgroud)

才不是?我的(不正确的)直觉是管道会重定向stdoutcatas stdin

cat pipe

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

通过 curl 获取响应正文并显示 HTTP 代码

我有返回 JSON(响应正文)的端点。我需要通过 curl 响应主体并对其进行处理(例如使用 jq)。有用:

response=$(curl -s https://swapi.co/api/people/1/?format=json)
name=$(echo $response tmpFile | jq '.name') # irrelevant command, but I need here response body
echo "name:"$name
Run Code Online (Sandbox Code Playgroud)

但我还需要显示 HTTP 代码(以显示请求是否成功):

curl -s -w "%{http_code}\n" -o /dev/null https://swapi.co/api/people/1/?format=json
Run Code Online (Sandbox Code Playgroud)

如何将响应主体设置为变量并同时显示 HTTP 代码(一个请求)?


我找到了解决方案女巫临时文件:

touch tmpFile
curl -s -w "%{http_code}\n" -o tmpFile https://swapi.co/api/people/1/?format=json
name=$(cat tmpFile | jq '.name') # irrelevant command, but I need here only body response
echo "name: "$name
rm tmpFile
Run Code Online (Sandbox Code Playgroud)

不创建文件怎么办?

我尝试使用命名管道(但它仍然需要在磁盘上创建文件...):

mkfifo tmpFifo
curl -s -w "%{http_code}\n" -o tmpFifo https://swapi.co/api/people/1/?format=json
name=$(cat …
Run Code Online (Sandbox Code Playgroud)

bash curl pipe

14
推荐指数
2
解决办法
8万
查看次数

监控进程间管道流量

我有两个 Linux 进程通过无名管道进行通信。如何监控管道中的流量?如何将数据注入管道?我有 root 访问权限并且知道管道 inode。

linux process pipe

13
推荐指数
2
解决办法
9545
查看次数

相当于 cat *stdin* 的真实窗口

下面cmd是否有一个相当于 posix 命令的窗口cat

cat 本身没有文件名,没有开关。我只是想要一些将标准输入复制到标准输出直到它达到 EOF 的东西。

这不是一个难写的程序,但它是由 Windows 提供的吗?

答案不一定是一个词,绝对不是类型。

echo test | type
Run Code Online (Sandbox Code Playgroud)

只是给我一条错误信息

echo test | type con 
Run Code Online (Sandbox Code Playgroud)

挂起等待我输入一些东西

echo test | more
Run Code Online (Sandbox Code Playgroud)

很接近,但“更多”`在一屏后停止。

我想要这个的原因是为了运行一个程序,当 stdout 进入管道时,该程序的行为会有所不同。所以我可以看到输出。

pipe cmd.exe

13
推荐指数
1
解决办法
8842
查看次数

什么是“管子”,如何“断”?

在此处输入图片说明

我曾多次从 Xcode 收到“管道破裂”错误。我现在很好奇到底什么是管道。

“管子”是什么概念,怎么“断”?

unix xcode pipe ios

12
推荐指数
1
解决办法
1万
查看次数

将文件内容通过管道传输到 PowerShell 命令中,而无需将整个文件加载到内存中

我最近开始使用 PowerShell,希望再也不会错过Bash

我想恢复一个PostgreSQL数据库的实例。在 Bash 或旧的命令提示符中,我会输入:

psql --username=... db_name < 备份.sql

在 PowerShell 中,我发现我需要这样做:

获取内容备份.sql | & psql --username=... db_name

问题是 backup.sql 很大 - 大于我机器上的 RAM 量。Get-Content首先将文件读取到内存中,然后才将其发送到psql.

这是个问题。

如何模拟<PowerShell 中的行为?

memory powershell pipe windows-10

12
推荐指数
1
解决办法
1万
查看次数

我想将 find 的输出通过管道传输到 scp 的输入列表中,如何?

我是一个 linux 新手用户,我试图将一长串文件从一台计算机发送到另一台计算机。参数列表太长,所以我使用了 find。但是,我在设置表达式时遇到了麻烦。有人可以帮忙吗?

这是我通常为简短的参数列表键入的内容。

scp ./* phogan@computer/directory...
Run Code Online (Sandbox Code Playgroud)

这是我认为这可能会转化为 find 。

scp find . -name "*" phogan@computer/directory...
Run Code Online (Sandbox Code Playgroud)

也许我可以使用管道?任何建议都会有所帮助。提前致谢。

linux scp find pipe

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

标签 统计

pipe ×10

linux ×4

bash ×1

cat ×1

cmd.exe ×1

curl ×1

find ×1

ios ×1

memory ×1

powershell ×1

process ×1

redirection ×1

scp ×1

stdin ×1

stdout ×1

unix ×1

windows ×1

windows-10 ×1

xcode ×1