我正在使用一个名为 Diamond 的程序,我有一个如下所示的脚本:
cd /srv/scratch/我的名字/你好 钻石爆炸 -d /srv/scratch/我的名字/再见/inputFile1.dmnd -q inputFile2.faa -o /diamond/outputFile.txt我的
inputFile2.faa
工作目录 ( ) 中有一个,另一个目录中有另一个。由于这是一个巨大的文件并且正在其他命令行中使用,我不想将其移动到当前的工作目录,因为这是不切实际的。/srv/scratch/myname/hello
inputFile1.dmnd
inputFile1.dmnd
当我运行此命令行时,我得到“没有这样的文件或目录”。有没有办法指定绝对/相对路径,以便我可以将其保存inputFile1.dmnd
在中性目录中?
我希望这个问题的答案也能帮助我解决这个问题,但对我的outputFile.txt
.我还想指定相对于我的工作目录将其放在哪个目录中;有没有办法做到这一点?
答案1
假设这些是真实路径,问题很可能出在字符上#
。
选项:
#
1)如果可以避免,请勿在文件或目录名称中使用。因此,重命名/srv/scratch/#
为其他名称,例如/srv/scratch/hash
.您需要转义(见下文)才能执行此操作。
2)#
用反斜杠转义:
diamond blastp -d /srv/scratch/\#/goodbye/inputFile1.dmnd -q inputFile2.faa -o /diamond/outputFile.txt
3) 用单引号转义完整文件名:
diamond blastp -d '/srv/scratch/#/goodbye/inputFile1.dmnd' -q inputFile2.faa -o /diamond/outputFile.txt
您可以使用标准命令(例如ls
与文件名一起使用)和可选的 bash 选项卡完成(这将添加转义)来测试所有这些。