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 -a», каково значение «.» И «..»?
  • Почему моя петля над выходом ls не работает?
  • Не удалось отобразить содержимое каталога: процесс бесконечно бесконечно
  • Как перечислить все папки в каталоге, не начиная с символа L?
  • Почему размер «точечного» файла «.» Превышает 4096?
  • Как изменить цвет встроенного терминала в linux mint 12, чтобы иметь возможность использовать `ls` и` byobu`?
  • find -exec ls -lR {} \; возвращает каждый элемент дважды
  • Как мне заставить «sudo ll» работать?
  • Сгладить вывод рекурсивного списка каталогов
  • Неизвестный тип файла в ls
  • `ls / | wc -l` указывает больше строк, чем `ls /` показывает
  • Interesting Posts

    «Globbing» (*) происходит от «глобальной команды» … А?

    Thunderbird: отключить ENTER, открывая все сообщения в потоке

    Почему вывод поиска отсортирован в Cygwin, но не в Solaris?

    Рекурсивно применить команду для изменения всех файлов в каталоге

    Что замерзает мой рабочий стол каждую секунду (например, часовой механизм)?

    как объединить файлы PDF так, чтобы каждый файл начинался с нечетного номера страницы?

    Как настроить PulseAudio для 7.1 Surround Sound через HDMI?

    Базовые разрешения для привода fat32 usb

    Ядро Linux: LOWMEM + HIGHMEM> Общая память?

    Запись данных как в файл, так и в последовательный порт – могу ли я использовать тройник?

    удалить завершающие нули в awk не работает. ошибка синтаксиса

    Извлечь временной диапазон из файла журнала с помощью AWK

    сценарий оболочки для запуска при загрузке в Mac OS X не запускает все команды

    Cinnamon разбился после установки драйверов nvidia

    В чем разница, если я начинаю bash с «/ bin / bash» или «/ usr / bin / env bash»?

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