Tại sao đại tràng được chọn làm đường phân cách


22

Tại sao dấu hai chấm ( :) được chọn làm dấu phân cách đường dẫn?

Lưu ý rằng tôi có nghĩa là "phân cách đường dẫn" chứ không phải "phân cách thư mục". Dấu phân cách đường dẫn là ký hiệu được đặt giữa các mục trong PATHbiến môi trường.

PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..."
                     ^ this symbol

Mọi thứ trong máy tính và phần mềm đã từng là một quyết định có chủ ý của ai đó ở đâu đó. Ví dụ tại sao dấu ngã đại diện cho thư mục nhà (và tại sao hjkl cho các phím điều hướng trong vi) . Tôi muốn biết nền tảng cho quyết định này.


Một số sự thật ngẫu nhiên:

Có dấu hai chấm làm dấu phân cách đường dẫn có nghĩa là thư mục có dấu hai chấm trong tên có thể được thêm vào đường dẫn.

từ POSIX:

<colon>là dấu phân cách trong ngữ cảnh này, các tên thư mục có thể được sử dụng trong PATH không được bao gồm <colon>ký tự.

http://pub.opengroup.org/onlinepub/9699919799/basingefs/V1_chap08.html

Dường như không thể thoát khỏi ruột kết. @ Random832 từ Stack Overflow đã kiểm tra mã nguồn xử lý PATH và không tìm thấy cơ chế thoát.

/programming/14661373/how-to-escape-colon-in-path-on-unix


Đó cũng là dấu phân cách cho /etc/passwd(cũng chứa các đường dẫn trong cột nhà và cột vỏ).
Stéphane Chazelas


11
Tôi đã dành khoảng nửa giờ ngày hôm qua để nghiên cứu câu hỏi này. Tôi đã đọc Hướng dẫn lập trình Unix năm 1971 trong đó chỉ định sử dụng dấu hai chấm nhưng không phải là lý do tại sao dấu hai chấm được chọn trên (ví dụ) biểu tượng đường ống. Tôi cũng đã đọc nhiều nhất có thể về Multics nhưng rõ ràng, nó chỉ có một thư mục trong PATH của nó (vì vậy không cần phân tách). Tôi nghi ngờ chúng ta sẽ có câu trả lời tốt ở đây nhưng nếu có cơ hội một số người dùng Unix kỳ cựu có thể trả lời câu hỏi này, tôi muốn họ có cơ hội, vì vậy tôi sẽ bỏ phiếu để mở lại.
Anthony G - công lý cho Monica

