"한 번에 한 가지만합니까?"
이 의견은 일반적인 설계 원칙에 대한 질문처럼 들립니다. 종종, 이것에 관한 질문은 매우 주관적이며, 우리는 정답을 쓸 수 없습니다. 이 경우 질문을 닫을 수 있음에 유의하십시오.
때로는 개발자가 디자인에 대해 글을 썼기 때문에 원래 디자인 선택에 대한 설명이 있습니다. 그러나 나는이 질문에 대한 좋은 대답이 없습니다.
cp
이런 식으로 설계된 이유 는 무엇 입니까?
문제는 유닉스가 40 세 이상이라는 것입니다.
지금 새 시스템을 작성중인 경우 다른 설계를 선택할 수 있습니다. 그러나 다른 답변에서 언급했듯이 Unix를 변경하면 기존 스크립트가 중단됩니다.
기존 파일을 자동으로 덮어 쓰도록 설계된 이유 는 무엇 cp
입니까?
짧은 대답은 "모르겠습니다"입니다 :-).
그것은 cp
단지 하나의 문제 라는 것을 이해하십시오 . 원래 명령 프로그램 중 어느 것도 파일 덮어 쓰기 또는 삭제를 방지하지 못했다고 생각합니다. 출력을 재 지정할 때 쉘에도 비슷한 문제점이 있습니다.
$ cat first.html > second.html
이 명령은 또한 자동으로 덮어 씁니다 second.html
.
이 모든 프로그램을 어떻게 다시 디자인 할 수 있을지 생각하고 싶습니다. 약간의 추가 복잡성이 필요할 수 있습니다.
나는 이것이 설명의 일부라고 생각한다. 초기 유닉스는 간단한 구현을 강조했다 . 이에 대한 자세한 설명은이 답변의 끝 부분에 링크 된 "더 나은 것이 좋습니다"를 참조하십시오.
이미 존재하는 > second.html
경우 오류와 함께 중지되도록 변경할 수 second.html
있습니다. 그러나 앞에서 언급했듯이 때때로 사용자 는 기존 파일을 교체하려고합니다. 예를 들어, 그녀는 복잡한 명령을 작성하여 원하는 것을 할 때까지 여러 번 시도 할 수 있습니다.
rm second.html
필요한 경우 사용자가 먼저 실행할 수 있습니다 . 이것은 좋은 타협 일 수 있습니다! 자체 단점이 있습니다.
- 사용자는 파일 이름을 두 번 입력해야합니다.
- 사람들은 또한를 사용하여 많은 문제를 겪습니다
rm
. 그래서 나는 rm
더 안전하게 만들고 싶습니다 . 그러나 어떻게? rm
각 파일 이름 을 표시하고 사용자에게 확인을 요청하면 이제 그녀 는 한 줄 대신 세 줄의 명령 을 작성해야 합니다. 또한, 너무 자주해야한다면, 습관을 들이고 "y"를 입력하여 생각없이 확인합니다. 따라서 매우 성 가실 수 있으며 여전히 위험 할 수 있습니다.
최신 시스템에서는 명령을 설치하고trash
rm
가능한 경우 대신 사용하는 것이 좋습니다 . 휴지통 스토리지의 도입은 예 를 들어 단일 사용자 그래픽 PC에 대한 좋은 아이디어였습니다 .
또한 원래의 Unix 하드웨어의 한계, 즉 RAM 및 디스크 공간 제한, 느린 프린터에 표시되는 출력 , 시스템 및 개발 소프트웨어 의 한계를 이해하는 것이 중요하다고 생각합니다 .
명령 에 대한 파일 이름을 빠르게 입력하기 위해 원래 Unix에는 탭 완성 기능 이 없었습니다 rm
. 또한 원래 Bourne 셸에는 명령 기록이 없습니다 (예 :에서 위 화살표 키를 사용하는 경우 bash
).
프린터 출력에서는 라인 기반 편집기를 사용 ed
합니다. 시각적 텍스트 편집기보다 배우기가 어렵습니다. 현재 행을 인쇄하고 변경 방법을 결정한 후 편집 명령을 입력해야합니다.
사용 > second.html
은 라인 편집기에서 명령을 사용하는 것과 조금 비슷합니다. 그 효과는 현재 상태에 따라 다릅니다. ( second.html
이미 존재하는 경우 내용이 삭제됩니다). 사용자가 현재 상태를 잘 모를 ls
경우 ls second.html
먼저 실행해야합니다 .
설계 원칙으로서의 "간단한 구현"
유닉스 디자인에 대한 대중적인 해석이 시작됩니다.
구현과 인터페이스 모두에서 디자인이 단순해야합니다. 인터페이스보다 구현이 간단해야합니다. 단순성은 디자인에서 가장 중요한 고려 사항입니다.
...
가브리엘은 MIT 접근 방식보다 "Worse is better"가 더 성공적인 소프트웨어를 생산했다고 주장했다. 예를 들어 소프트웨어를 새로운 시스템으로 포팅하는 것이 훨씬 쉬워집니다. 따라서 [더 나은] 프로그램을 개발하고 배포 할 수있는 기회가 있기 훨씬 전에 그 사용이 빠르게 확산 될 것입니다 (1 차 우위).
https://ko.wikipedia.org/wiki/Worse_is_better