Zsh 대 Bash zsh와 bash의 간단한 차이점

Shell은 사용자와 운영 체제 서비스 간의 인터페이스입니다. 백그라운드 처리, 입력 및 출력 리디렉션, 앨리어싱, 링크 및 체인 명령 등과 같은 여러 기능을 제공하여 개발자의 삶을 쉽게 만듭니다. 나는 꽤 오랫동안 zsh를 사용하기 시작했으며 bash보다 더 효과적이라는 것을 알았습니다. 그래서 여기에서 이해하는 데 많은 도움이 된 두 가지 차이점 목록을 정리했습니다.

따라서 이 두 쉘을 특정 기준으로 비교하고 차이점을 찾아봅시다.

성능



쉘의 성능을 벤치마킹하는 유용한 수단 중 하나입니다. 이를 평가하기 위해 약간의 로드를 생성하고 셸이 얼마나 빨리 응답하는지 확인합니다.
  • 다음을 실행하여 한 번 호출된 두 셸의 속도를 비교했습니다.
    다음 명령:
  • time shell_name -c 'for i in $(seq 1 1000000);do [ 1 = 1 ];done'
    위 명령에서 shell_name을 zsh 및 bash로 바꿉니다.


  • 사용자의 입력을 읽고 for 루프를 여러 번 인쇄하는 스크립트를 작성했습니다. 이것은 스크립트를 처리하는 데 걸리는 시간을 확인하는 데 도움이 됩니다.

  • #!/bin/bash
    # Script name: test.sh
    for i in `seq 1 100`
    do
        for var in $* 
        do
            echo "command line contains: $var"
        done
    done
    


    두 셸에서 다음 명령을 실행하여 각 셸에서 스크립트 실행 시간을 확인합니다.
    time shell_name ./test.sh "some_long_sentance"
    위 명령에서 shell_name을 zsh/bash 및 일부 긴 문장으로 바꿉니다.


    왼쪽 및 오른쪽 출력은 각각 zsh 및 bash용입니다.
    위 스니펫의 결과는 zsh가 bash보다 빠르다는 것을 보여줍니다. 결과의 용어는 다음을 의미합니다.

  • real은 통화 시작부터 끝까지의 시간입니다.

  • user는 프로세스 내에서 사용자 모드에서 소비된 CPU 시간의 양입니다.

  • sys는 프로세스 내의 커널에서 소요된 CPU 시간의 양입니다.

  • 구성 파일



    Bash는 비로그인 대화형 쉘에서 .bashrc 파일을 읽고 로그인 쉘에서 .bash_profile을 읽습니다.

    Zsh는 대화형 쉘에서 .zshrc를 읽고 로그인 쉘에서 .zprofile을 읽습니다.

    대화형 셸은 사용자의 입력을 유도하고 원하는 출력을 반환하는 간단한 셸입니다.
    로그인 셸은 세션에 로그인할 때 사용자 ID로 실행되는 첫 번째 프로세스입니다.

    키 바인딩



    줄 끝으로 이동하기 위해 Ctrl+E를 누르는 것과 같이 명령줄에 명령을 입력하는 동안 수행되는 모든 키보드 작업을 키 바인딩이라고 합니다. 완전히 다른 구문을 사용합니다.

    Bash는 .inputrc and bind builtIn을 사용하여 키를 readline 명령에 바인딩합니다.

    Zsh는 bindkey builtIn을 사용하여 키를 zle widgets에 바인딩합니다.

    즉각적인



    Bash는\a와 같은 백슬래시 이스케이프를 포함하는 PS1에서 프롬프트를 설정하는 반면 zsh는 %d와 같은 퍼센트 이스케이프를 포함합니다. bash PROMT_COMMAND의 기능은 precmd를 통해 zsh에서 사용할 수 있습니다.
    Zsh는 멋진 사용자 정의를 수행하는 방법도 제공합니다.

    완성



    두 셸 모두 명령 완성 및 팬시 모드로의 전환과 같은 기능을 제공합니다. bash에서는 bash_completion을 포함하여 수행되는 반면 zsh는 compinit를 실행하여 이를 달성합니다.
    zsh에 대한 추가 정보Completion System .

    스크립팅 차이점


  • 변수 처리는 zsh와 bash 모두에서 동일합니다. 하자
    변수 $var가 있다고 가정하면 두 셸 모두 다음 값을 갖습니다.
    var는 공백 문자에서 분할하고 각 공백에 대해-
    와일드카드 문자를 포함하고 일치하는 경우 분리된 부분
    기존 파일은 패턴을 일치 목록으로 바꿉니다. 그냥 얻으려면
    우리가 필요로 하는 var의 값 $var
  • bash에서 배열의 길이는 0에서 length-1까지이지만 그 범위는
    zsh의 길이는 1입니다.
  • Bash에는 shopt -s
    extglob
    로 활성화할 수 있는 추가 와일드카드 패턴이 있습니다. zsh에서 setopt ksh_glob를 사용하여 동일한 작업을 수행할 수 있습니다.
    또는 setopt extended_glob 기본 구문을 입력하기가 더 간단합니다.

  • bash가 제공하지 않는 Glob Qualifierswidcard patterns과 같은 멋진 zsh 기능이 있습니다. 웹에는 많은 zsh 구성 프레임워크가 있습니다. 몇 가지 강력한 기능을 시작하는 편리한 방법이 될 수 있습니다.

    좋은 웹페이지 즐겨찾기