Как отличить файл без расширения от папки без использования cd?

В чем разница между файлом без расширения и папкой ? Я имею в виду, что когда я создаю файл в терминале, например:

touch somefile

, затем удаляю этот файл и создаю каталог с тем же именем:

mkdir somefile

они выглядят одинаково в ls . Как различать их без использования cd somefile ?

Кроме того, я не знаю, как файлы без расширений работают в Linux. Мне не удалось найти статью в Интернете, поэтому я хочу, чтобы вы мне помогли.

0
задан 14 August 2021 в 21:09

5 ответов

Используйте -F флаг:

ls -F

Это покажет косую черту для каталогов:

mydirectory/
myfile
0
ответ дан 20 August 2021 в 10:26

Вы можете использовать тесты bash:

obj=fileordir
[[ -d $obj ]] && echo "directory"
[[ -f $obj ]] && echo "file"

Читайте man bash

2
ответ дан 20 August 2021 в 10:26

Давайте проверим это, создав файл ( test ) и каталог ( testfile ):

me:~$ touch test
me:~$ mkdir testfile

Если вы используете цветной терминал , вы можете увидеть разницу, используя старый добрый ls . Каталоги имеют другой цвет:

me:~$ ls
test  testfile   # Oops, we said color!

enter image description here

Если вы используете монохромный терминал , используйте флаг -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
3
ответ дан 20 August 2021 в 10:26

Вы можете запустить

ls -l

Каталоги будут иметь d в разрешениях, например

drwxr-xr-x

Также в Ubuntu каталоги синего цвета.

3
ответ дан 20 August 2021 в 10:26

Самый простой способ - использовать команду 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 не полагается на имена файлов ( и расширения файлов, т.е. часть имени файла после обычно последней точки) и вместо этого определяет тип файла, исследуя первые несколько байтов его содержимого и сравнивая их со списком известных магических чисел .

5
ответ дан 20 August 2021 в 10:26

Другие вопросы по тегам:

Похожие вопросы: