Công cụ khác nhau có sẵn cho bạn từ trong một vỏ. Sputnick đã cung cấp cho bạn một cái nhìn tổng quan tuyệt vời về các lựa chọn của bạn, dựa trên câu hỏi ban đầu của bạn. Anh ấy chắc chắn xứng đáng được bình chọn cho thời gian anh ấy dành cho bạn nhiều câu trả lời đúng.
Một điều nữa không có trong danh sách của anh ấy:
[ghoti@pc ~]$ dc -e '16i BFCA3000 p'
3217698816
Nhưng nếu tất cả những gì bạn muốn làm là trừ đi, tại sao lại phải thay đổi đầu vào thành cơ sở 10?
[ghoti@pc ~]$ dc -e '16i BFCA3000 17FF - p 10o p'
3217692673
BFCA1801
[ghoti@pc ~]$
Các dc
lệnh là "bàn calc". Nó cũng sẽ lấy đầu vào từ stdin, như bc
, nhưng thay vì sử dụng "thứ tự các thao tác", nó sử dụng ký hiệu xếp chồng ("Ba Lan ngược"). Bạn cung cấp cho nó đầu vào mà nó thêm vào một ngăn xếp, sau đó cung cấp cho nó các toán tử bật các mục ra khỏi ngăn xếp và đẩy lùi kết quả.
Trong các lệnh trên, chúng tôi đã có những điều sau đây:
16i
- bảo dc chấp nhận đầu vào trong cơ sở 16 (thập lục phân). Không thay đổi cơ sở đầu ra.
BFCA3000
- số ban đầu của bạn
17FF
- một số hex ngẫu nhiên tôi đã chọn để trừ đi số ban đầu của bạn
-
- lấy hai số chúng tôi đã đẩy và trừ số sau từ số trước, sau đó đẩy kết quả trở lại vào ngăn xếp
p
- in mục cuối cùng trên ngăn xếp. Điều này không thay đổi ngăn xếp, vì vậy ...
10o
- yêu cầu dc in đầu ra của nó trong cơ sở "10", nhưng hãy nhớ rằng sơ đồ đánh số đầu vào của chúng tôi hiện là thập lục phân, vì vậy "10" có nghĩa là "16".
p
- in mục cuối cùng trên ngăn xếp một lần nữa ... lần này là hex.
Bạn có thể xây dựng các giải pháp toán học phức tạp tuyệt vời với dc. Đó là một điều tốt để có trong hộp công cụ của bạn cho các kịch bản shell.