Как в Linux узнать путь к файлу?
кроме того, не во всех файловых системах есть настоящие иноды с номерами
Например один и тот же файл может быть задан тысячью способов:
some.file
~/somedir/some.file
../somedir/some.file
/home//somedir/somefile
/home//..//somedir/../..//somedir/some.file
etc
А мне нужно знать, что это один и тот же файл
Хочется добавить, что описанное тобой соответствие (зачастую) не является однозначным.
P.S. Сразу вспомнилась пословица про половину ответа.
2. если нужен именно полный путь, есть realpath(3)
3. если нужен сам файл, независимо от имени, то хорошего способа AFAIK нет, можно посмотреть, как это делают tar, cp, rsync, которые умеют детектировать жёсткие ссылки
Также можно определить сколько хардлинков на этот инод.
И симлинки тоже легко распознаются.
думаю, это решит мои проблемы
Кстати, насчет неоднозначности - просто, хотел узнать в какой ситуации это может быть не один и тот же файл?
хотел узнать в какой ситуации это может быть не один и тот же файл?
Иноды разные (с учётом разных разделов).
Это да, но хотелось бы просто выводить сообщение типа "ошибка при обработке файла /some/bad/file" вместо "ошибка при обработке файла с инодом 31337" может выглядеть не очень информативно - я например не знаю, как этот файл найти
почему бы не указывать в сообщении то имя, которое и использовалось для работы, как это делают все?
Различать по иноду, а выводить имя.
В чём вопрос?
я наверное всех запутал - в общем, прога обрабатвает в фалах фишки типа #include "foo.bar" и в этом месте вставляет этот файл. А в том файле может быть опять #include "bar.foo" и т.д - это делается рекурсией и вдруг где-то встречается #include file - это ошибка, а как узнать какой это файл?
А честно говоря, я уже просто увлекся разговором с умными людьми - проблема в принципе решена
если сама ползает, то знает, где находится
Оставить комментарий
Biglem
Такая фишка, нужно зная inode файла вывести абсолютный путь к нему.например f(41431) = "/usr/local/bin/mc"
Это же должно быть возможно.
Может кто знает, я уже две недели бьюсь - все перепробовал, не получается.