본문 바로가기
리눅스

ed (text editor)

by 다움위키 2023. 12. 19.

ed (고유 문자로 발음됨, /ˌˈd/)는 유닉스유닉스-계열 운영 시스템에 대해 줄 편집기입니다. 그것은 1969년 8월에 개발된 유닉스 운영 시스템의 첫 번째 부분 중 하나입니다. 그것은 더 정교한 전체-화면 편집기 vi와 함께 유닉스-기반 운영 시스템에 대해 POSIXOpen Group 표준의 일부로 남아 있습니다.

History and influence

ed 텍스트 편집기는 1969년 8월 AT&T Bell LabsPDP-7에서 Ken Thompson에 의해 개발된 유닉스 운영 시스템의 첫 세 가지 핵심 요소–어셈블러, 편집기, –중 하나였습니다. ed의 많은 기능은 Thompson의 모교 University of California, Berkeley에서 개발된 qed 텍스트 편집기에서 유래되었습니다. Thompson은 qed에 매우 익숙했고, CTSSMultics 시스템에서 이를 다시 구현했습니다. Thompson의 qed 버전은 정규 표현식을 최초로 구현한 것으로 유명합니다. 정규 표현식도 ed에서 구현되지만 구현은 qed에서보다 훨씬 덜 일반적입니다.


Dennis M. RitchieDoug McIlroy가 나중에 "최종적인" ed로 묘사한 것을 제작했고, ed의 측면은 ex에 영향을 미치고 차례로 vi를 낳습니다. 비대화형 유닉스 명령 grepqed와 이후 ed의 일반적인 특수 사용에서 영감을 얻었으며, 여기서 명령 g/re/p는 정규 표현식 re를 전역적으로 검색하고 포함하는 행을 인쇄하는 것을 의미합니다. 유닉스 스트림 편집기, sed는 유닉스에서 ed에 의해 지원되지 않았던 qed의 많은 스크립팅 기능을 구현했습니다.

Features

ed의 기능은 다음과 같습니다:

  • 필연적으로 모든 유닉스 시스템 (및 단일 유닉스 사양을 준수하는 시스템에서는 필수 필드)에서 사용 가능합니다.
  • 정규 표현식을 표현합니다.
  • 강력한 자동화가 표준 입력에서 명령을 입력함으로써 달성될 수 있습니다.

간결하기로 유명한(악명 높은), ed는 시각적 피드백을 거의 제공하지 않았고, (Peter H. Salus에 의해) 동시대의 (및 악명 높게 복잡한) TECO와 비교될 때조차 "지금까지 만든 것 중 가장 사용자 적대적인 편집자"라고 불렸습니다. 예를 들어, 오류가 발생하거나 사용자가 저장하지 않고 종료하기를 원하는지 확인하려는 경우에 ed가 생성하는 메시지는 "?"입니다. 그것은 요청하지 않는 한 현재 파일이름이나 줄 번호를 보고하지 않거나, 텍스트 변경 결과도 표시하지 않습니다. 이전 버전 (c. 1981)은 사용자가 변경 사항을 저장하지 않고 quit 명령을 실행할 때 확인을 요청하지도 않았습니다. 이 간결함은 콘솔이 텔레타이프이고, 모뎀이 느리고, 메모리가 소중했던 초기 유닉스 버전에 적합했습니다. 컴퓨터 기술이 향상되고 이들 제약이 완화되면서, 더 많은 시각적 피드백을 갖는 편집자가 표준이 되었습니다.

현재 실행에서, ed는 대화식으로 거의 사용되지 않지만, 일부 쉘 스크립트에서는 사용됩니다. 대화형 사용을 위해, ed는 1980년대에 sam, viEmacs 편집기에 포함되었습니다. ed는 사용 가능한 거의 모든 유닉스와 리눅스 버전에서 찾을 수 있고, 이를테면 여러 버전의 유닉스로 작업해야 하는 사람들에게 유용합니다. 유닉스-기반 운영 시스템에서, SQL*Plus와 같은 일부 유틸리티는 EDITOR 및 VISUAL 환경 변수가 정의되지 않으면 편집기로 ed를 실행합니다. 만약 문제가 발생하면, ed가 사용 가능한 유일한 편집기인 경우가 있습니다. 이것은 종종 그것이 대화식으로 사용될 때 유일한 시기입니다.

