Question

Lors de l'appel ls, je voudrais avoir des noms de fichiers avec une couleur différente en fonction de leur état de subversion. Par exemple, un fichier sera ajouté cyan, un rouge fichier modifié et ainsi de suite. Est-il possible avec la puissance nue de bash? Y at-il quelque chose de prêt à cet égard?

Était-ce utile?

La solution

Pour autant que je sache, il est impossible d'y parvenir avec bash pur (scripts côté).

Vous pouvez obtenir facilement le fichier Colorised liste en utilisant des scripts (bash, python, perl, quel que soit votre poison). Voici une preuve de concept plutôt la mise en œuvre brut écrit en 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)

Autres conseils

Voici un Contenu essentiel avec la 3ème génération d'un petit script pour coloriser sortie SVN. Il fonctionne parfaitement pour les commandes de svn status. Je viens d'ajouter alias svns="/path/to/svn-color.py status" à mon .bash_profile et maintenant je peux taper svns et voir la sortie code couleur. L'auteur recommande de faire défaut svn à son script.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top