많은 명령줄 도구( grep
, flex
등) 는 ^
기호를 사용하여 "줄의 시작"을 나타내고 $
기호를 사용하여 "줄의 끝"을 나타냅니다. 이 합의는 언제 이루어졌나요? 이 목적을 위해 두 개의 문자를 예약하는 것이 합리적으로 보이지만 최신 키보드에서는 $
기호가 왼쪽에 있다는 것이 약간 이상합니다.^
이것은 완전히 자의적인 결정입니까? 이것은 오래된 키보드 레이아웃에서 나온 것입니까? 일부 오래된 도구가 이런 방식으로 작업을 수행하기로 결정했기 때문에 이 규칙이 사용됩니까?
대답이 무엇이든, 이를 문서화한 주요 소스가 있습니까?
답변1
QED 편집자, 1965년에 작성됨버클리 시간 공유 시스템, $
사용파일의 마지막 줄 주소 지정, ed
오늘처럼. 바라보다ex
vi
vim
매뉴얼 페이지 2-1. 그러나 원래 QED 편집기에서는 정규식을 허용하지 않았습니다.
Ken Thompson은 나중에("1960년대 후반") 정규식을 구현한 최초의 편집기인 Multics용 QED 버전을 작성했습니다. 편집자는 ed
1969년 Ken의 Unix 개발에 큰 영향을 미쳤습니다(나중에 1971년경 Dennis Richie에 의해 "완성"됨). 불만으로 인해 ed
Bill Joy는 1977년에 PDP-11의 첫 번째 BSD 릴리스를 구현 ex
하고 그 일부가 되었습니다.vi
^
and 표현식 $
과 POSIX 정규식 구문이 된 많은 부분과 오늘날의 의미가 Ken의 QED 버전에서 구현되었습니다. 바라보다매뉴얼 4페이지.
이러한 특정 기호의 선택이 어디서 왔는지는 확실하지 않지만 $
마지막 줄을 지정하는 데 사용되는 방식으로 판단하면 이미 "최종" 의미가 있습니다.
일부 터미널에서는 ^
이 문자를 생성할 수 없습니다. 이를 통해 \'
Ken의 QED 편집기를 대신 사용할 수 있습니다 ^
(참조:벨 연구소 핸드북).
답변2
이 사본의 ed(I)
날짜는 71년 11월 3일입니다.는 Unix의 첫 번째 버전에서 ed
QED를 기반으로 함을 확인하고 당시의 현재 의미를 ^
나타 냅니다.$
^
정규식 시작 부분의 곡절 부호 문자( )는 줄 시작 부분의 null 문자와 일치합니다.- 정규식 끝에 있는 통화 기호( )는
$
줄 끝에 있는 null 문자와 일치합니다.
이 메모그리고위키피디아 페이지 grep
grep
1970년대 초반에 만들어졌으며 동일한 정규식 구문을 사용함을 나타냅니다 ed
.
정규식의 개념은 컴퓨터 유틸리티에서 정규식을 사용하기보다 거의 20년 정도 앞선 것입니다.
Wikipedia "정규 표현식" 페이지
그리고 이 스택 오버플로 질문
미국 수학자 스티븐 콜 클리네(Stephen Cole Kleene)는 정규식을 창안하거나 적어도 정규식을 설명하고 용어를 만든 공로를 인정받았습니다. 그의 논문은 많은 역사적 문서에 언급되어 있습니다.
신경망 및 유한 오토마타의 이벤트 표현(PDF). 1951년 12월 15일자로 작성된 101페이지 분량의 문서는 읽기 어렵고 (내가 아는 한)아니요^
및 구문을 언급하세요 $
. 그러나 이는 *
논문 49페이지(PDF 파일 52페이지)에서 "0개 이상의 이전 항목"을 의미합니다. 이것은 (다소) "로 널리 알려져 있습니다.클린트".