标签: pipe

删除名称中带有竖线 (|) 的目录?

如果不启动到 Linux,如何删除在 Linux 中在 NTFS 分区上创建的目录,该目录在文件名中包含管道?

例如:

f:\flac\foreign\Yoshida_Brothers\Best_of_Yoshida_Brothers_|_Tsugaru_Shamisen
Run Code Online (Sandbox Code Playgroud)

尝试并失败:

  • 午夜指挥官
  • 递归删除父文件夹
  • del /f /s /q Yoshida_Brothers
  • del /f /s /q "\\?f:\flac\foreign\Yoshida_Brothers\"
  • rmdir /s Yoshida_Brothers
  • rmdir Best*
  • 文件刺客
  • 无法删除文件夹

其他想法?

windows-xp directory pipe

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

是否有 *Nix 工具可用于格式化对屏幕来说太宽的命令输出?

我在跑

psql -U postgres template1 -c "select * from pg_stat_activity"

并且输出对于我的终端来说太宽了。是否可以使用 *nix 命令来防止输出换行?也许屏幕中的设置可以启用虚拟水平滚动?

linux command-line-interface pipe

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

将文本文件输出到 TCP 端口

如何使用内置软件将文本文件输出到 Windows Vista 上的 TCP 端口?例如,

type TextFile.csv | telnet localhost 1979
Run Code Online (Sandbox Code Playgroud)

这不起作用:进程试图写入不存在的管道。

windows telnet tcp pipe windows-vista

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

使用 sudo 将程序输出传输到受保护的文件中

我想做以下事情:

$ echo "secrets" > protected_file
Run Code Online (Sandbox Code Playgroud)

但问题是,我没有“protected_file”的文件权限,所以我尝试以下操作:

$ sudo echo "secrets" > protected_file
Run Code Online (Sandbox Code Playgroud)

但这也不起作用,因为只有命令的“echo”部分在 sudo 下执行。

这样做的正确方法是什么?

——杰弗里·李

sudo pipe

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

PsExec 和远程环境变量、日志记录等

当我在远程计算机上运行 PsExec 时,我总是达不到我想要的效果。在大多数情况下,我想要的理想情况是 a) 管理服务器上的日志,其中每个日志都有生成它的每台远程计算机的名称(例如 COMPNAME1.log、COMPNAME2.log 等)或 b) a使用我指定的任何名称在每台远程计算机上的日志文件。

当我尝试场景 (a) 时,我使用以下命令。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username cmd /c echo TEST >> \\server.company.tld\share\%computername%.log
Run Code Online (Sandbox Code Playgroud)

问题是它永远不会奏效。所有的计算机都只是写入日志,%computername%我在办公室执行 PsExec 的计算机就在其中。我想要的是 listofcomputers.txt 中特定于每台计算机的唯一日志,这些日志将正确使用远程环境变量中的主机名而不会出现问题。这甚至可能吗?它似乎对我不起作用。我试过了,语法显然是错误的。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username "cmd /c echo TEST >> \\server.company.tld\share\%computername%.log"
Run Code Online (Sandbox Code Playgroud)

PsExec 只是失败,说找不到系统文件(阅读:语法失败)。

至于场景 (b),它似乎是类似问题的变体。当我运行这样的命令时,它不起作用。

%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username "cmd /c echo %computername% >> \\server.company.tld\share\aggregated.log"
Run Code Online (Sandbox Code Playgroud)

我对 cmd.exe 控制台上的 PsExec 的远程路径和环境变量有什么不了解的地方(我什至还没有尝试过可怕的 PowerShell)。我知道这样的东西在批处理文件 ( cmd /c \\server.company.tld\share\runthis.bat) 中工作,但是在将命令作为参数执行时是否有原因它不起作用?我总是需要这个,但永远无法得到它!

windows logging environment-variables pipe pstools

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

Linux 管道、警告消息、标准输出

这可能是以最简单的形式提出问题的最佳场所。我正在编写一个脚本,它获取命令的输出并将其放入变量中。经过一些调试后,我找出了错误时的命令,它没有转到标准输出而是转到控制台(或墙)。请参阅下面的示例:

命令运行成功时

root@local# apcaccess status
APC : 700
VERSION : xxxxx
BATTSTAT : AC
Run Code Online (Sandbox Code Playgroud)

