ls colors: почему некоторые из моих шрифтов черные, а другие – зеленые на выходе ls

Я загрузил некоторые файлы шрифтов в AWS (работает Amazon Linux) и переместил их в каталог /usr/share/fonts с помощью команды cp в .ebextensions.

Когда я использую SSH с моего mac и использую ls -a , я вижу, что некоторые файлы окрашены по-разному – один набор файлов шрифтов черный, а другие – зеленые. Мне любопытно, почему это было так, и если это создаст какие-то проблемы для моего кода .

Каталог шрифтов на Elastic Beanstalk работает с AWS Linux

ls -la screenshot

Из другого ответа на AskUbuntu я нашел этот ключ о том, как интерпретировать эти цвета. Я не могу понять, почему .ttf будет исполняться или почему один набор .ttfs будет распознан, а не другой.

Синий: Справочник

Зеленый: исполняемый или распознанный файл данных

Sky Blue: Связанный файл

Желтый с черным фоном: Устройство

Розовый: графический файл изображения

Красный: файл архива

Эти файлы были загружены в Mac с разных сайтов шрифтов перед загрузкой.

4 Solutions collect form web for “ls colors: почему некоторые из моих шрифтов черные, а другие – зеленые на выходе ls”

ls -l сообщит вам окончательно, является ли файл исполняемым или нет. Я не думаю, что здесь есть какая-то великая тайна. Вы загружали файлы из разных источников, каждый из которых мог иметь разные биты разрешения (без каких-либо особых причин). Если вам не нравится видеть некоторых с цветами и другими без проверки файлов chmod -x *.ttf … шрифтов, не нужно устанавливать исполняемый бит.

Цвет указывает, что файл отмечен как «исполняемый» *

Биты исполняемого разрешения (один для пользователя, один для группы, один для другого) означает, что если имя файла передается на один из системных вызовов exec, ядро ​​будет идти вперед и попытаться его вывести.

Конвенция состоит в том, что только файлы, которые на самом деле предназначены для экспрессии, имеют исполняемый бит. Однако при перемещении / копировании файлов вокруг, особенно в многоплатформенной среде, легко ненадлежащим образом получить или потерять исполняемые биты.

Файлы, хранящиеся в файловой системе, которая не поддерживает разрешения unix (fat, ntfs и т. Д.), Скорее всего, будут отображаться в системе как исполняемые. Перемещение или копирование этих файлов в файловую систему unix с помощью инструмента, который сохраняет разрешения, затем сохранит исполняемые биты.

С другой стороны, использование инструментов для перемещения файлов, которые либо не могут сохранять разрешения, либо использоваться с возможностью сохранения отмененных разрешений, скорее всего, приведет к тому, что копия не будет помечена как исполняемая, даже если оригинал был.

Поэтому после перемещения по различным платформам с использованием множества инструментов исполняемые биты разрешений могут оказаться в довольно произвольном состоянии.

* Я не уверен на 100%, как ls обрабатывает случай, когда установлены некоторые, но не все исполняемые биты.

Кажется, что команда ls вы выполняете, является псевдонимом для ls --color

человек

–color [= WHEN] раскрасить вывод; КОГДА может быть «всегда» (по умолчанию, если опущено), «авто» или «никогда»; больше информации ниже

Вы можете проверить его, запустив ls :

  • Использование котировок:

    "ls" -a

  • Использование полного пути (например, если ls находится в /bin/ls ) и посмотреть, показывают ли они цвета или нет:

    / bin / ls -a

Примечание. Запуск ls -la покажет вам детали файлов, и вы сможете увидеть полную информацию о каждом файле, что позволит вам проверить с ожидаемым выходом ls --color

Как было сказано в предыдущих ответах, раскраска должна указывать, считаются ли файлы исполняемыми или нет.

Разрешение «выполнить» (= бит) в Linux и большинстве других Unixs имеет одно значение для файлов, а другое для каталогов.

Для каталогов, если у вас есть разрешение на выполнение, вы можете увидеть его содержимое. Если вы этого не сделаете, вы не можете подключиться к каталогу и не сможете перечислить в нем файлы, даже если у вас есть доступ на чтение и запись в каталог.

Для обычных файлов (в отличие от файлов устройств и других специальных типов файлов Unix) бит выполнения означает, что если вы используете имя файла в командной строке, O / S (или более точно: shell) попытается «выполнить» или запустить файл как команду. И наоборот, если у вас нет разрешения на выполнение для файла, вы не можете запустить его из командной строки.

