В Ubuntu почему я не могу иметь папку с именем «MyFile» и документ с именем «MyFile» в одном месте? Я получаю item already used in this location
ошибку. Ubuntu / Linux рассматривает папки и файлы как одни и те же объекты (указатели на диск)?
15
.myfile
,?blog
с сообщениями в блоге и html-страницаblog
со списком сообщений в блоге.Ответы:
В Linux почти все является файловым дескриптором. Каталог - это специальный тип файла, который с точки зрения пользователя может содержать другие файлы.
Таким образом, вы не можете иметь оба с одним и тем же именем в одном и том же каталоге одновременно.
Если бы ты мог, жизнь стала бы несчастной для программистов. Что бы у вас команда «isDir» возвращала, когда кто-то хочет создать каталог и проверить, существует ли он. Должен ли isDir ("/ home / shrodingers / cat") возвращать true, false или оба? И что вы ожидаете, если кто-то захочет открыть файл в каком-то коде?
И что должна делать система, когда вы говорите, чтобы она открыла что-то? Предположим, вы хотите файл? Это говорит о беде ;)
Кстати: это верно для ВСЕХ операционных систем, а не только для Linux. Хотя с точки зрения рабочего стола операционная система может добавить уникальный идентификатор в файл или каталог и удалить его из списка. С точки зрения командной строки это было бы проблематично.
В Windows есть одна вещь: мы используем имена с учетом регистра. Так что «MYFILE» и «myfile» - это разные вещи.
источник
Вы не можете иметь два объекта с одинаковым именем в одном месте. что произойдет, когда вы захотите кошку или vi файл? какую сущность выберет ОС? поэтому из-за возможности путаницы вы не сможете иметь одинаковое имя для файла и папки в одном месте. и, кстати, папка - это файл, содержащий другие файлы.
источник
cat
илиvi
иным именем, то, очевидно, ОС должна выбрать файл. Почему это не может работать?vi
который обычно находитсяvim
в Ubuntu, очень рад открыть и показать каталог и даже отредактировать его. Попробуйте:vi .
cat
иvi
адресуется к этому имени , то логическая интерпретация вызвать его на файл , а не на поддиректории. Тот факт, что (в основном) файлово-ориентированная команда (vi
) также работает с (под) каталогом, не имеет отношения к этому утверждению.vim
не рассматривает аргументы подкаталогов наивно; с тем же кодом, с которым он обрабатывает файлы.vim
кажется (на очень упрощенном уровне) две программы в одной: если она вызывается для файла, она действует как текстовый редактор, а если она вызывается в подкаталоге, она действует как файловый менеджер.vi
. Приветствия.Я знаю, что это старая тема, но у меня была та же проблема, и я хотел поделиться.
Вот моя история (наберитесь терпения, есть счастливый конец).
Окружающая обстановка:
ядро Gentoo 4.12.5 64bit на reiserfs
Как это могло случиться?
У меня есть несколько машин с общей папкой с использованием синхронизации. Когда-то в прошлом я удалял файл с именем .stfolder и вместо этого создал каталог с таким именем. Поэтому, возможно, ошибка связана с синхронизацией синхронизации этой операции на другом компьютере.
Теперь давайте рассмотрим ошибку: (я работаю как root здесь)
похоже, что файл является призраком, однако папка отвечает нормально (с помощью команды find)
Я знаю, очень странно ...
Я не могу удалить этот призрачный файл!
Но в конце я успешно удалил его, переместив в точку монтирования tmpfs
Я должен сказать, что ошибка все еще присутствует в tmpfs, поэтому не имеет отношения к reiserfs:
Как вы можете видеть в этом выводе bash, файл присутствует и не присутствует одновременно. Благодаря этой способности кошки Шредингера мы можем создать папку с таким же именем.
Но подождите, это еще не все (и вы должны найти это очевидным): мы можем создать еще один файл с таким же именем.
Призрака можно скопировать (чтобы я мог продублировать ошибку) или манипулировать с помощью chown, chmod и т. Д. Единственное ограничение - вы не можете назвать его, поэтому вы должны поместить его в пустой каталог и использовать «. *» Как аргументы для этих команд ... но это работает!
Из-за самой природы этот файл был пуст с самого начала (это просто флаг для синхронизации).
Поэтому мне было любопытно, если бы я мог поместить некоторые данные в этот файл.
И вот, решение пришло ко мне:
Да, в этом файле есть невидимый символ, сразу после точки.
Это все объясняет.
Слава богу, я не использовал "Эхо-тест >>. *" И кот ...
источник
U+200b
является «нулевой шириной пространства» , кстати. Мне нравится этот анекдот, хотя я боюсь, что он не может полностью считаться ответом./unix//a/238056/139805
вау, это действительно странно, но я просто сделал то, что спросил автор. Вот как, так это реальный ответ: P
это было сделано:
Whoah чередуют два файла с одинаковыми именами, даже не каталог и не файл, что происходит ??? _
совершенно странное поведение
источник