Ksh 기능이 Zsh에 병합되어 있나요?

Ksh 기능이 Zsh에 병합되어 있나요?

나는 한동안 Bash를 사용해 왔습니다. 이제 적어도 하나 이상의 다른 쉘을 배우고 싶어서 Korn Shell을 배우고 있습니다. 그러나 Ksh는 거의 20년 동안 주요 업데이트가 없었던 것으로 보이며 Zsh가 Ksh의 기능을 병합했다는 내용을 읽었습니다. StackExchange 네트워크에서 많은 쉘 비교 질문을 읽었지만 답변을 찾지 못했습니다.Zsh에 포함되지 않은 Korn Shell 기능이 있습니까?그렇다면 그것들은 무엇입니까?

답변1

이것은명령 셸 비교에 관한 Wikipedia 기사.

이에 따르면 ksh에는 있지만 zsh에는 없는 유일한 기능은 다음과 같습니다.명명된 매개변수사용자 정의 "유형"의 경우. 특히 모호한 기능의 경우 이 문서가 전체 목록이 아니기 때문에 다른 기능도 있을 수 있습니다.

반대로 보면 귀하의 질문에 대한 답변이 책 한 권을 채울 수도 있습니다(아마도이것).

Zsh에는 ksh에 없는 많은 기능이 있습니다. 인기있는 것들은 다음과 같습니다.명령 스택,디렉토리 스택,역사 공유그리고힌트.

  • 명령 스택명령을 입력하고 다른 명령을 먼저 실행해야 한다는 것을 깨닫는 경우입니다. 현재 행을 명령 스택으로 보내고, 다른 명령을 실행하고, 스택에서 해당 명령을 팝하면 됩니다. 이 작업은 여러 번 수행할 수 있습니다. (zsh는 이 기능을 제공하는 유일한 쉘입니다.)
  • 디렉토리 스택(일명 pushd/ popd)는 디렉토리를 계속해서 변경한 다음 역순으로 다시 CD로 되돌리려는 경우에 사용됩니다. (Bash를 포함하여 많은 쉘이 이 기능을 제공합니다).
  • 역사 공유열려 있는 각 쉘에는 공유 기록이 있습니다. 한 창에서 명령을 실행하고 다른 창으로 전환하면 해당 명령을 기록에서 사용할 수 있습니다.
  • 힌트당신의 팁과 똑같습니다. 단, 그것이 정확합니다. 많은 사람들이 넣기 를 cwd좋아 합니다 .daterprompt

다음은 Stack Exchange 사이트의 zsh에 대한 몇 가지 토론입니다.

답변2

SVR4에 포함된 가장 유명한 변형인 ksh88은 bash주로 부분적으로 복제된 pdksh를 기반으로 합니다. pdksh의 하위 집합은 POSIX 사양의 기초이지만 sh많이 개발되지 않았습니다(일부 버그 수정 및 POSIX 정렬 제외). ) 이후 일부 공급업체에서는 1993년 5월 마지막 릴리스(ksh88i) 이후 이 버전을 사용해 왔습니다.

그러나 David Korn이 재작성한 ksh93은 1993년 12월에 처음 출시되었으며 2014년경까지 활발하게 개발되지 않았으며 소스 코드는 다음과 같습니다.출시된2000. 마지막 공식 버전인 ksh93u+는 2012년 8월에 출시되었으며(이 질문을 한 지 몇 주 만에) 원 작성자는 AT&T 중복 이후 2014년에 많은 새로운 기능을 포함하는 "베타" 버전(ksh93v-)을 출시했습니다.

커뮤니티에서는 ksh93v를 기반으로 개발하고 코드를 현대화하는 작업을 진행해 왔으며 그 결과 ksh2020이 탄생했습니다.이 노력은 이제 포기되었습니다. ㅏksh93u+를 유지하기 위해 혼자 작업그러다가 또 같은 길을 걷는 것 같았다. 비록신규(ksh93u+m)현재로서는 조금 더 유망해 보입니다.

ksh93은 단순한 쉘 그 이상입니다. 이는 동일한 코드 중 일부를 재사용하고 비지박스와 유사한 ksh93에 내장될 수 있는 유틸리티 세트로 개발되었습니다.

이것은 더 많은 것입니다.연구이러한 노력은 일반적으로 실험적인 것으로 간주되며 문서화가 잘 되어 있지 않습니다.

ksh93은 처음 에는 zsh강력한 대화형 셸로 개발되었지만 ksh93의 초점은 프로그래밍 언어에 더 가깝습니다. 유사한 perl카테고리가 되는 것을 목표로 언어와 최적화에 많은 노력을 기울였습니다 python.

ksh93에는 zsh에 없는 많은 기능이 있습니다. 마치 zsh에 ksh93에 없는 많은 기능이 있고 둘 다 서로 기능을 빌린 것과 같습니다. 그들은 많은 공통점을 갖고 있으며 둘 다 어떤 일을 할 수 있지만 방식은 매우 다릅니다.

ksh93에는 있지만 zsh에는 포함되지 않은 기능:

  • ast-open의 모든 내장 기능: ast-open의 일부로 구축되면 , , , , , ... ksh93와 같은 일부 표준 유틸리티의 향상된 버전을 포함하여 zsh에 없는 많은 내장 기능이 있습니다 . (zsh에는 내장 기능이나 언어 기능에 다른 기능이 있지만). 이것은datejoinheadtruniqwc최적화사물의 측면. perl어떤 작업을 수행하기 위해 프로세스를 분기해야 하는 경우에는 이렇게 할 수 없습니다.
  • 비분할 명령 대체( $(...)) 및 서브쉘 환경을 생성하지 않는 명령 대체 ${ ...; }.
  • 다차원 배열:a=((a b) (c d))
  • 객체 지향 프로그래밍의 특성(유형, 구조, 분야, 방법...)
  • 변수 및 옵션의 정적 범위( 변수에는 정적 범위 zsh가 있지만 옵션은 없음).private
  • 이름 참조(정적 범위 지정 및 개체 프로그래밍 구성이 있는 셸에 필요하며 zsh 또는 bash와 같은 동적 범위 지정이 있는 셸에는 그다지 중요하지 않음)
  • 자연어, crontab, 내장 iso 형식(비교할 때 매우 제한적)을 포함한 날짜 printf/ date시간 zsh작업 strftime.
  • 몇 가지 유용한 리디렉션 연산자( <#((...))찾기, <>;덮어쓰기 및 자르기 등).
  • 네임스페이스
  • 작업 풀과 coshell.
  • CSV/URI/HTML 엔터티/base64 인코딩/디코딩.
  • ksh93v의 json 인코딩/디코딩 - 다른 도구가 이해할 수 있는 형식으로 상위 수준 데이터 구조를 (역)직렬화합니다(버그가 많음, ksh2020에서 제거됨).
  • $"..."메시지 현지화를 위해
  • /dev/tcp, /dev/udp(UNIX 도메인 소켓의 경우 UDP zsh는 있지만 ztcpUDP는 없습니다.)zsocket
  • dtksh1990년대에는 CDE에 포함된 ksh93에 X 툴킷 기능을 추가하는 쉘도 있었습니다.
  • 하나가 shcomp도착했습니다엮다KSH 코드.

관련 정보