tocco: impossibile toccare `pippo ': nessun file o directory


21

Cosa potrebbe causare il fallimento del tocco con questo messaggio di errore?

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

Si noti che un errore dovuto a autorizzazioni errate sembra diverso:

touch: cannot touch `foo': Permission denied

Risposte:


21

La sequenza seguente provoca questo messaggio di errore:

$ mkdir foo
$ cd foo

In un altro terminale:

$ rm -r foo

Nel terminale precedente:

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

Naturalmente, anche altri eventi che comportano l'invalidazione dell'attuale directory di lavoro (CWD) di un processo che tenta di creare un file lì generano questo messaggio di errore.


2
Nel mio caso, si stava verificando a causa di un punto di montaggio GlusterFS configurato in modo errato, ma ero curioso del caso generale che avrebbe potuto causare ciò. Questo tipo di domanda sarebbe davvero un problema a casa in una classe?
Lorin Hochstein,

3
Il caso generale è la directory corrente non esistente. A parte il fatto che è stato cancellato come nell'esempio di maxschlepzig, questo può succedere solo in strane circostanze come un filesystem che si comporta male (il tuo caso), o forse un meccanismo di sicurezza come SELinux che ha reso la directory invisibile (non so se SELinux può effettivamente produrre questo effetto).
Gilles 'SO- smetti di essere malvagio' il

@lorin: Beh, in un corso di introduzione Unix all'università abbiamo posto questo tipo di domande come parte dei compiti a casa (perché ad esempio i problemi NFS possono manifestarsi in simili messaggi di errore). Ho appena chiesto per curiosità ...
maxschlepzig,

3
Nella risposta originale, non è necessario un altro terminale: rmdir ../foonello stesso terminale dovrebbe funzionare. Un'altra possibilità, senza comportarsi male filesystem: ln -s directory-that-doesnt-exist/foo foo; touch foo.
effimero

Sento che dovresti modificare "Hm, domanda per i compiti?" fuori dalla risposta .... Onestamente è molto offensivo. Sono proprio su questa pagina perché questo è effettivamente accaduto sul mio computer. Ma questa risposta non lo risolve affatto. È stato risolto un problema con NFS, ma voglio la causa sottostante.
codetaku,

4

Per me stava cercando di scrivere su un link simbolico che puntava a un file che non c'era più:

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

Quello era !! Mi sento stupido ora! Semplicemente facendo una "ls -la" nella directory, il file doveva essere mostrato immediatamente. Era "resolv.conf", che indicava un luogo che a causa di un aggiornamento non funzionante non c'era ...
stolsvik

1

Un altro modo (più semplice) per attivare il messaggio:

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

Fondamentalmente cercando di creare un file in una cartella inesistente.


0

Forse questo aiuterà qualcuno in futuro:

Ho avuto questo stesso problema quando ho rimosso l'unico file che esiste nella mia cartella con git rm. Quindi git ha rimosso la cartella in cui mi trovavo e ogni tentativo di creare un file innesca questo errore perché la cartella non è più lì. Quindi ho dovuto ricreare la cartella manualmente, andare in essa ed eseguire touchcorrettamente il comando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.