sed
명령에서 오류 메시지를 수정하는 방법을 찾을 수 없습니다 . Windows 10(Linux용 Windows 하위 시스템 기능이 켜져 있음)의 Ubuntu에서 셸 스크립트를 실행하고 있습니다. 오류를 일으키는 줄은 다음과 같습니다.
sed -i -e 's/ 841 bp//' Prot.fasta
Prot.fasta
파일은 쉘 스크립트에서 생성한 시퀀스 목록이며, 각 시퀀스는 다음과 같습니다.
>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 하위 시스템으로 옮긴 다음 완료되면 다시 옮기는 것입니다. WSL 사용자가 하위 시스템에 액세스하고 Windows 파일을 변경할 수 있는 권한이 없을 수 있다는 점에서 이것이 Hauke의 답변과 일치한다고 생각합니다.