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

Это - очень сложный вопрос. mattdm уже ответил на многие вопросы.

Между su и sudo, когда Вы рассматриваете отдельного пользователя, su немного более безопасен в этом взломщик, который нашел, что Ваш пароль не может сразу получить полномочия пользователя root. Но все это, который - взятия, чтобы взломщик нашел локальную корневую дыру (относительно редкой) или устанавливает троянца и ожидает Вас для выполнения su.

Sudo имеет преимущества даже перед консольным входом в систему, когда существуют многочисленные пользователи. Например, если система настроена с удаленными защищенными от несанкционированного использования журналами, можно всегда узнавать, кто продержался, выполнил sudo (или чья учетная запись была поставлена под угрозу), но Вы не знаете, кто ввел пароль root на консоли.

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

Linux не имеет безопасного ключа внимания или другого безопасного пользовательского интерфейса для аутентификации. Насколько я знаю, что даже OpenBSD не имеет никого. Если Вы - то, который коснулся о корневом доступе, Вы могли отключить корневой доступ от рабочей системы в целом: если бы Вы хотите быть корнем, необходимо было бы ввести что-то при подсказке загрузчика. Это, очевидно, не подходит для всех вариантов использования. (securelevel *BSD работает как это: в высоком securelevel существуют вещи, Вы не можете обойтись без перезагрузки, такой как понижение securelevel или доступ к смонтированным неструктурированным устройствам непосредственно.)

Ограничение способов, которыми можно стать корнем, является не всегда усилением для безопасности. Помните третьего члена триады безопасности: конфиденциальность, целостность, доступность. Блокировка себя из Вашей системы может препятствовать тому, чтобы Вы ответили на инцидент.

42
26.10.2011, 05:38
5 ответов

Передача файла через pygmentize-f terminal попытается обнаружить тип от имени файла и выделить его соответственно.

48
27.01.2020, 19:35
  • 1
    Это Звездный путь: Глубокий космос Девять шрифтов в их логотипе? Если это, это является потрясающим. –  amphetamachine 26.08.2011, 06:57
  • 2
    Доступный как пакет python-pygments на Debian. –  enzotib 26.08.2011, 10:57
  • 3
    , которые я нашел alias pcat="pygmentize -f terminal256 -O style=native -g" чтобы быть хорошим решением –  Mikael Öhman 26.12.2012, 09:51
  • 4
    , также доступный через pip install pygments –  craigb 08.11.2013, 22:59
  • 5
    На самом деле это должно быть cat code.extension | pygmentize -f terminal -l extension. –  fiatjaf 17.04.2015, 00:34

Пакет Исходного выделения поставляется с esc.outlang определением выходного языка, которое выделяется с escape-последовательностями ANSI.

Удобная обертка src-hilite-lesspipe.sh также включен в пакет, так отображение выделенного вывода в терминале справедливо src-hilite-lesspipe.sh source.file.

На самом деле src-hilite-lesspipe.shосновная причина должна помочь автоматизации использования source-highlight с less. Вы просто устанавливаете:

export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '

Затем любой less source.file покажет выделенный исходный код. (Код на неизвестном языке пройдет неизменный. Выделение будет также пропущено в случае перенаправленного содержания, как less < source.file.)

13
27.01.2020, 19:35
  • 1
    Хороший, спасибо за то, что заняли время для описывания этого –  Paolo 05.11.2011, 09:39

Я использую Vimcat .

https://github.com/ofavre/vimcat

vimcat example

Это выглядит достаточно хорошо для меня.

2
27.01.2020, 19:35

Выделение проще в использовании и быстрее, чем pygmentize

3
27.01.2020, 19:35

Основываясь на комментарии @Mikael Öhman к ответу @Ignacio Vazquez -Абрамса, я написал эту программу на Python, чтобы использовать pygments, если это возможно, или же использовать cat.

#! /usr/bin/env python3

from argparse import ArgumentParser
import subprocess
import os
import os.path


def main():
    parser = ArgumentParser(description='cat alternative that uses ANSI characters')
    parser.add_argument('file', help='the file to print out the contents of', type=str)
    args = parser.parse_args()
    if not os.path.isfile(args.file):
        parser.error(f'file not found: {args.file}')
    cat = False
    result = subprocess.run(('pygmentize -f terminal256 -O style=native ' + args.file).split(), stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
    )
    if result.stderr:
        cat = True
    commands = {
        True: 'cat ',
        False: 'pygmentize -f terminal256 -O style=native '
    }
    os.system(commands[cat] + args.file)


if __name__ == '__main__':
    main()
1
22.03.2021, 02:20

Теги

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