當調用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