3
Có thể không có biến shell / môi trường được gọi PATH trước khi giới thiệu Phiên bản Unix 7 (năm 1979) , nhưng có một :đường dẫn tìm kiếm được phân định giới hạn vào đầu năm 1977.  PWB / Unix (Lập trình viên bàn làm việc) đã sử dụng trình bao Mashey , được viết bởi John R. Mashey , rơi theo trình tự thời gian giữa vỏ Thompson và vỏ Bourne. Tiết (Cont'd)
G-Man nói 'Phục hồi Monica'

3
(Tiếp tục)  Vỏ Mashey hỗ trợ 26 biến shell (đoán tên của chúng là gì) - và biến plà đường dẫn tìm kiếm (được gọi là chuỗi tìm kiếm thư mục Shell cho lệnh thực thi lệnh), với các thư mục được phân tách bằng dấu hai chấm. Mạnh mẽ và hoàn toàn khác nhau .profile, tất cả đều như nhau, trong khi vỏ Mashey xử lý tệp, nó cũng cho phép bạn chỉ định $pgiá trị ban đầu trong tệp được gọi .path.
G-Man nói 'Phục hồi Monica'

Câu trả lời:


3

Sau khi đào bới, tôi không có câu trả lời thực sự nhưng ít nhất là những thông tin mới để thêm vào cuộc trò chuyện này được hỗ trợ bởi một số sự kiện lịch sử.

Đây là Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI trong một bài phát biểu của anh ấy nói về cái vỏ, vào khoảng 19:00 bạn có thể nghe anh ấy đề cập đến lý do tại sao lại elà bí danh cho trình soạn thảo mặc định trong các vỏ unix, đó là bởi vì các thiết bị đầu cuối cũ, nơi không thoải mái hoặc dễ sử dụng và gõ vào chúng là một trải nghiệm khó chịu.

Ông đang đề cập đến một mô hình chính xác, https://en.wikipedia.org/wiki/Teletype_Model_33 trong trường hợp này.

Sau một số nghiên cứu ( http://www.pdp8.net/asr33/asr33.shtml ) Tôi thấy rằng máy này chỉ cho phép bạn chọn trong nhóm 64 ký tự, thậm chí không hỗ trợ ASCII đầy đủ của Hoa Kỳ, 2 cho sức mạnh của 6 ký tự , đó là sự kết hợp 6 bit.

Thực tế, cỗ máy này không liên quan gì đến ASCII cả, có nghĩa là nó thậm chí không hỗ trợ chỉ 64 ký tự đầu tiên của ASCII, nó chỉ dành cho một bộ đầu vào hoàn toàn không liên quan và có lẽ không phải là tiêu chuẩn (cho thời đại hiện đại của chúng ta) .

Teletype ASR 33 có thể in 64 ký tự chỉ được phép cho các LỚP, số và ký hiệu LỚN.

từ http://www.pdp8.net/asr33/asr33.shtml

và điều này chỉ chứng minh rằng đó không phải là ASCII của Hoa Kỳ, thực tế là để hỗ trợ các chữ cái viết hoa bạn thực sự cần nhiều hơn 6 bit, các chữ cái viết hoa nằm ngoài dấu 64 ký tự (hoặc giá trị 63 trong số thập phân nếu bạn muốn theo bảng)

    0 NUL    16 DLE    32      48 0    64 @    80 P    96 `   112 p 
    1 SOH    17 DC1    33 !    49 1    65 A    81 Q    97 a   113 q 
    2 STX    18 DC2    34 "    50 2    66 B    82 R    98 b   114 r 
    3 ETX    19 DC3    35 #    51 3    67 C    83 S    99 c   115 s 
    4 EOT    20 DC4    36 $    52 4    68 D    84 T   100 d   116 t 
    5 ENQ    21 NAK    37 %    53 5    69 E    85 U   101 e   117 u 
    6 ACK    22 SYN    38 &    54 6    70 F    86 V   102 f   118 v 
    7 BEL    23 ETB    39 '    55 7    71 G    87 W   103 g   119 w 
    8 BS     24 CAN    40 (    56 8    72 H    88 X   104 h   120 x 
    9 HT     25 EM     41 )    57 9    73 I    89 Y   105 i   121 y 
   10 LF     26 SUB    42 *    58 :    74 J    90 Z   106 j   122 z 
   11 VT     27 ESC    43 +    59 ;    75 K    91 [   107 k   123 { 
   12 FF     28 FS     44 ,    60 <    76 L    92 \   108 l   124 | 
   13 CR     29 GS     45 -    61 =    77 M    93 ]   109 m   125 } 
   14 SO     30 RS     46 .    62 >    78 N    94 ^   110 n   126 ~ 
   15 SI     31 US     47 /    63 ?    79 O    95 _   111 o   127 DEL 

Bây giờ chúng tôi biết rằng chúng tôi nhận được 64 ký tự từ điều này, không có bất kỳ tiêu chuẩn thực sự nào để hỗ trợ chúng trong bảng mã hóa và chúng tôi cũng không có chữ cái viết thường, chỉ viết hoa và ký hiệu và chữ số.

Nhờ trang web này http://keyboards.jargon-file.org/#ASR33 Tôi có thể chỉ cho bạn cách bố trí đầu vào của bàn phím như vậy

nhập mô tả hình ảnh ở đây

và bằng cách nhấn SHIFT, bạn cũng nhận được

nhập mô tả hình ảnh ở đây

Ngoài ra còn có thêm một chút thông tin về cách các kết nối vật lý tạo ra các ký tự được mã hóa http://jargon-file.org/jargon-html/html/B/bit- Paired-keyboard.html (trang cũng làm rõ rằng ASR33 và ký tự ASCII khác nhau đến mức bit).

Tôi nghĩ rằng thật thú vị khi lưu ý rằng không có {hoặc }chỉ có ()điều đó có nghĩa là có thể tạo các lớp con là ổn nhưng việc tạo các quy trình mới có thể không dễ dàng hoặc được thiết bị đầu cuối cho phép.

Cuối cùng tôi không nghĩ rằng có một câu trả lời khoa học thực sự , đó có lẽ là một nhân vật "miễn phí" đang chờ đợi một ý nghĩa đặc biệt; một điều là shure tho: shell và terminal cũ hơn ASCII và nghĩ về ASCII hoặc bất kỳ bảng mã nào như chúng ta biết ngày nay có lẽ sẽ không giải quyết được sai lầm.


nhiều hơn về :dấu hiệu và shell stackoverflow.com/questions/3224878/ từ
user31223
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.