IT

더 나은 리눅스 셸?

itgroup 2023. 8. 26. 10:43
반응형

더 나은 리눅스 셸?

저는 bash를 사용하고 있으며, 10년 이상 그렇게 해왔습니다. 하지만 가끔 저는 Linux 쉘의 세계에서 중요한 새로운 발전이 있었는지 궁금합니다.

몇 년 전에 마이크로소프트는 PowerShell을 출시했는데, 이것은 매우 흥미로워 보였습니다.리눅스 셸에서 비슷한 혁신이 진행되고 있습니까?

당신은 알고 있나요?bash 4새로운 기능과 언어 추가 기능이 많이 포함된 아주 최근에 출시되었습니까?

  • 옵션 셸globstar(**/foo 검색을 합니다.dirspell경로 이름 확장 중 오타를 수정합니다.
  • 연관 배열: 숫자를 문자열로 매핑하는 대신 문자열을 문자열로 매핑합니다.
  • autocd 경로를 입력하는 를 변경할 수 있습니다.cd
  • 코프로세스
  • &>>그리고.|&둘다연디산자리디션렉는하를 모두 리디렉션 stdout그리고.stderr
  • 스크립팅 편의성 향상을 위해 기존 기본 제공 기능에 많은 추가 기능이 추가되었습니다.

체크아웃:

  • "공식" 변경 로그: http://tiswww.case.edu/php/chet/bash/CHANGES
  • 가지 새로운 기능에 대한 간단한 가이드: http://bash-hackers.org/wiki/doku.php/bash4

저는 zsh나 fishshell을 볼 것입니다.

Bash(및 기타 몇 가지 셸)의 가장 덜 알려진 기능 중 하나는 로드 가능한 파일을 직접 작성하고 셸에서 내장된 파일로 실행할 수 있는 기능입니다.

로드 가능한 'on'...을 쓰고 다음과 같이 작동한다고 가정해 보겠습니다.

on node 123 run some command
on class nodes run some command
on all nodes run some command

등등..

로드 가능한 파일을 쓰는 방법에 대한 간단한 예를 따라 enable -f /path/to/loadable_name을 통해 내장된 파일로 사용할 수 있습니다.

따라서 이 경우 -f /opt/bash/loadables/on을 활성화합니다.

당신의 bashrc에서, 그리고 당신은 그것을 가지고 있습니다.

따라서, 만약 당신이 당신의 화려한 새로운 언어를 bash가 네이티브로 해석하기를 원한다면, 당신은 'use'나 'switch_to'라는 이름의 로드 가능한 글을 쓴 다음, 특정 환경 변수가 설정된 경우 다른 문법/런타임을 로드하도록 파서를 수정할 것입니다.

예:

#/bin/bash

switch_to my-way-cool-language

funkyfunc Zippy(int p) [[
   jive.wassup(p) ]]

하지만 대부분의 사람들은 그들의 껍데기를 해킹하고 싶어하지 않을 입니다.저는 Bash를 코어 코드를 너무 많이 사용하지 않고 원하는 방식으로 만들 수 있는 시설이 존재한다는 것을 지적하고 싶었습니다.

자세한 내용은 /path-to-bash-source/example/loadables를 참조하십시오. 아직 Bash를 사용하고 있기 때문에 작업 장소를 이동할 수 있습니다.

리눅스에서 Pash를 통해 PowerShell을 실행할 수 있습니다.PowerShell에서 사용하는 방법으로 Mono를 사용합니다.그물.

"원래 개선된 셸"은 ksh93이라고 생각합니다. bash는 ksh 소스 코드가 독점적이었던 시기에 존재했습니다. 만약 ksh가 오픈 소스였다면 새로운 셸을 가질 필요가 없다고 여겨졌을 수도 있습니다.ksh는 특히 C 모듈을 통해 확장할 수 있다는 점에서 연구할 가치가 있지만, bash에 대한 확실한 승리는 아닙니다. bash의 자동 완성도는 분명히 우수하며, 이는 bash가 전체적으로 승리하기에 충분할 수 있습니다.어떤 경우에도 bash와 ksh는 수렴하기 위해 상당한 노력을 기울였기 때문에 차이는 미미합니다.

또 다른 흥미로운 껍질은 zsh인데, 이것은 csh를 포함하면서 ksh의 모든 것이 되려고 시도합니다.나는 어떤 포인트나 사용법도 csh를 본 적이 없기 때문에, 나는 zsh를 옹호하기에 적합한 사람이 아닙니다.한 가지 비정상적인 비호환성을 지적하겠습니다. 기본적으로 zsha 변수입니다.$var 공백이 포함된 경우에도 항상 단일 토큰으로 확장됩니다.이 동작은 다른 모든 sh에서 파생된 셸과 호환되지 않으며 때때로 불편하지만, 실제로는 원본보다 훨씬 더 의미가 있고 인용문을 많이 절약합니다.

csh는 작업 제어를 가진 최초의 셸이었지만, 제 마음속에서 그것(그리고 그 후계자들)은 bash와 ksh로 대체되었습니다.대본을 쓰는 것은 결코 재미있지 않았습니다.

마지막으로, 구조용 플로피(!)와 다른 스파르타 환경을 위해 고안된 많은 작은 조개껍질이 있지만, 당신은 그것들에 거의 관심이 없는 것처럼 들립니다.

(혁신에 관해서는, 제가 셸 스크립트로 작성했던 스크립트의 절반 이상이 현재 Lua 스크립트라는 것을 추가해야 합니다.다른 사람들은 Python이나 Ruby, 또는 과거에는 Perl이나 Tcl에 대해서도 같은 말을 할 수 있습니다.따라서 진정한 혁신은 명령 줄에서 프로그래밍 가능한 상호 작용을 위해 셸에서 벗어나 마이그레이션하는 것이라고 생각합니다.)

IIRC, Powershell은 객체 지향이지만 대부분의 유닉스 셸과 유틸리티는 텍스트에서 작동합니다.그런 점에서, Squirrel Shell은 당신의 관심을 끌지도 모릅니다.하지만 사용해 본 적은 없습니다.

당신이 질 의향이 있다면,sh호환성은 Python이나 Tcl과 같은 스크립트 언어를 셸로 사용하는 것을 볼 수 있습니다. 인터프리터가 행 편집, 명령 기록, 완료 등을 제공하지 않는 경우 매우 유용합니다.

셸과 관련된 한 가지 철학은 주로 프로세스를 파일과 연결하는 데만 사용해야 한다는 것입니다(여기서는 이러한 접근 방식을 지지하는 한 페이지).즉, 사람들은 그것들을 사용하여 눈에 띄게 복잡한 소프트웨어를 만들었습니다.

셸은 스킴 셸보다 훨씬 더 혁신적이지 않습니다.Scheme의 모든 힘은 Unix 명령을 실행하는 기능과 내장된 Awk 인터프리터(물론 Scheme에 기록됨)와 결합되었습니다.유일한 단점은 64비트 리눅스를 기반으로 구축하려면 약간의 패치가 필요하다는 것입니다.

정확히 본 셸은 아니지만, 다릅니다.물론, 여러분은 스킴 - 보너스를 배워야 합니다!

루비를 좋아하신다면 러시(irb가 아닌, irb가 아닌, irb가 아닌, irb-grid shell)를 사용하셔도 됩니다.

여기서 프레젠테이션 보기

http://www.slideshare.net/adamwiggins/rush-the-ruby-shell-and-unix-integration-library

또는 공식 웹 사이트에서 더 많은 예를 볼 수 있습니다.

http://rush.heroku.com/

언급URL : https://stackoverflow.com/questions/933445/a-better-linux-shell

반응형