Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

내가 Xonsh를 사랑하는 이유

쉘 언어는 대화식 사용에 유용합니다. 그러나 이 최적화는 종종 쉘 스크립트를 작성할 때 느껴지는 프로그래밍 언어로 사용하는 것에 대한 절충안과 함께 제공됩니다.

쉘이 더 확장 가능한 프로그래밍 언어도 이해한다면 어떻게 될까요? 파이썬?

Xonsh를 입력하십시오.

Xonsh 설치는 pip install xonsh[ptk,linux]를 실행하여 가상 환경을 만드는 것만큼 간단합니다. , 다음 실행 xonsh .

처음에는 Python 셸에 이상한 프롬프트가 표시되는 이유가 궁금할 것입니다.

$ 1+1
2

멋진 계산기입니다!

$ print("hello world")
hello world

다른 함수를 호출할 수도 있습니다.

$ from antigravity import geohash
$ geohash(37.421542, -122.085589, b'2005-05-26-10458.68')
37.857713 -122.544543

그러나 여전히 일반 쉘처럼 사용할 수 있습니다.

$ echo "hello world"
hello world

믹스 앤 매치도 가능합니다!

$ for i in range(3):
.     echo "hello world"
.
hello world
hello world
hello world

Xonsh는 Prompt Toolkit을 사용하여 쉘 명령과 Python 표현식 모두에 대한 완성을 지원합니다. 완료는 가능한 완료를 표시하고 대역 내 드롭다운 목록이 있는 시각적 정보를 제공합니다.

또한 환경 액세스를 지원합니다. Python 유형을 환경 변수에 적용하기 위해 간단하지만 강력한 휴리스틱을 사용합니다. 기본값은 "문자열"이지만 예를 들어 경로 변수는 자동으로 목록이 됩니다.

$ '/usr/bin' in $PATH
True

Xonsh는 쉘 스타일 또는 Python 스타일 부울 단축키 연산자를 허용합니다.

$ cat things
foo
$ grep -q foo things and echo "found"
found
$ grep -q bar things && echo "found"
$ grep -q foo things or echo "found"
$ grep -q bar things || echo "found"
found

이것은 파이썬 키워드가 해석된다는 것을 의미합니다. 유명한 Dr. Seuss 책의 제목을 인쇄하려면 키워드를 인용해야 합니다.

$ echo green eggs "and" ham
green eggs and ham

그렇지 않으면 깜짝 놀라게 됩니다.

$ echo green eggs and ham
green eggs
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
xonsh: subprocess mode: command not found: ham
Did you mean one of the following?
    as:   Command (/usr/bin/as)
    ht:   Command (/usr/bin/ht)
    mag:  Command (/usr/bin/mag)
    ar:   Command (/usr/bin/ar)
    nm:   Command (/usr/bin/nm)

가상 환경은 약간 까다로울 수 있습니다. Bash와 같은 구문에서 수행하는 것과 같이 일반 가상 환경은 작동할 수 없습니다. 그러나 Xonsh에는 vox라는 자체 가상 환경 관리 시스템이 함께 제공됩니다. .

vox ~/.virtualenvs에서 환경을 생성, 활성화 및 비활성화할 수 있습니다.; virtualenvwrapper를 사용한 경우 , 이것이 환경이 있었던 곳입니다.

현재 활성화된 환경은 x에 영향을 미치지 않습니다. onsh . 활성화된 환경에서는 아무것도 가져올 수 없습니다.

$ xontrib load vox
$ vox create my-environment                                                    
...
$ vox activate my-environment        
Activated "my-environment".                                                    
$ pip install money                                                            
...
$ python                                                              
...
>>> import money                                                              
>>> money.Money('3.14')                        
$ import money
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
ModuleNotFoundError: No module named 'money'

첫 번째 줄은 vox를 활성화합니다. :xontrib입니다. , Xonsh용 타사 확장입니다. xontrib 관리자는 가능한 모든 xontribs를 나열할 수 있습니다. 및 현재 상태(설치됨, 로드됨 또는 둘 다).

xontrib를 작성할 수 있습니다. PyPi에 업로드하기만 하면 됩니다. 사용할 수 있도록 합니다. 그러나 xontrib에 추가하는 것이 좋습니다. Xonsh가 이에 대해 미리 알 수 있도록 색인을 생성합니다. 예를 들어 구성 마법사가 이를 제안할 수 있습니다.

"Python이 내 쉘이 될 수 있습니까?" 그렇다면 당신은 pip install xonsh일 뿐입니다. 알아내기에서 멀리 떨어져 있습니다.