Wenn ich ls
aufrufen, würde ich gerne Dateinamen mit einer anderen Farbe je nach Subversion Status haben. Zum Beispiel wird eine hinzugefügte Datei Cyan, eine modifizierte Datei rot und so weiter. Ist es möglich mit der bloßen Macht der Bash? Ist diesbezüglich etwas bereit?Colorize Dateiname nach SVN-Status
14
A
Antwort
4
Soweit ich weiß, ist das mit reinem Bash nicht möglich (Scripting beiseite).
Sie können sehr leicht eingefärbte Datei Auflistung mit Skripten (Bash, Python, Perl, was auch immer Ihr Gift). Hier ist eine eher grobe Proof-of-Concept-Implementierung in Python geschrieben: 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
Here's a Gist mit der 3. Generation eines kleinen Skript SVN Ausgabe kolorieren. Es funktioniert perfekt für svn status
Befehle. Ich habe gerade alias svns="/path/to/svn-color.py status"
zu meinem .bash_profile
hinzugefügt und kann jetzt svns
eingeben und den farbcodierten Ausgang sehen. Der Autor empfiehlt, svn
standardmäßig zu seinem Skript zu machen.
Für diejenigen, die immer noch svn verwenden. Es gibt Svn-Bindungen für Python, könnte eleganter sein als das Ausführen von Subprozessen, und Sie könnten auch andere Befehle färben. –