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, але мені було цікаво загальний випадок, який може призвести до цього. Чи справді такий тип питань був би проблемою домашнього завдання в класі?
Лорін Хохштайн

3
Загальний випадок - поточний каталог не існує. Окрім того, що його було видалено, як у прикладі maxschlepzig, це може статися лише у дивних обставинах, як файлова система, що не поводиться (ваш випадок), або, можливо, механізм безпеки, як SELinux, зробив каталог невидимим (не знаю, чи SELinux може насправді створювати цей ефект).
Жил "ТАК - перестань бути злим"

@lorin: Ну, на курсі впровадження Unix в університеті ми задавали такі питання, як частина домашніх завдань (тому що, наприклад, проблеми з NFS можуть проявлятися у подібних повідомленнях про помилки). Просто запитали з цікавості ...
maxschlepzig

3
У оригінальній відповіді немає потреби в іншому терміналі: rmdir ../fooв цьому ж терміналі має працювати. Інша можливість без погано себе файлові системи: ln -s directory-that-doesnt-exist/foo foo; touch foo.
ефеміент

Я відчуваю, що вам слід редагувати "Хм, домашнє запитання?" з відповіді .... Чесно кажучи, це дуже образливо. Я на цій самій сторінці, тому що це фактично сталося на моєму комп’ютері. Але ця відповідь це зовсім не вирішує. Це була проблема NFS, яка перезавантажилася виправленою, але я хочу, що це було причиною.
кодетаку

4

Для мене це намагалося записати на символьне посилання, яке вказувало на файл, якого вже не було:

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

Це було !! Відчуваю себе німим зараз! Тільки що робив "ls -la" в каталозі, файл повинен був показати його негайно. Це було "resolutionv.conf", яке вказувало на місце, яке через збій оновлення там не було ..
stolsvik

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команду успішно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.