touch :`foo '를 만질 수 없습니다 : 그런 파일이나 디렉토리가 없습니다


21

이 오류 메시지로 인해 터치가 실패하는 원인은 무엇입니까?

touch: cannot touch `foo': No such file or directory

잘못된 권한으로 인한 오류는 다르게 나타납니다.

touch: cannot touch `foo': Permission denied

답변:


21

다음과 같은 순서로이 오류 메시지가 나타납니다.

$ mkdir foo
$ cd foo

다른 터미널에서 :

$ rm -r foo

이전 터미널에서 :

$ touch x
touch: cannot touch `x': No such file or directory

물론 파일을 작성하려는 프로세스의 현재 작업 디렉토리 (CWD)를 무효화하는 다른 이벤트도이 오류 메시지를 생성합니다.


2
필자의 경우 잘못 구성된 GlusterFS 마운트 지점으로 인해 발생한 것이지만 이것이 발생할 수있는 일반적인 경우에 대해 궁금했습니다. 이런 유형의 질문이 실제로 수업에서 숙제 문제가 될 수 있습니까?
Lorin Hochstein

3
일반적인 경우는 현재 디렉토리가 존재하지 않는 것입니다. maxschlepzig의 예에서와 같이 삭제 된 것 외에도, 이것은 파일 시스템 오작동 (귀하의 경우)과 같은 이상한 상황에서만 발생하거나 SELinux와 같은 보안 메커니즘으로 디렉토리를 볼 수 없게 만들었습니다 (SELinux가 실제로 생성 할 수 있는지 모르겠습니다) 이 효과).
Gilles 'SO- 악마 그만해

@lorin : 글쎄, 대학의 유닉스 소개 과정에서 우리는 숙제 과제의 일부로 이런 종류의 질문을했습니다. 그냥 호기심에서 물었다 ...
maxschlepzig

3
원래 답변에서 다른 터미널이 필요하지 않습니다 rmdir ../foo. 동일한 터미널에서 작동해야합니다. 파일 시스템을 오작동하지 않는 다른 가능성 : ln -s directory-that-doesnt-exist/foo foo; touch foo.
ephemient

"과제 질문?"을 편집해야한다고 생각합니다. 대답에서 .... 솔직히 매우 공격적입니다. 이것은 실제로 내 컴퓨터에서 발생했기 때문에이 페이지에 있습니다. 그러나이 답변은 전혀 해결하지 못합니다. 재부팅으로 고쳐지는 것은 NFS 문제 였지만 근본적인 원인을 원합니다.
codetaku

4

나를 위해 더 이상 존재하지 않는 파일을 가리키는 심볼릭 링크에 쓰려고했습니다.

$ ln -s ~/doomed/file ~/mysymlink
$ rm ~/doomed/file
$ touch ~/mysymlink
$ touch: cannot touch `mysymlink': No such file or directory

그거였다!! 지금 바보 같은 느낌! 디렉토리에서 "ls -la"를 수행하면 파일이 즉시 표시됩니다. "resolv.conf"로 업데이트가 중단 된 곳이없는 곳을
가리 켰

1

메시지를 트리거하는 또 다른 (간단한) 방법 :

$ mkdir foo
$ touch foo/bar/baz.txt
touch: cannot touch 'foo/bar/baz.txt': No such file or directory

기본적으로 존재하지 않는 폴더에 파일을 만들려고합니다.


0

아마도 이것은 미래에 누군가를 도울 것입니다 :

와 함께 내 폴더에있는 유일한 파일을 제거했을 때도 이와 동일한 문제가 발생했습니다 git rm. 따라서 git 은 내가 있던 폴더를 제거했으며 파일을 만들려고하면 폴더가 더 이상 없기 때문에이 오류가 발생합니다. 따라서 폴더를 수동으로 다시 작성하고 폴더로 이동하여 touch명령을 성공적으로 실행해야 했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.