Итак, если вы, например, удалите разрешение x от всех пользователей в файле / bin / cat (который является командой Unix), вы сами или кто-либо другой, и любая программа, пытающаяся использовать команду «cat», не будет выполнена.

Это команды OS, такие как «cat» и «grep», которые имеют исполняемые файлы обычно в / * / bin / directories – / bin, / usr / bin, / sbin, / usr / sbin и т. Д.

И тогда могут быть нескомпилированные интерпретируемые сценарии, которые либо написаны на каком-то языке программирования, например, как скрипты Python или shell (в основном, команды, которые вы пишете, как из командной строки, когда sshing на сервер).

Теперь, когда вы устанавливаете бит выполнения в файле сценария (например, файл foobar) и пытаетесь выполнить его в своей оболочке: «./foobar», оболочка пытается проанализировать файл и найти правильную программу для передачи сценария к.

Это оболочка делает, пытаясь прочитать первую строку файла и найти «shebang» нотацию, из какой программы она должна запускаться.

Итак, если ваш foobar был текстовым файлом с первой строкой:

 #!/usr/bin/python 

Затем оболочка попытается выполнить команду: /usr/bin/python foobar , в основном ссылаясь на интерпретатор python и передавая ему имя вашего файла foobar в виде скрипта Python.

Если оболочка не найдет такую ​​первую строку в вашем файле, она попытается выполнить сам foobar, как если бы она содержала команды оболочки.

Если файл с исполняемым битом не содержит допустимых команд оболочки, то оболочка просто будет жаловаться.

Так вот что произойдет, если у вас есть файлы TTF с установленным битом exec и попытался запустить его из командной строки:

 $./FreeMonoOblique.ttf -bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error $ 

Таким образом, для шрифтов он, вероятно, более аккуратный, если бит exec не установлен, но ничего не меняет.

PS Просто какая-то посторонняя информация. Если вы удалите бит выполнения по какой-либо команде или скрипту, он все равно может быть передан любой другой программе в качестве аргумента. Если эта другая программа знает, как выполнить вашу команду, удаление бит exec не имеет большого значения. Например, скрипт pobon foobar все равно будет выполняться интерпретатором Python, если вы просто сделали из командной строки:

 $python foobar 

вместо

 $./foobar 

То же самое с примером системных команд, таких как «cat». Если вы удалите бит exec из «cat», вы все равно можете передать его в новый экземпляр оболочки для выполнения:

 $sh -c 'cat myfile' 

будет работать, даже если вы удалили бит exec из cat и

 $cat myfile 

не делает.

  • Разница между ls-l и ll?
  • Как показать все файлы в каталоге, кроме тех, которые имеют определенное расширение и отображать их в нескольких столбцах?
  • Изменение интервала между файлами в ls
  • Использование шаблонов OR в шаблонах оболочки
  • Список подкаталогов только n уровень глубокий
  • копирование узлов устройства
  • Как изменить цвет разных файлов в ls
  • Как заказать несколько опций команды (ls)?
  • Символы / программные ссылки с цветовой координацией на основе того, на что они ссылаются
  • Как найти 4-й и 5-й символы имени файла?
  • Как отображать метаинформацию для разных видов времени файла?
  • Interesting Posts

    mdadm RAID5 не может быть собран

    Двойная загрузка Ubuntu с окнами 8

    Каков самый простой способ отправки электронной почты между двумя компьютерами?

    Как переместить файл в корзину с ключом Del в Gnome 3.14.1 / Debian Jessie?

    Как диагностировать проблемы развертывания докеров (dokku / git push)?

    Запуск системного модуля systemd при следующей загрузке, но не последующие загрузки

    Перезаписывать Linux во время использования

    Как я могу использовать «emulate sh» в zsh для работы с ». myscript.sh»?

    Найти файлы, имя которых составляет 4 символа

    Что происходит, когда вы выполняете функцию, которая вызывает другую функцию?

    Как разделить переменную $ 0, чтобы найти каталог и относительные пути в bash?

    Ldap SSH Login не работает – одинаковые конфигурации работают на 20+ других серверах – Ubuntu

    Запуск скрипта сразу после входа в систему перед чтением / etc / motd

    Как удалить пустые строки, начиная с строки 5

    Как обрабатывать специальные символы в имени файла, используя find

    Linux и Unix - лучшая ОС в мире.