Раскрасить имя файла в соответствии со статусом SVN - PullRequest
14 голосов
/ 12 января 2011

При вызове ls я хотел бы иметь имена файлов с другим цветом в зависимости от их статуса подрывной деятельности.Например, добавленный файл будет голубого цвета, модифицированный красный и т. Д.Это возможно с голой мощью Баш?Есть что-нибудь готовое на этот счет?

Ответы [ 2 ]

4 голосов
/ 12 января 2011

Насколько я знаю, это невозможно сделать с помощью чистого bash (кроме сценариев).

Вы можете довольно легко получить раскрашенный список файлов, используя скрипты (bash, python, perl, независимо от того, какой у вас яд). Вот довольно грубая реализация концепции, написанная на python: https://gist.github.com/776093

#!/usr/bin/env python
import re
from subprocess import Popen, PIPE

colormap = {
    "M" : "31", # red
    "?" : "37;41", # grey
    "A" : "32", # green
    "X" : "33", # yellow
    "C" : "30;41", # black on red
    "-" : "31", # red
    "D" : "31;1", # bold red
    "+" : "32", # green
}
re_svnout = re.compile(r'(.)\s+(.+)$')
file_status = {}


def colorise(line, key):
    if key in colormap.keys():
        return "\001\033[%sm%s\033[m\002" % (colormap[key], line)
    else:
        return line

def get_svn_status():
    cmd = "svn status"
    output = Popen(cmd, shell=True, stdout=PIPE)
    for line in output.stdout:
        match = re_svnout.match(line)
        if match:
            status, f = match.group(1), match.group(2)

            # if sub directory has changes, mark it as modified
            if "/" in f:
                f = f.split("/")[0]
                status = "M"

            file_status[f] = status

if __name__ == "__main__":
    get_svn_status()
    for L in Popen("ls", shell=True, stdout=PIPE).stdout:
        line = L.strip()
        status = file_status.get(line, False)
        print colorise(line, status)
3 голосов
/ 10 мая 2012

Вот Gist с 3-м поколением небольшого скрипта для раскрашивания вывода SVN.Он отлично работает для svn status команд.Я просто добавил alias svns="/path/to/svn-color.py status" к своему .bash_profile, и теперь я могу набрать svns и посмотреть вывод с цветовой кодировкойАвтор рекомендует установить svn по умолчанию для своего сценария.

...