Tại sao `--human-readable` cần thiết và không mặc định?


56

Một số công cụ dòng lệnh sử dụng -hhoặc --human-readabletùy chọn để in kích thước tệp theo định dạng có thể đọc được của con người (nghĩa là 36Gso với 37550836).

  • Tại sao tùy chọn này là cần thiết và không phải là mặc định?
  • Những công cụ này không phải chủ yếu để đầu ra cho con người sao?

Câu trả lời:


75
  1. Bởi vì chúng không tồn tại ban đầu và hành vi mặc định là tương thích ngược. Ngoài ra, vì chúng không tồn tại trên tất cả các biến thể unix và hành vi mặc định tương thích với các biến thể unix khác.
  2. Đối với nhiều công cụ, bởi vì chúng được dự định phân tích bằng các công cụ khác. Điều này hiếm khi xảy ra ls, nhưng phân tích đầu ra duhoặc dftương đối phổ biến. (Lưu ý, vì df, bạn nên sử dụng df -Pkhi phân tích cú pháp.)
  3. Bởi vì một số người thích định dạng 37550836, bởi vì khi bạn nhìn thấy một loạt các số như vậy, kích thước tương đối của chúng rõ ràng (số chữ số).

22
Đặc biệt là 3) khi tôi chuyển đầu ra thẳng vào sort -nvì tôi ít quan tâm đến việc nhanh chóng nhìn thấy kích thước thô của mỗi thư mục và hơn nữa trong đó thư mục con đang chiếm quá nhiều không gian một cách không cân xứng ...
Shadur

8
@Shadur Ah nhưng sắp xếp -hcũng vậy!
quodlibetor

3
Tôi nghĩ rằng 2 (ví dụ cho kịch bản) là lý do chính.
sml

@quodlibetor Hệ điều hành / phân phối gì? kubfox sắp xếp không chấp nhận -h và tôi không thể thấy tương đương.
Joe

7
@ user23861 sort -hđược giới thiệu trong GNU coreutils 7.5. Lucid có 7.4, vì vậy trên Ubuntu bạn cần ít nhất là maverick.
Gilles 'SO- ngừng trở nên xấu xa'

13

Lưu ý rằng nếu bạn đặt BLOCKSIZE = có thể đọc được trong môi trường của bạn, thì đây sẽ là mặc định, ít nhất là cho các lệnh từ GNU coreutils, tức là nếu bạn đang sử dụng bash put:

export BLOCKSIZE=human-readable

trong tệp $ HOME / .bashrc của bạn.


2
Hình như BLOCKSIZE=hcó thể là đủ. Nhưng mẹo tuyệt vời!
Mikel

Các tài liệu đề nghị BLOCK_SIZE=human-readable. Cũng không biết về hỗ trợ cho hàng ngàn dải phân cách cho đến khi tôi đọc được điều đó.
Mikel

Dường như không hoạt động trên OSX
James Lin

@jameslin: đây có thể là biến số cụ thể của lõi GNU. Bạn có thể tạo bí danh ...
Thor

6

Bên cạnh những gì Gilles nói:

Khi những công cụ này được phát minh ra hdd là rất nhỏ, so với ngày nay. Bạn không cần giúp đỡ để đọc một số như 400000.

Và nếu bạn không thích nó, hãy sử dụng hệ thống bí danh. Trong thư mục nhà của bạn,

edit ~/.bashrc 

và chèn, ví dụ:

alias df='df -h'
alias du='du -h'

Lưu ý rằng trái ngược với nhiều ngôn ngữ khác, bạn không được phép để trống trước hoặc sau toán tử gán (dấu bằng).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.