GNU에서 제공하는 ed 버전은 피드백을 향상시키는 몇 가지 스위치를 가집니다. ed -v -p:를 사용하면 간단한 프롬프트를 제공하고 보다 유용한 피드백 메시지를 활성화합니다. -p 스위치는 XPG2 (1987) 이후 POSIX에 정의되어 있습니다.

ed 명령은 종종 다른 줄-기반 편집기에서 모방됩니다. 예를 들어, 초기 MS-DOS 버전과 32비트 버전의 Windows NT에 있는 EDLIN은 다소 유사한 구문을 가지고 있고, 많은 MUD (예를 들어, LPMud와 후속)의 텍스트 편집기는 ed와 유사한 구문을 사용합니다. 이들 편집기는, 어쨌든, 전형적으로 기능이 더 제한적입니다.

Example

다음은 ed 세션의 예제 트랜스스크립트입니다. 명확성을 위해, 사용자에 의해 입력된 명령과 텍스트는 보통 표면에서 있고, ed에서 출력이 강조됩니다.

a
ed is the standard Unix text editor.
This is line number two.
.
2i
  
.
,l
ed is the standard Unix text editor.$
$
This is line number two.$
3s/two/three/
,l
ed is the standard Unix text editor.$
$
This is line number three.$
w text
65
q

최종 결과는 다음 텍스트를 포함하는 간단한 텍스트 파일입니다:

ed is the standard Unix text editor.
  
This is line number three.

빈 파일로 시작된, a 명령은 텍스트를 덧붙입니다 (모든 ed 명령은 단일 문자입니다). 그 명령은 ed를 insert mode로 설정하고, 행에 단일 점으로 뒤에 오는 문자를 삽입합니다. 점 앞에 입력된 두 줄은 파일 버퍼에서 끝납니다. 2i 명령도 삽입 모드로 들어가고, 두 번째 줄 앞에 입력된 텍스트 (이 경우에서 빈 줄 하나)를 삽입합니다. 모든 명령은 해당 줄에서 작동하기 위해 줄 번호를 접두어로 사용할 수 있습니다.

,l 행에서, 소문자 L은 list 명령을 나타냅니다. 명령 앞에는 범위가 붙습니다, 이 경우에서 , 이것은 1,$의 바로가기입니다. 범위는 쉼표로 구분된 두 줄 번호입니다 ($는 마지막 줄을 의미합니다). 그 대가로, ed는 처음부터 끝까지 모든 행을 나열합니다. 이들 줄은 달러 기호로 끝나므로, 줄 끝에서 공백이 명확하게 보입니다.

2번째 줄에 빈 줄이 삽입되면, "This is the line number 2"라는 읽히는 줄이 이제 실제로 세 번째 줄입니다. 이 오류는 대체 명령, 3s/two/three/로 수정됩니다. 3은 올바른 줄에 적용할 것입니다; 다음 명령은 교체할 텍스트가 있고, 그 다음에는 교체가 있습니다. ,l을 갖는 모든 행을 나열하면 이제 그 행이 올바른 것으로 표시됩니다.

w text는 버퍼를 "text" 파일에 기록하여 ed가 파일에 기록된 문자의 개수 65로 응답하도록 합니다. q는 ed 세션을 끝날 것입니다.

Cultural references

GNU 프로젝트는 웹사이트에서 호스팅되는 ed에 대한 수많은 농담이 있습니다. 게다가, ED라는 오류 코드glibc에 정의되어 있습니다: 설명 (errorstr)을 인쇄하도록 요청할 때, 라이브러리는 단일 물음표를 반환합니다. 문서는 단순히 "the experienced user will know what is wrong."입니다.

External links