当命令出错时

root@local# apcaccess status
apcupsd @ localhost: Connection Refused.

root@local# apcaccess status | grep -i version
apcupsd @ localhost: Connection Refused.
Run Code Online (Sandbox Code Playgroud)

我注意到当我尝试通过 grep 'apcaccess status | 管道命令时 grep -i version' 我会在成功运行时获得版本号,但在系统上它会出错,我会收到错误消息。我相信它不会通过标准输出。

问题是:如何强制输出转到标准输出?

linux pipe stdout

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

接受标准输入,然后写入日期时间戳文件的程序?

我想知道有没有一个程序可以做我想做的事。这就像一个流式日志轮换程序。对于 linux/unix 命令行。

假设我有一些输入正在传输一些数据。我想把它写一个文件,但是每天(或小时或其他)一个不同的文件,即打开一个具有指定日期时间模式的文件,并将 stdin 的内容写入该文件。当一天更改(或小时或分钟,或星期等)时,关闭该文件,然后重新打开一个新文件(将有一个新文件名),然后将行写入该文件?

所以像:

my long | process | that's generating | input | datestampfilewriter --daily 'output.%Y-%m-%d.txt'
Run Code Online (Sandbox Code Playgroud)

这个工具存在吗?

unix pipe dump log-rotation

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

从 tar 到 ftp 的管道

我可以通过 ftp 访问我无法控制的服务器。我想开始将我的服务器 FS 的档案发送到那个 ftp。问题是我的系统上没有足够的可用空间来首先创建备份存档(并将其存储在我的 fs 上),然后将其发送到 ftp。所以我想知道是否有可能做这样的事情:

tar -jcpvf - / | ftp-put ftp://user:pass@host/file.tbz 
Run Code Online (Sandbox Code Playgroud)

通常通过 ssh 执行它没有问题,但在这种情况下,我只有 ftp 可用。

backup ftp pipe

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

Postfix:将电子邮件的副本传递给脚本,但将原始副本传递到邮箱

其实很简单:我想将所有收到的电子邮件传递给一个 PHP 脚本,但只是作为副本,原始电子邮件仍应照常发送到邮箱。

我似乎无法让它工作。我试过以下

(1)创建一个catchall-alias(mysql):

@mydomain.tld   pipe@mydomain.tld
Run Code Online (Sandbox Code Playgroud)

(2)在/etc/postfix/mailpipe.cf中创建regex-transport映射(基本意思是:适用于mydomain.tld的所有邮件)

/.*@mydomain\.tld/   mailpipe:
Run Code Online (Sandbox Code Playgroud)

(3)将其全部集成在 /etc/postfix/main.cf 中:

transport_maps = ... regexp:/etc/postfix/mailpipe.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/....
Run Code Online (Sandbox Code Playgroud)

(4)将传输添加到/etc/postfix/master.cf:

mailpipe   unix  -       n       n       -       -       pipe
  flags=FR user=localuser argv=/path/to/my/script.php
  ${nexthop} ${user}
Run Code Online (Sandbox Code Playgroud)

剧本:

#!/usr/bin/php -q
<?php
  $file = '/home/localuser/pipe/log.log';
  $input = file_get_contents('php://input');
  file_put_contents($file, $input, FILE_APPEND | LOCK_EX);
Run Code Online (Sandbox Code Playgroud)

所以设置似乎有效,脚本在传入的电子邮件中被命中,但它$input是空的(尽管适用于任何其他字符串)。正在处理电子邮件,然后将其删除/丢弃。所以这是我的两个问题:

  1. 如何从脚本访问电子邮件的内容?

  2. 如何防止电子邮件在处理后被丢弃?有没有办法像往常一样将一个副本传递到收件箱,另一个传递给脚本进行处理?

email scripting postfix pipe sieve

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

tee 并分配给变量?

我需要在屏幕上看到输出,同时 grep 输出并将 grep 结果发送到变量。我认为它可以用 T 恤完成,但我不知道具体如何。我试过

mycommand | tee myvar=$(grep -c keyword)
mycommand | tee  >(myvar=$(grep -c keyword))
Run Code Online (Sandbox Code Playgroud)

但这不起作用。应该如何,最好不要写入文件?

linux bash pipe tee

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