쉘 언어는 대화식 사용에 유용합니다. 그러나 이 최적화는 종종 쉘 스크립트를 작성할 때 느껴지는 프로그래밍 언어로 사용하는 것에 대한 절충안과 함께 제공됩니다.
쉘이 더 확장 가능한 프로그래밍 언어도 이해한다면 어떻게 될까요? 파이썬?
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
일 뿐입니다. 알아내기에서 멀리 떨어져 있습니다.