gpt4 book ai didi

linux - dpn 的转换,从 windows 键入命令到 bash

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:07 24 4
gpt4 key购买 nike

我最近尝试使用 linux(从 windows),但我发现很难将我的以下 windows 命令处理到 linux bash。

Windows 命令是:

set /p cutoff=Set BLAST E-Value Cutoff[1e-]:
for %%F in (*.fa) do program.exe -parameter1 %%F -parameter2_cutoff 1e-%cutoff% -output_file %%~dpnF.fas & type %%F %%~dpnF.fas > %%~dpnF.txt

此脚本从用户那里获取一个数值,并使用它在具有所需截止值的文件夹中的每个 .fa 文件中运行一个程序。这里 %%~dpnF 只取文件名(没有文件扩展名)。在这个脚本中,我加入了每个输入文件 (.fa) 的内容及其生成的输出 (.fas),最后将它们合并到最终输出 (.txt) 中。在这里,对于每个输入文件,都会有一个最终输出文件。

要在 ubuntu 中运行它,我尝试

echo "Set BLAST E-Value Cutoff[1e-]:"
read cutoff
for $f in *.fa; do program -parameter1 $f -parameter2_cutoff 1e-$cutoff -output_file $~dpnF.fas & cat $f $~dpnF.fas > $~dpnF.txt; done

立即显示 linux 不支持 Windows 中的 dpn 类型的命令,并且脚本突然终止,没有输出。

虽然我知道不同的文件扩展名在 linux 中意义不大,但我必须保持这种方式以便其他程序处理它们。

我感谢任何类型的帮助。

谢谢

最佳答案

序列 %~dpn 用于获取:

  1. %~d - 驱动器
  2. %~p - 路径
  3. %~n - 文件名

检查 the meaning of all expansions here .

驱动器在 Linux 中没有意义。可以使用命令 dirname 提取完整或部分路径,可以使用命令 basename 提取文件名。

序列%%~dpn表示从根(/)获取整个路径名。

事实上,在 Linux 中您不需要这样做,如果文件列表是使用 *.f 创建的,文件列表将相对于“当前工作目录”(命令 pwd), 无需扩展它们。

要从文件名中去除扩展名,请使用 ${f%.*}
这将在最后一个点 . 以及 *.
之后的任何内容处剪切“$f”中的字符串然后只需添加您想要的扩展名:${f%.*}.fas

另外,字符&有“在后台运行之前的命令”的意思,这不是你想要的。

最后,for $f 应替换为 for f

这是一个更清晰的翻译:

echo "Set BLAST E-Value Cutoff[1e-]:"
read cutoff
for f in *.fa; do
program -parameter1 "$f" \
-parameter2_cutoff "1e-$cutoff" \
-output_file "${f%.*}.fas"
cat "$f" "${f%.*}.fas" > "${f%.*}.txt"
done

关于linux - dpn 的转换,从 windows 键入命令到 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40671413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com