sentuh: tidak dapat menyentuh `foo ': Tidak ada file atau direktori tersebut

21

Apa yang dapat menyebabkan sentuhan gagal dengan pesan kesalahan ini?

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

Perhatikan bahwa kesalahan karena izin yang salah terlihat berbeda:

touch: cannot touch `foo': Permission denied
Lorin Hochstein
sumber

Jawaban:

21

Urutan berikut menyebabkan pesan kesalahan ini:

$ mkdir foo
$ cd foo

Di terminal lain:

$ rm -r foo

Di terminal sebelumnya:

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

Tentu saja, peristiwa lain yang juga mengakibatkan membatalkan direktori kerja saat ini (CWD) dari suatu proses yang mencoba membuat file di sana juga menghasilkan pesan kesalahan ini.

maxschlepzig
sumber
2
Dalam kasus saya, ini terjadi karena titik pemasangan GlusterFS yang tidak terkonfigurasi, tetapi saya ingin tahu tentang kasus umum yang akan menyebabkan hal ini terjadi. Apakah jenis pertanyaan ini benar-benar menjadi masalah pekerjaan rumah di kelas?
Lorin Hochstein
3
Kasus umum adalah direktori saat ini tidak ada. Terlepas dari itu telah dihapus seperti dalam contoh maxschlepzig, ini hanya dapat terjadi dalam keadaan aneh seperti sistem file yang rusak (kasus Anda), atau mungkin mekanisme keamanan seperti SELinux telah membuat direktori tidak terlihat (saya tidak tahu apakah SELinux dapat benar-benar menghasilkan efek ini).
Gilles 'SANGAT berhenti menjadi jahat'
@lorin: Ya, pada kursus perkenalan Unix di universitas, kami mengajukan pertanyaan semacam itu sebagai bagian dari tugas pekerjaan rumah (karena misalnya masalah NFS dapat bermanifestasi dalam pesan kesalahan serupa). Baru saja bertanya karena penasaran ...
maxschlepzig
3
Dalam jawaban asli, tidak perlu untuk terminal lain: rmdir ../foodi terminal yang sama harus berfungsi. Kemungkinan lain tanpa nakal filesystem: ln -s directory-that-doesnt-exist/foo foo; touch foo.
ephemient
Saya merasa Anda harus mengedit "Hm, pertanyaan pekerjaan rumah?" keluar dari jawaban .... Sejujurnya sangat ofensif. Saya di halaman ini karena ini benar-benar terjadi di komputer saya. Tetapi jawaban ini tidak menyelesaikan itu sama sekali. Itu masalah NFS yang me-reboot tetap, tapi saya ingin penyebab yang mendasarinya.
codetaku
4

Bagi saya itu mencoba menulis ke symlink yang menunjuk ke file yang sudah tidak ada lagi:

$ ln -s ~/doomed/file ~/mysymlink
$ rm ~/doomed/file
$ touch ~/mysymlink
$ touch: cannot touch `mysymlink': No such file or directory
antirealm
sumber
Itu dia !! Merasa bodoh sekarang! Hanya melakukan "ls -la" di direktori, file itu seharusnya segera ditampilkan. Itu adalah "resolv.conf", yang menunjuk ke suatu tempat yang karena pembaruan
macet
1

Cara lain (sederhana) untuk memicu pesan:

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

Pada dasarnya mencoba membuat file di folder yang tidak ada.

KevinG
sumber
0

Mungkin ini akan membantu seseorang di masa depan:

Saya mendapat masalah yang sama ketika saya menghapus satu-satunya file yang ada di folder saya dengan git rm. Maka git menghapus folder tempat saya dulu, dan setiap upaya untuk membuat file memicu kesalahan ini karena folder itu tidak ada lagi. Jadi saya harus membuat ulang folder secara manual, masuk ke dalamnya dan jalankan touchperintah dengan sukses.

Begueradj
sumber