dpkg-parsechangelog
hoạt động, và câu trả lời trước đó dẫn đầu ra thông qua sed / grep nên hoàn toàn mạnh mẽ. Nếu bạn muốn biết chi tiết chính xác về định dạng dpkg-parsechangelog
đầu ra và hầu hết các tệp điều khiển kiểu debian khác, hãy xem RFC 822 . Phiên bản gói gỡ lỗi không bao giờ có dòng mới, dấu cách hoặc bất kỳ ký tự điều khiển hoặc đặc biệt nào khác (xem man deb-version
), do đó, dòng " Version: blah
" trong đầu ra sẽ luôn xuất hiện và nó sẽ luôn là một dòng trên nó sở hữu.
Tuy nhiên, dpkg-parsechangelog
là một chương trình rất nặng để chạy chỉ để lấy số phiên bản hiện tại từ một thay đổi. Nó phải chạy Perl và tải một số lượng lớn các thư viện ấn tượng để cung cấp cho bạn một kết quả, hầu hết trong số đó bạn sẽ không sử dụng. Trên các nền tảng chậm hơn hoặc với phương tiện lưu trữ tệp chậm hoặc khi bạn cần thực hiện phiên bản này phân tích cú pháp nhiều lần, nó sẽ tỏ ra khá chậm. Thay vào đó, chỉ cần sử dụng bất cứ thứ gì nằm trong bộ dấu ngoặc đầu tiên trên dòng đầu tiên:
head -1 debian/changelog | awk -F'[()]' '{print $2}'
Điều đó sẽ giúp bạn có phiên bản gói hiện tại chính xác với bất kỳ changelog
tệp hợp lệ nào sử dụng định dạng chuẩn (và các debian/changelog
định dạng không chuẩn là, cho tất cả các mục đích chung thực tế, không bao giờ được sử dụng).