touch: `foo 'öğesine dokunamıyor: Böyle bir dosya veya dizin yok


21

Bu hata mesajında ​​dokunmanın başarısız olmasına ne neden olabilir?

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

Yanlış izinlerden kaynaklanan bir hatanın farklı göründüğüne dikkat edin:

touch: cannot touch `foo': Permission denied

Yanıtlar:


21

Aşağıdaki sıra bu hata iletisine neden olur:

$ mkdir foo
$ cd foo

Başka bir terminalde:

$ rm -r foo

Önceki terminalde:

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

Tabii ki, bir dosya oluşturmaya çalışan bir işlemin geçerli çalışma dizinini (CWD) geçersiz kılma ile sonuçlanan diğer olaylar da bu hata iletisini verir.


2
Benim durumumda, yanlış yapılandırılmış bir GlusterFS bağlama noktası nedeniyle meydana geliyordu, ancak bunun olmasına neden olacak genel durumu merak ediyordum. Bu tür bir soru gerçekten bir sınıfta ödev problemi olur mu?
Lorin Hochstein

3
Genel durum, mevcut dizinin mevcut olmamasıdır. Maxschlepzig örneğinde olduğu gibi silinmesinin dışında, bu sadece hatalı çalışan bir dosya sistemi (sizin durumunuz) gibi garip durumlarda veya belki de SELinux gibi dizini görünmez yapan bir güvenlik mekanizması olabilir (SELinux'un gerçekten üretip üretemeyeceğini bilmiyorum bu etki).
Gilles 'SO- kötü olmayı bırak'

@lorin: Üniversitedeki bir Unix tanıtım kursunda, ödevlerin bir parçası olarak bu tür sorular sorduk (çünkü NFS sorunları benzer hata mesajlarında ortaya çıkabilir). Sadece meraktan sordum ...
maxschlepzig

3
Orijinal cevapta, başka bir terminale gerek yok: rmdir ../fooaynı terminalde çalışmalıdır. Dosya sistemlerine misbehaving olmadan başka olasılık: ln -s directory-that-doesnt-exist/foo foo; touch foo.
2010'da

"Hımm, ödev sorusu mu?" cevap dışında .... Dürüst olmak gerekirse çok saldırgan. Bu sayfadayım çünkü bu aslında bilgisayarımda oldu. Ama bu cevap bunu hiç çözmüyor. Yeniden başlatılan bir NFS sorunu düzeltildi, ancak altta yatan nedeni istiyorum.
codetaku

4

Benim için artık orada olmayan bir dosyaya işaret eden bir symlink'e yazmaya çalışıyordu:

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

Öyleydi !! Şimdi aptal hissediyorum! Sadece dizinde bir "ls -la" yapıyor dosya hemen göstermek gerekiyordu.
Düşen

1

Mesajı tetiklemenin başka (daha basit) bir yolu:

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

Temel olarak varolmayan bir klasörde dosya oluşturmaya çalışmak.


0

Belki bu gelecekte birine yardımcı olacaktır:

Aynı sorunu, klasörümde bulunan tek dosyayı kaldırdığımda aldım git rm. Böylece git , içinde bulunduğum klasörü kaldırdı ve dosya oluşturma girişimi, klasör artık olmadığından bu hatayı tetikliyor. Bu yüzden klasörü elle yeniden oluşturmak, içine girmek ve touchkomutu başarıyla çalıştırmak zorunda kaldım .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.