синтаксис gedit приукрашивает шоу привычки

У меня есть некоторые программы, которые я записал только что для редактирования дневника, который я вел. Мне обычно не нравится использовать gedit, мне нравится продолжать мои навыки энергии для моего следующего "gui-меньше" проект. Я редактировал одну из тех программ, записанных в сценарии удара с gedit, и даже с #!/bin/bash наверху, это не показало бы синтаксис удара. все другие, кажется, хорошо работают. вот проблематичный сценарий.

#!/bin/bash
############################
# ok, this is going to be  #
# a remake of my first     #
# easy access log editing  #
# Program.                 #
############################

chmod 770 ~/.Secret_Files
vi ~/.Secret_Files/Log17
chmod 000 ~/.Secret_Files
sleep .5
echo 'Done'

(как мои слабые попытки документации?)

вещь, которая сосет, прямо здесь, она просто показала синтаксис, раскрашивающий askubuntu.

Отвеченный вопрос, никакая потребность добавить.

1
задан 7 April 2017 в 08:17

2 ответа

Я не знаю, как gedit обрабатывает подсветку синтаксиса дополнительных меньше файлов (существуют вопросы о который: действительно ли Gedit может принять значение по умолчанию, выделив стиль быть установленным для файлов без расширения? ), но определенно существует плагин, который обрабатывает modelines:

enter image description here

Так, если у Вас есть комментарий формы в первом (или в последний раз) немного строк:

# vi: ft=sh #

Это будет использовать подсветку синтаксиса оболочки, и с ft=perl, подсветка синтаксиса Perl и так далее.

2
ответ дан 7 December 2019 в 13:34

Объяснение общего положения: если первые два байта в файле представляют собой 16-битное значение 2321 (шестнадцатеричное), файл является сценарием, который должен быть передан другому исполняемому файлу в argv[1]. Argv[0] — имя исполняемого файла.

В отличие от M$-DOS, Windows и т. д., ОС типа Unix не заботятся о расширениях файлов. Тот факт, что последние 3 байта в имени файла оказались «.sh», бесполезен для ядра. Что имеет значение, так это биты режима и первое 16-битное целое число в первом значении в самом файле. Биты режима говорят о наличии исполняемого файла, независимо от структуры его имени. Раньше они назывались «магическими числами» и определялись в sys/magic.h. В нашем примере, если первое значение равно 2321, это означает, что это интерпретируемый файл. Ожидается, что следующим 16-битным значением будет 202f. Если это так, то строка с позиции 2 в файле до следующих 20 лучше будет путем к реальному двоичному файлу или какому-то другому магическому числу.Остальная часть строки (значительно упрощенная) — это аргументы, передаваемые интерпретатору. Какой-то беспорядочный код присваивает их argv[0], argv[1] и т. д. По сути, это то, как ядро ​​​​может «выполнить» произвольный скрипт, не зная, когда/почему/как был только что создан новый интерпретатор.

Carry Away: первые два байта (символа) в файле определяют, как он будет обрабатываться: как двоичный файл для загрузки и запуска или как аргумент, который будет передан исполняемому файлу. Прочтите исходники ядра (или libc?), следуя magic.[ch] и т. д.

0
ответ дан 29 April 2020 в 23:31

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

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