Quando si richiama ls
, mi piacerebbe avere nomi di file con un colore diverso a seconda del loro stato di sovversione. Ad esempio, un file aggiunto sarà cyan, un file modificato rosso e così via. E 'possibile con il potere nudo di bash? C'è qualcosa pronto a riguardo?Colorize nome file in base allo stato svn
14
A
risposta
4
Per quanto ne so, non è possibile ottenere ciò con puro bash (script a parte).
È possibile ottenere facilmente elenchi di file colorati utilizzando script (bash, python, perl, qualunque sia il veleno). Ecco un'implementazione piuttosto grezzo proof-of-concept scritto in 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
Here's a Gist con il 3 ° generazione di un piccolo script per colorare uscita SVN. Funziona perfettamente per i comandi svn status
. Ho appena aggiunto alias svns="/path/to/svn-color.py status"
al mio .bash_profile
e ora posso digitare svns
e vedere l'output con codice colore. L'autore raccomanda di impostare il valore predefinito svn
nel suo script.
Problemi correlati
- 1. utente reindirizzamento in base allo stato in Reagire
- 2. colorize single track in file kml
- 3. pristine svn-base file mancante
- 4. Modifica il riepilogo CheckBoxPreference in base allo stato verificato
- 5. RxJ: Come eseguire il ciclo in base allo stato dell'osservabile?
- 6. Elementi azione ActiveAdmin in base allo stato dei dati
- 7. stato svn in TortoiseSVN?
- 8. più (+) segno in SVN nome
- 9. Non mostrare svn: esterni in stato svn
- 10. Colorate i file nella vista ad albero di SublimeText in base allo stato git?
- 11. Comportamento rispetto allo stato
- 12. Colorize Voronoi Diagram
- 13. Rinomina nome file di base in Qt
- 14. git - riassunto del file modificato come svn diff --summarize/svn stato dalla console (senza gitk)
- 15. Sospendi l'ordine in base allo zero ultimo
- 16. file esiste in base al nome del file di pattern
- 17. Cosa significa il codice di stato E in SVN?
- 18. Creazione di un oggetto in base allo stato di un altro oggetto in Java
- 19. stesso URL ('/') con diversi modelli in base allo stato di accesso in AngularJS
- 20. Accesso allo stato React dall'esterno
- 21. SVN cambia nome utente
- 22. Ottenere l'estensione del file (nome base?)
- 23. rete intercambiabile e fornitori di localizzazione GPS in base allo stato gps android
- 24. Come si applicano i colori a un elenco SharePoint in base allo stato?
- 25. Impostare condizionatamente la classe ng di Angular in base allo stato
- 26. Quando svn BASE diventa uguale a HEAD
- 27. condizionale elisp in base al nome host
- 28. Convalida dei dati JSON in base allo schema JSON
- 29. Come accedere allo spazio dei nomi di base in Ruby?
- 30. Emberjs - Come accedere allo stato corrente o al nome della rotta in RC1?
Per quelli che usano ancora svn. Ci sono collegamenti svn per Python, potrebbero essere più eleganti rispetto all'esecuzione del sottoprocesso e potresti anche colorare altri comandi. –