Khi gọi ls
, tôi muốn có tên tệp có màu khác tùy thuộc vào trạng thái lật đổ của chúng. Ví dụ: một tệp được thêm vào sẽ là màu lục lam, một tệp được sửa đổi màu đỏ và cứ tiếp tục như vậy. Có thể với sức mạnh trần của bash? Có điều gì đó sẵn sàng về vấn đề này không?Colorize tên tập tin theo trạng thái svn
14
A
Trả lời
4
Theo như tôi biết, không thể đạt được điều đó với bash thuần túy (viết kịch bản sang một bên).
Bạn có thể dễ dàng nhận được danh sách tệp được tô màu bằng các tập lệnh (bash, python, perl, bất kể chất độc của bạn). Dưới đây là một bằng chứng của khái niệm thực hiện khá thô viết bằng 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 với thế hệ thứ 3 của một kịch bản nhỏ để tô màu đầu ra SVN. Nó hoạt động hoàn hảo cho các lệnh svn status
. Tôi vừa thêm alias svns="/path/to/svn-color.py status"
vào số .bash_profile
và bây giờ tôi có thể nhập svns
và xem đầu ra được mã hóa bằng màu. Tác giả khuyên bạn nên đặt svn
mặc định thành tập lệnh của mình.
Các vấn đề liên quan
- 1. trạng thái svn trong TortoiseSVN?
- 2. Thay đổi trạng thái Lync theo tập lệnh
- 3. tập tin tồn tại theo tên tập tin mẫu
- 4. Plus (+) đăng nhập vào tên tập tin SVN
- 5. Cách xóa các tập tin không được theo dõi trong SVN
- 6. Magento: Lọc sản phẩm theo trạng thái
- 7. Trạng thái mức/trạng thái Pygame
- 8. Trạng thái git svn - hiển thị các thay đổi không được cam kết với svn
- 9. Python/rq - theo dõi trạng thái của nhân viên
- 10. HTTPS có trạng thái hoặc trạng thái không?
- 11. Trạng thái tùy chỉnh trong Trình theo dõi lỗi Mantis
- 12. Tăng cường "ls" với thông tin trạng thái git?
- 13. SVN sẽ không cam kết các tệp không phiên bản mặc dù chúng hiển thị trạng thái svn
- 14. Làm cách nào để tìm các tệp không được theo dõi trong cây Perforce? (tương tự trạng thái svn)
- 15. lỗi: lỗi khi tạo tập tin tiểu bang/var/lib/logrotate/trạng thái: Permission denied
- 16. Trạng thái mở rộng/thu gọn không được lưu sau khi đóng tập tin
- 17. Giữ các tập tin bị bỏ qua trong trạng thái git
- 18. Subversion: trạng thái svn hiển thị vô số tệp .metadata không mong muốn
- 19. TextWriterTraceListener và theo dõi tên tập tin với GUIDs
- 20. SVN Xuất Thư mục tập tin Chỉ
- 21. Nuking tập tin khổng lồ trong kho svn
- 22. Backbone.js - nơi lưu trữ thông tin trạng thái?
- 23. Bảo quản trạng thái theo phương pháp mở rộng
- 24. Hiển thị đổi tên trong trạng thái hg?
- 25. Trạng thái tortoisesvn: bị che khuất
- 26. Kiểm tra mã trạng thái FTP bằng tập lệnh PHP
- 27. Tên quận hạt trên bản đồ trạng thái mặt (ggplot2)
- 28. Kiểm tra trạng thái của tin nhắn GCM
- 29. Colorize tail output
- 30. iPhone - Xóa thanh trạng thái theo chương trình
Đối với những người vẫn đang sử dụng svn. Có các ràng buộc svn cho python, có thể thanh lịch hơn so với chạy tiến trình con, và bạn cũng có thể tô màu các lệnh khác. –