当调用ls
时,我想根据它们的颠覆状态使用不同颜色的文件名。例如,添加的文件将是青色,修改后的文件是红色等等。 bash的裸机有可能吗?这方面有没有准备好?根据svn状态着色文件名
14
A
回答
4
据我所知,用纯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
Here's a Gist与第三代小脚本的上色SVN输出。它适用于svn status
命令。我刚刚将alias svns="/path/to/svn-color.py status"
添加到我的.bash_profile
,现在我可以输入svns
并查看颜色编码输出。作者建议将svn
默认为他的脚本。
相关问题
- 1. 崇高文本 - 根据修订状态给文件着色
- 2. Hg根据状态选择文件?
- 3. 根据minion角色调用盐状态
- 4. 如何着色AWK的根据条件
- 5. 着色我们状态的错误[R]
- 6. 着色动态加载的文件
- 7. 如何根据IntelliJ中的文件状态过滤文件Idea
- 8. 状态栏颜色不变根据导航栏的颜色
- 9. 着色JavaFX形状
- 10. SVN根据文件名和文件内容显示最新文件修订版
- 11. 根据条件显示柔性状态
- 12. 如何根据状态改变组件的状态?
- 13. 如何根据名称为Git分支着色?
- 14. Shapefile根据相应的值着色
- 15. 根据重量着色networkx边缘
- 16. 根据最高值着色excel表VBA
- 17. 根据字符权着色字符串
- 18. 如何根据recived状态
- 19. 根据状态和日期
- 20. wxPython - 如何为状态栏的文本着色
- 21. svn更新状态
- 22. 根据JSF1.0中的条件为数据表的行着色?
- 23. 根据文件扩展名
- 24. 根据文件扩展名
- 25. 根据文本状态更改TextView中某段文本的颜色
- 26. 根据预定义的条件为文本编辑器(如emacs)着色文本?
- 27. 如何根据某种搜索模式为unix中的文本文件着色?
- 28. OpenGL着色的形状
- 29. 着色jquery模态
- 30. 连接文件根据文件名
对于那些仍在使用svn。 有python的svn绑定,可能比运行子进程更优雅,你也可以着色其他命令。 – 2016-09-01 03:06:18