Tại sao ký tự dấu mũ / dấu mũ được sử dụng làm biểu tượng cho Ctrl?


18

Tôi đã bắt đầu sử dụng bảng điều khiển Linux từ lâu nhưng tôi chưa bao giờ tự đặt câu hỏi về ký tự dấu mũ hay còn gọi là dấu mũ ( ^). Tôi muốn hỏi tại sao nó được sử dụng thay thế cho từ này Ctrl.

Tôi đã nghĩ về nó vào một ngày khác khi tôi đang sử dụng nano và tôi cũng đã tìm kiếm để xem liệu có câu trả lời nào trên internet không nhưng những gì tôi tìm thấy chỉ là những câu hỏi về "nó là gì" và "nó đại diện cho cái gì".

Có một số lý do lịch sử? Hay nó đến từ một số quy ước kỳ lạ?


2
Ngay cả bản gốc vi(ít nhất là bản gốc trong SunOS 3.5) đã sử dụng dấu mũ / dấu mũ ở phía trước các chữ cái để phản đối ctrl-C, ctrl-V, v.v. sttycũng đã làm như vậy. Mặt khác, ^hoạt động như một từ đồng nghĩa với |các tập lệnh shell trong thời đại đó, vì vậy bạn luôn phải viết lại dấu mũ trong các lệnh stty. Câu hỏi hay.
Bruce Ediger

1
Nếu tôi phải đoán, tôi sẽ nói rằng nó có thể có liên quan đến thực tế là Shift, Control và Meta (cũng như ilk ít được biết đến của họ như Super và Hyper) đều là các phím bổ trợ, trong đó Control có lẽ là phổ biến nhất được sử dụng. Vì hầu hết các phiên bản đã thay đổi của các ký tự có thể được nhập, (ví dụ 3/ #), ^có thể là một tốc ký trực quan cho một loại 'ca' khác nhau, có thể nói như vậy. Thực tế là đối với hầu hết các phím / ký tự có thể đánh máy, Ctrl chỉ tắt 64 bit của ký tự cũng có thể liên quan - ^trở thành tốc ký NOT (0x40).
DopeGhoti

Câu trả lời:


11

Dấu mũ ( ^) được đánh đồng với ký tự mũi tên hướng lên trên máy in. Vào thời điểm SunOS và cứ thế xuất hiện, phần này đã hơn 10 năm trong quá khứ. Cùng một ký tự (thay thế) đã được sử dụng trong các biểu thức toán học, ví dụ, ^đối với các quyền hạn (trong đó một số người khác có thể sử dụng **). Nó cũng được sử dụng trong Pascal để chỉ con trỏ.

Được sử dụng để chỉ các ký tự điều khiển, ngày này (ít nhất) trước năm 1980. Chẳng hạn, bạn có thể tìm thấy nó được sử dụng trong tài liệu DEC (nó chắc chắn được sử dụng vào giữa những năm 1970 khi tôi sử dụng teco. Hướng dẫn sử dụng tiện ích từ năm 1973 (trang 927) cho thấy một controlCví dụ.

Tìm kiếm một nguồn phù hợp, tôi tìm thấy Mã giao tiếp Teletypewriter của Gil Smith, người nói rằng đủ để đặt nó vào cuối những năm 1960 (chứng minh rằng nguồn gốc cũng là tiền Unix):

ASCII-63 hầu như giống hệt với phiên bản ASCII-67 hiện tại. Các định nghĩa của các ký tự điều khiển (col-1 ở trên) khác nhau giữa hai phiên bản, như được định nghĩa dưới đây. Ngoài ra, trong ASCII-63, 32 vị trí trên (col-4) không được xác định, ngoại trừ ba vị trí: RUB (0x7F), ACK (0x7C) và ESC (0x7E). Có các tham chiếu không nhất quán đối với char ALT-MODE (0x7D) trong ASCII-63. Trong phiên bản năm 1967, RUB trở thành DEL và giữ nguyên vị trí, nhưng ACK và ESC đã di chuyển vào khu vực ký tự điều khiển (col-1). Trong ASCII-67, ^ đã thay thế biểu tượng mũi tên lên và _ thay thế mũi tên trái

ASCII-63 và ASCII-67 là các biến thể phổ biến của ASCII, nhưng dường như cũng có một số phiên bản chuyển tiếp: trong hướng dẫn Teletype Model 33, có các tham chiếu đến phiên bản ASCII năm 1965, có SS thay cho SUB (0x1A), \ for @ (0x40), ~ for \ (0x5C), một ký tự kỳ lạ thay cho | (0x7C) và | cho ~ (0x7E). Thẻ mã Teletype cho máy M33 và M35 cho biết phiên bản ASCII năm 1966, mặc dù các ký tự có thể in được hiển thị trên thẻ giống hệt nhau trong tất cả các phiên bản.

Điều này từng được biết đến, do các vấn đề về việc hoán đổi các tệp giữa các mã hóa khác nhau như ASCII và EBCDIC khi vẫn còn các máy in có khả năng hiển thị mũi tên dài như vậy sau khi ký tự không còn tồn tại trong ASCII.


1
0x5e là một mũi tên hướng lên trước khi ^cũng giải thích lý do tại sao ký tự đó được sử dụng làm toán tử đường ống trong hệ vỏ Unix ban đầu (truyền tải ý tưởng về dữ liệu truyền từ lệnh này sang lệnh khác). Vỏ Bourne vẫn xử lý ^như một toán tử đường ống thay thế (tôi cho rằng khả năng tương thích ngược với vỏ Thomson).
Stéphane Chazelas

có - các kết quả quá hữu ích khi bỏ qua, với ASCII. Điều này cũng nhắc nhở tôi về một số bàn phím trực tiếp hơn, nhưng tôi không tìm thấy hình ảnh nào để minh họa.
Thomas Dickey

1
0x9 (TAB) thường được biểu diễn dưới dạng ^I, 0x89 là M-^I, 0xc9 là M-I, 0xe9 là M-i. Bạn có biết nếu một số nhân vật đã từng được sử dụng để đại diện cho Meta thay cho M-?
Stéphane Chazelas

Không trực tiếp: Tôi đã không chú ý nhiều đến super / meta / hyper vì khi chúng được giới thiệu, chúng chỉ áp dụng cho một vài thiết bị đầu cuối mà hầu hết chưa từng thấy.
Thomas Dickey
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.