Như một số bạn có thể đã biết, một đối tượng hoặc tệp thực thi trong Linux bao gồm một số phần (như txt và dữ liệu). Trong trường hợp bạn muốn biết kích thước của từng phần, có một tiện ích dòng lệnh - được gọi là kích thước - cung cấp cho bạn thông tin này. Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của công cụ này bằng một số ví dụ dễ hiểu.
Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ được đề cập trong bài viết này đều đã được thử nghiệm trên Ubuntu 16.04LTS.
Và đây là cách trang hướng dẫn mô tả tiện ích này:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh size hoạt động.
Sau đây là đầu ra mà lệnh trên tạo ra trên hệ thống của chúng tôi:
Ba mục đầu tiên dành cho các phần văn bản, dữ liệu và bss, với các kích thước tương ứng của chúng. Sau đó là tổng số theo định dạng thập phân và thập lục phân. Và cuối cùng, mục nhập cuối cùng dành cho tên tệp.
Đây là đầu ra trong trường hợp này:
Đây là những gì trang hướng dẫn nói về các tùy chọn này:
Ảnh chụp màn hình sau đây hiển thị tùy chọn dòng lệnh này khi hoạt động:
Hàng cuối cùng trong đầu ra đã được thêm vào bởi tùy chọn dòng lệnh -t.
Cũng đáng đề cập là khi sử dụng định dạng Berkeley, những tùy chọn này được bao gồm trong kích thước bss.
Ngoài ra, bạn cũng có thể khiến size đọc các tùy chọn dòng lệnh từ một tệp. Bạn có thể thực hiện việc này bằng tùy chọn @file. Sau đây là một số chi tiết liên quan đến tùy chọn này:
Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ được đề cập trong bài viết này đều đã được thử nghiệm trên Ubuntu 16.04LTS.
Lệnh size của Linux
Lệnh size về cơ bản liệt kê kích thước phần cũng như kích thước tổng thể của tệp đối tượng đầu vào. Đây là cú pháp cho lệnh:
Mã:
size [-A|-B|--format=compatibility]
[--help]
[-d|-o|-x|--radix=number]
[--common]
[-t|--totals]
[--target=bfdname] [-V|--version]
[objfile...]
Mã:
Tiện ích GNU size liệt kê các kích thước phần --- và kích thước tổng --- cho mỗi tệp đối tượng hoặc
tệp lưu trữ objfile trong danh sách đối số của nó. Theo mặc định, một dòng đầu ra được tạo cho mỗi
tệp đối tượng hoặc mỗi mô-đun trong một tệp lưu trữ.
objfile... là các tệp đối tượng cần kiểm tra. Nếu không có mục nào được chỉ định, tệp "a.out" sẽ được
sử dụng.
Câu hỏi 1. Làm thế nào để sử dụng lệnh size?
Cách sử dụng cơ bản của size rất đơn giản. Tất cả những gì bạn phải làm là truyền tên tệp đối tượng/thực thi làm đầu vào cho công cụ. Sau đây là một ví dụ:
Mã:
size apl
Ba mục đầu tiên dành cho các phần văn bản, dữ liệu và bss, với các kích thước tương ứng của chúng. Sau đó là tổng số theo định dạng thập phân và thập lục phân. Và cuối cùng, mục nhập cuối cùng dành cho tên tệp.
Câu hỏi 2. Làm thế nào để chuyển đổi giữa các định dạng đầu ra khác nhau?
Định dạng đầu ra mặc định, trang hướng dẫn cho kích thước cho biết, tương tự như định dạng của Berkeley. Tuy nhiên, nếu muốn, bạn cũng có thể sử dụng quy ước System V. Đối với điều này, bạn sẽ phải sử dụng tùy chọn --format với SysV làm giá trị.
Mã:
size apl --format=SysV
Câu hỏi 3. Làm thế nào để chuyển đổi giữa các đơn vị kích thước khác nhau?
Theo mặc định, kích thước của các phần được hiển thị theo dạng thập phân. Tuy nhiên, nếu muốn, bạn có thể có thông tin này ở cả hệ bát phân và hệ thập lục phân. Để thực hiện, hãy sử dụng các tùy chọn dòng lệnh -o và -x.Đây là những gì trang hướng dẫn nói về các tùy chọn này:
Mã:
-d
-o
-x
--radix=number
Sử dụng một trong các tùy chọn này, bạn có thể kiểm soát xem kích thước của từng phần được đưa ra ở dạng thập phân
(-d hoặc --radix=10); bát phân (-o hoặc --radix=8); hay thập lục phân (-x hoặc --radix=16). Trong
--radix=number, chỉ có ba giá trị (8, 10, 16) được hỗ trợ. Tổng kích thước luôn được đưa ra ở dạng
hai cơ số; thập phân và thập lục phân cho đầu ra -d hoặc -x, hoặc bát phân và thập lục phân nếu bạn đang sử dụng
-o.
Câu hỏi 4. Làm thế nào để lệnh size hiển thị tổng số của tất cả các tệp đối tượng?
Nếu bạn đang sử dụng size để tìm kích thước phần cho nhiều tệp cùng một lúc, thì nếu muốn, bạn cũng có thể yêu cầu công cụ cung cấp tổng số của tất cả các giá trị cột. Bạn có thể bật tính năng này bằng tùy chọn dòng lệnh -t.
Mã:
size -t [file1] [file2] ...
Hàng cuối cùng trong đầu ra đã được thêm vào bởi tùy chọn dòng lệnh -t.
Câu hỏi 5. Làm thế nào để in kích thước tổng thể của các ký hiệu chung trong mỗi tệp?
Nếu bạn đang chạy lệnh size với nhiều tệp đầu vào và muốn lệnh hiển thị các ký hiệu chung trong mỗi tệp, thì bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh --common.
Mã:
size --common [file1] [file2] ...
Câu hỏi 6. Các tùy chọn dòng lệnh khác có sẵn là gì?
Ngoài những tùy chọn đã thảo luận cho đến bây giờ, size cũng cung cấp một số tùy chọn dòng lệnh chung như -v (để biết thông tin phiên bản) và -h (để tóm tắt các đối số và tùy chọn đủ điều kiện)Ngoài ra, bạn cũng có thể khiến size đọc các tùy chọn dòng lệnh từ một tệp. Bạn có thể thực hiện việc này bằng tùy chọn @file. Sau đây là một số chi tiết liên quan đến tùy chọn này:
Mã:
Các tùy chọn read được chèn vào vị trí của tùy chọn @file ban đầu. Nếu file không tồn tại hoặc
không thể đọc được, thì tùy chọn sẽ được xử lý theo nghĩa đen và không bị xóa. Các tùy chọn trong file được
phân tách bằng khoảng trắng. Có thể bao gồm một ký tự khoảng trắng trong tùy chọn bằng cách bao quanh
toàn bộ tùy chọn trong dấu ngoặc đơn hoặc dấu ngoặc kép. Bất kỳ ký tự nào (bao gồm cả dấu gạch chéo ngược) đều có thể được
bao gồm bằng cách thêm dấu gạch chéo ngược vào ký tự cần bao gồm. Bản thân tệp có thể chứa
các tùy chọn @file bổ sung; bất kỳ tùy chọn nào như vậy sẽ được xử lý đệ quy.