Bash mở rộng thập lục phân


10

Tôi muốn biết nếu có một cách sử dụng mở rộng bash để xem tất cả các khả năng kết hợp cho một số chữ số trong hệ thập lục phân. Tôi có thể mở rộng trong nhị phân

Trong cơ sở 2:

echo {0..1}{0..1}{0..1}

Trả lại:

000 001 010 011 100 101 110 111

Trong cơ sở 10:

echo {0..9}{0..9}

Trả lại:

00  01 02...99

Nhưng trong thập lục phân:

echo {0..F}

Chỉ cần lặp lại:

{0..F}

Lưu ý rằng echo {0-9A-F}hoạt động trong zsh với BRACE_CCLtùy chọn.
TonioElGringo

Lưu ý rằng trong cơ sở 10, bạn cũng có thể nói {00..99}để có được đầu ra tương tự.
Ruslan

Câu trả lời:


20

Bạn có thể; bạn chỉ cần chia phạm vi {0..F}thành hai phạm vi riêng biệt {0..9}{A..F}:

$ printf '%s\n' {{0..9},{A..F}}{{0..9},{A..F}}
00
01
...
FE
EF

Đây là một mẹo hay hơn so với viết thủ công từng chữ số trong 0-9A-F!
dhag

14

Sử dụng printf:

$ printf '%.2x\n' {0..255}

Chuỗi định dạng %.2xcho biết định dạng đầu ra dưới dạng số không, hai chữ số, chữ thường, số thập lục phân ( %02xsẽ thực hiện tương tự).

Nếu bạn muốn viết hoa, hãy sử dụng %.2X.

Bash chỉ hiểu 10 phạm vi cơ bản hoặc phạm vi giữa các ký tự ASCII trong các khoảng mở rộng của dấu ngoặc.


7

Điều đó có thể nhưng nó không hay:

echo {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

Theo như tôi có thể nói bashkhông có khái niệm về phạm vi hex.

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.