chạm: không thể chạm `foo ': Không có tệp hoặc thư mục như vậy


21

Điều gì có thể gây ra cảm ứng thất bại với thông báo lỗi này?

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

Lưu ý rằng một lỗi do quyền không chính xác trông khác nhau:

touch: cannot touch `foo': Permission denied

Câu trả lời:


21

Trình tự sau gây ra thông báo lỗi này:

$ mkdir foo
$ cd foo

Trong một thiết bị đầu cuối khác:

$ rm -r foo

Trong thiết bị đầu cuối trước:

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

Tất nhiên, các sự kiện khác cũng dẫn đến việc vô hiệu hóa thư mục làm việc hiện tại (CWD) của một quá trình cố gắng tạo một tệp ở đó cũng mang lại thông báo lỗi này.


2
Trong trường hợp của tôi, nó đã xảy ra do điểm gắn kết GlusterFS được định cấu hình sai, nhưng tôi tò mò về trường hợp chung sẽ khiến điều này xảy ra. Loại câu hỏi này thực sự sẽ là một vấn đề bài tập về nhà trong một lớp học?
Lorin Hochstein

3
Trường hợp chung là thư mục hiện tại không tồn tại. Ngoài việc nó đã bị xóa như trong ví dụ của maxschlepzig, điều này chỉ có thể xảy ra trong các trường hợp kỳ lạ như hệ thống tập tin sai (trường hợp của bạn), hoặc có lẽ là một cơ chế bảo mật như SELinux đã làm cho thư mục trở nên vô hình (Tôi không biết liệu Selinux có thể thực sự tạo ra hiệu ứng này).
Gilles 'SO- ngừng trở nên xấu xa'

@lorin: Vâng, tại một khóa học giới thiệu Unix ở trường đại học, chúng tôi đã hỏi những câu hỏi như vậy như là một phần của bài tập về nhà (vì ví dụ: các vấn đề NFS có thể biểu hiện trong các thông báo lỗi tương tự). Chỉ cần hỏi vì tò mò ...
maxschlepzig

3
Trong câu trả lời ban đầu, không cần thiết bị đầu cuối khác: rmdir ../footrong cùng một thiết bị đầu cuối sẽ hoạt động. Một khả năng khác mà không có hệ thống tập tin sai ln -s directory-that-doesnt-exist/foo foo; touch foo.
ephemient

Tôi cảm thấy như bạn nên chỉnh sửa "Hừm, câu hỏi bài tập về nhà?" ra câu trả lời .... Thật ra nó rất phản cảm. Tôi đang ở trang này vì điều này thực sự đã xảy ra trên máy tính của tôi. Nhưng câu trả lời này không giải quyết được gì cả. Đó là một vấn đề NFS khởi động lại cố định, nhưng tôi muốn nguyên nhân cơ bản.
codetaku

4

Đối với tôi, nó đã cố gắng ghi vào một liên kết tượng trưng trỏ đến một tệp không còn ở đó:

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

Điều đó là vậy đó!! Cảm thấy ngớ ngẩn bây giờ! Chỉ cần thực hiện một "ls -la" trong thư mục, tập tin sẽ được hiển thị ngay lập tức. Đó là "decv.conf", chỉ ra một nơi do cập nhật bị lỗi không có ở đó ..
stolsvik

1

Một cách khác (đơn giản hơn) để kích hoạt tin nhắn:

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

Về cơ bản cố gắng tạo một tập tin trong một thư mục không tồn tại.


0

Có lẽ điều này sẽ giúp ai đó trong tương lai:

Tôi gặp vấn đề tương tự khi xóa tệp duy nhất tồn tại trong thư mục của mình git rm. Do đó, git đã xóa thư mục mà tôi đang ở và mọi nỗ lực tạo tệp đều gây ra lỗi này vì thư mục không còn ở đó nữa. Vì vậy, tôi đã phải tạo lại thư mục bằng tay, đi vào nó và chạy touchlệnh thành công.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.