В чем разница между файлом без расширения и папкой ? Я имею в виду, что когда я создаю файл в терминале, например:
touch somefile
, затем удаляю этот файл и создаю каталог с тем же именем:
mkdir somefile
они выглядят одинаково в ls
. Как различать их без использования cd somefile
?
Кроме того, я не знаю, как файлы без расширений работают в Linux. Мне не удалось найти статью в Интернете, поэтому я хочу, чтобы вы мне помогли.
Используйте -F флаг:
ls -F
Это покажет косую черту для каталогов:
mydirectory/
myfile
Вы можете использовать тесты bash
:
obj=fileordir
[[ -d $obj ]] && echo "directory"
[[ -f $obj ]] && echo "file"
Читайте man bash
Давайте проверим это, создав файл ( test
) и каталог ( testfile
):
me:~$ touch test
me:~$ mkdir testfile
Если вы используете цветной терминал , вы можете увидеть разницу, используя старый добрый ls
. Каталоги имеют другой цвет:
me:~$ ls
test testfile # Oops, we said color!
Если вы используете монохромный терминал , используйте флаг -l
. Вы можете увидеть разницу в первом столбце вывода:
me:~$ ls -l
total 4
-rw-rw-r-- 1 me me 0 Aug 14 11:49 test
drwxrwxr-x 2 me me 4096 Aug 14 11:49 testfile
Вы можете запустить
ls -l
Каталоги будут иметь d
в разрешениях, например
drwxr-xr-x
Также в Ubuntu каталоги синего цвета.
Самый простой способ - использовать команду file
, которая обычно используется для определения типа файла. (см. файл man
). Итак, если вы запустите:
file somefile
, а результат будет:
somefile: directory
, то somefile
, очевидно, является каталогом.
Если somefile
не является каталогом, вы получите результат в зависимости от типа файла. Например, если somefile
был изображением PNG, вы бы получили информацию о нем, подобную следующей:
somefile: PNG image data, 730 x 518, 8-bit/color RGBA, non-interlaced
Файлы в Linux не обязательно имеют расширение. Цитата из ответа Byte Commander в вопросе Имеют ли расширения файлов какое-либо назначение (для операционной системы)? :
Обычно Linux не полагается на имена файлов ( и расширения файлов, т.е. часть имени файла после обычно последней точки) и вместо этого определяет тип файла, исследуя первые несколько байтов его содержимого и сравнивая их со списком известных магических чисел .