sed 命令错误:保留“./seduEguCh”的权限:不允许操作

sed 命令错误:保留“./seduEguCh”的权限:不允许操作

我找不到如何修复sed命令中的错误消息。我正在 Windows 10 上的 Ubuntu 上运行 shell 脚本(打开了适用于 Linux 的 Windows 子系统功能)。导致错误的行是这样的:

sed -i -e 's/ 841 bp//' Prot.fasta

Prot.fastafile 是我从 shell 脚本生成的序列列表,每个序列如下所示:

>Emiliania_huxleyi_CCMP1516_tax280463_locID_jgi|Emihu1|426057|estExtDG_Genewise1PlusC_50194_seqID3655840 841 bp
------------------------------------------------------------
-----------------------------------MASARLAIEGRVERQPIFRRLRGSE

我只是想删除841 bp每个序列末尾的部分。但是当我运行脚本时,上面的代码行给出了以下错误:

sed: preserving permissions for './sedSjMfzs': Operation not permitted
sed: cannot rename ./sedSjMfzs: Permission denied

谁能给我一些关于为什么我会收到此错误的建议?

答案1

sed -i这是执行 ( )时发生的情况strace

openat(AT_FDCWD, "input", O_RDONLY)     = 4
[...]
openat(AT_FDCWD, "./sedMSD2Zj", O_RDWR|O_CREAT|O_EXCL, 0600) = 5
[...]
rename("./sedMSD2Zj", "input")          = 0

Windows NTFS 权限比 Linux 权限复杂得多。我对它们不熟悉,但似乎该用户被允许创建文件,但不能重命名它们。

答案2

您是否在子系统内对 Windows 文件运行此脚本?如果是这样,一个简单的修复可能是将文件移至 Ubuntu 子系统中,然后在完成后将它们移回。我认为这与 Hauke 的答案一致,因为您的 WSL 用户可能无权访问子系统并更改 Windows 文件。

相关内容