管文件路径ImageJ

0

的问题

我有一个小command line utility rjp2tif 提取的辐射测量数据从一个jpeg file into a tiff文件。 我希望能够管的文件路径ImageJ在命令行和有ImageJ开tiff文件。 为此, rjp2tif 写的文件路径的tiff文件标准的输出。 我试过了以下在庆典:

$ rjp2tif /path/to/rjpeg | open -a imagej

$ rjp2tif /path/to/rjpeg | open -a imagej -f

第一次打开ImageJ但没有打开文件。 第二次打开ImageJ用文本的文件路径。

这是mac os蒙特雷,但我不认为问题。 任何人试图这样做,并已成功? 短暂性脑缺血发作。

bash macos
2021-11-23 23:05:07
1

最好的答案

1

假设 rjp2tif 命令返回file-path在标准输出,并且你想要通过这一输出作为一个经常CLI的论点到另一个命令,你可能感兴趣的 xargs 命令。 但请注意,在一般情况下,你可能会碰到一些问题,如果该文件径包含空间或这样:

阅读的空间,tab,newline和结束的文件分隔的参数标准输入和执行指定用与他们的论点。
的参数通常是一个长长的清单的文件(由 lsfind例如),获得通过, xargs 通过管道。

因此,在这种情况下,假定每个文件-路只需要一个线(其显然的情况下,如果只有一线的总体),可以使用以下 NUL基于尖端依赖 tr 命令。

这里是命令你们会得到:

rjp2tif /path/to/rjpeg | tr '\n' '\0' | xargs -0 open -a imagej

注:我有一个GNU/Linux操作系统,所以可以你请确认它的工作在mac os?

《金融交易报告,下面是一个全面的外壳码允许一个试验两种不同的模式 xargs:产生一个指令,每线参数(-n1),或者一个单一命令所有的线的论点之一:

$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 -n1 \
  bash -c 'printf "Run "; for a; do printf "\"$a\" "; done; echo' bash
Run "one " 
Run "two" 
Run "three and four" 

$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 \
  bash -c 'printf "Run "; for a; do printf "\"$a\" "; done; echo' bash
Run "one " "two" "three and four" 

######################################
# or alternatively (with no for loop):
######################################

$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 -n1 \
  bash -c 'printf "Run "; printf "\"%s\" " "$@"; echo' bash
Run "one " 
Run "two" 
Run "three and four" 

$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 \
  bash -c 'printf "Run "; printf "\"%s\" " "$@"; echo' bash
Run "one " "two" "three and four" 
2021-11-24 14:55:40

@ErickMD是的, tr 命令你有以上不工作mac os,谢谢。 我发现的 -t 选项(追踪), xargs 是有助于展示什么 xargs 不会到命令。 在这里的情况,当时 path/to/tiff 传递到 xargs 通过管道, xargs 重新排列的命令 open -a imagej path/to/tiff. 非常有用的。
Jim Merkel

@ErickMD一个额外的事情,你上所述,有一种行为标准输出 rjp2tif 这是通过管道输送到 xargs. 然而,可能会有许多行为标准输出,如果我用一个 -v 选择 rjp2tif. 这可以工作且,如果我使用 tee /dev/tty 以显示所有行的幕后 tail -n 1 只是得到最后一行,用于管道 xargs. 在这种情况下命令行为: rjp2tif -v /path/to/rjpeg | tee /dev/tty | tail -n 1 | xargs open -a imagej. 我离开了 tr 命令为简化。
Jim Merkel

是的,但 xargs 还可以支持多行在输入正如我所提到的在我的回答和你有2个选择,在这种情况下:要么运行一个 open 命令为每个文件→ xargs -0 -n1 open -a imagej;或运行一个单一的 open 命令所有文件通过为args→ xargs -0 open -a imagej. 所以你不需要 tail -n 1 在所有的(除非你是有兴趣只在一个文件,当然)
ErikMD

实际上我想我误解了你的话: -v 选项,你没有几个文件-路径参与,但只是一些额外的"噪声",可免去通过使用stdout tail -n 1确实.
ErikMD

是的, rjp2tif 只是工作的一个文件。 的 -v 是为详细。 因此,"噪声"是一个打印出来的元数据文件。 我想我可以尝试做 rjp2tif 工作多个文件。
Jim Merkel

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................