PySH: Python-first skorupa
Kolejne spojrzenie na linię poleceń — co by było, gdybyśmy zamiast mini-języka poleceń użyli prawdziwego Python?
PySH jest prawdziwym programem zainstalowanym na tym komputerze, a wszystkie przykłady na nim Page jest prawdziwym, zweryfikowanym wnioskiem tego konkretnego settingu, a nie wymyślonym tekstem.
pysh-shell, zespół — pysh), a nie inne narzędzia o tej samej nazwie.Co to jest PySH
PySH jest interaktywną powłoką (shell to Rozdział 3.3) napisaną w czystej formie Python i pozycjonowanie się jako Python-first alternatywa tradycyjnie shell wydaje się Bash. Oficjalny opis ze strony: "The Python-Native Automation Platform for Developers, System Administrators, and DevOps Engineers».
Dwa podejścia do linii poleceń
Tradycyjny shell doskonale nadaje się do krótkich interaktywnych zadań — ale im bardziej skomplikowany staje się skrypt, tym bardziej odczuwalny jest brak prawdziwego języka programowania: wyjątków strukturalnych, testów, czytelnych modułów. PySH proponuje inny kierunek: pisać automatyzację od razu w Python, nie przełączając się między dwoma różnymi językami.
/bin/shnie jest klonem Zsh i nie gwarantuje zgodności z żadnym istniejącym skryptem Bash-. To samodzielny scenariusz z własnym, Python--orientowanym podejściem – a nie udawaniem, że prawdziwe Bash. jest ukryte w środkuLaunch PySH – prawdziwe zakończenie
Na tym komputerze PySH już zainstalowane. Sprawdźmy to tymi samymi komendami, co ty Sprawdziłbym każdy inny program:
command -v pysh
pysh --version
/usr/bin/pysh
pysh 0.8.2
Przejdźmy PySH i zobaczmy prawdziwy baner oraz zaproszenie:
🐍 PySH 0.8.2 | Python 3.13.5 | GPL-2.0-only
System: Debian GNU/Linux 13 | Kernel 6.12.101 | 11th Gen Intel Core i3-1115G4 | RAM 19 GiB
Type 'exit' or press Ctrl+D to quit.
┌─🐍 astra@soi ─ [~/Projects/Python_001] ─ git:feat/curriculum-v2-chapter-03
│ py3.13 · uv0.11.24 · ruff0.15.20 · rust1.85.0 · node26.3.1 · npm11.16.0
└─❯
Prompt PySH jest dwulinijowy i informacyjny: nazwa użytkownika, host, aktualny folder, gałęzi git, a druga łańcuch znaków z wersjami narzędzi projektowych (Python, uv, ruff i innych, jeśli zostaną znalezione). To ten sam duch co „zaawansowane”
PySH rozumie powszechne komendy
Pomimo Python-first filozofii, znane komendy również działają — PySH wie, jak uruchomić programy zewnętrzne, potoki i podstawowe operatory, jak zwykłe shell:
└─❯ pwd
/home/astra/Projects/Python_001
└─❯ ls scripts | head -3
build_book.py
build_chapter_01.py
build_chapter_02.py
Python bezpośrednio w wierszu poleceń
I to właśnie odróżnia PySH od zwykłej shell: drużyny py
wykonuje prawdziwy Python na miejscu, w stałym (utrzymującym się między połączeniami)
Kontekst:
└─❯ py print("hello from python")
hello from python
└─❯ py x = 10
└─❯ py print(x)
10
Zmienne i importy są zachowywane między poszczególnymi wywołaniami py
— x z pierwszego polecenia jest dostępny w drugim. Dla dłuższego kodu jest też blok wieloliniowy:
└─❯ py {
import os
targets = [p for p in os.environ.get("PATH", "").split(":") if p]
print(f"PATH entries: {len(targets)}")
}
PATH entries: 43
Istnieje również trzeci, bardziej „ciężki” tryb — pełnoprawny zagnieżdżony Python REPL ze swoim
>>> zaproszeniem, które włącza się komendą
#py bezpośrednio z zwykłego zaproszenia PySH:
└─❯ #py
PySH Python Command Execution Layer | GPL-2.0-only
Python 3.13.5
Type #help for commands, Ctrl+D or #exit to return to PySH.
>>> 2 + 2
4
>>> print("Привет, PySH!")
Привет, PySH!
>>> #exit
Bash-script i PySH-approach: jeden przykład
Mała ilustracja różnicy w stylu — nie po to, by ogłosić jeden sposób „złym”
count=$(ls | wc -l)
echo Plików: $count
py {
import os
count = len(os.listdir('.'))
print(f'Pliki: {count}')
}
Laboratorium Lokalne: Spróbuj PySH (opcjonalnie)
To jest opcjonalny ćwiczenie dla twojego własnego komputera. Nie da się go zweryfikować Automatycznie i nie jest warunkiem koniecznym do Python kursu – PySH jest tego warte wiedzieć, a korzystać z niego dalej czy nie — decyzja należy do ciebie.
pip install pysh-shell); pełna dokumentacja znajduje się w repozytorium projektu, link jest wymieniony na stronie PyPI-.