Rozdział 3 · Twój pierwszy program w Python

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 logo
Oficjalne logo projektu PySH (pysh-shell.com) – używane do identyfikacji technologia omawiana na tym kursie, bez oświadczenia o partnerstwie czy sponsoringu.

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.com oficjalna strona internetowa
pysh-shell.com — oficjalna strona projektu PySH („The Python-Native Automation Platform”). Wersja na stronie (0.8.2) odpowiada wersji zainstalowanej na tym komputerze.
Tylko ten projekt
Na świecie istnieje kilka pakietów o podobnej nazwie „pysh” 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ń

TerminaloknoBash / ZshJęzyk poleceń shell-a.Scenariuszpipes, postacie specjalne
Tradycyjne podejście: terminal → shell-język → shell-skrypt
pathlibwyjątkiloggingpytestPyPIPySH
Python-first podejście PySH: zwykłych Python-tools bezpośrednio w wierszu 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.

Nie mylić z pełną wymianą Bash
PySH sam szczerze wskazuje w oficjalnej dokumentacji: nie pełna POSIX-kompatybilna zamiana /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 środku

Launch PySH – prawdziwe zakończenie

Na tym komputerze PySH już zainstalowane. Sprawdźmy to tymi samymi komendami, co ty Sprawdziłbym każdy inny program:

Terminal
command -v pysh
pysh --version
Rzeczywiste wyjście
/usr/bin/pysh
pysh 0.8.2

Przejdźmy PySH i zobaczmy prawdziwy baner oraz zaproszenie:

Terminal - Prawdziwa Sesja PySH
🐍 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
└─❯ 
O zrzutach ekranu na tej stronie
Ta strona pokazuje rzeczywiste, dosłownie skopiowane wyjście faktycznie zainstalowanego PySH – wyjście terminala jest odtwarzane jako tekst, a nie jako zdjęcie ekranowe, ponieważ środowisko, w którym kurs został złożony, technicznie nie jest w stanie robić zrzutów ekranu graficznych okien. Każde polecenie na tej stronie zostało wykonane rzeczywiście.

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:

Prawdziwa sesja
└─❯ 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:

Prawdziwa sesja
└─❯ 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 pyx z pierwszego polecenia jest dostępny w drugim. Dla dłuższego kodu jest też blok wieloliniowy:

Prawdziwa sesja
└─❯ 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:

Prawdziwa sesja
└─❯ #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”

Zadanie: Policz pliki w aktualnym folderze
Bash
count=$(ls | wc -l)
echo Plików: $count
PySH (py-blok)
py {
    import os
    count = len(os.listdir('.'))
    print(f'Pliki: {count}')
}
Co używać dzisiaj: Dla krótkiego, jednorazowego polecenia Bash nadal szybciej się wpisuje. Ale gdy automatyzacja zostaje przepełniona warunkami, obsługą błędów i testami, czytelny Python zaczyna wygrywać. PySH daje się w ten sposób, nie zmuszając do przełączania się na osobny plik . py-plik.

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.

Nieobowiązkowo · lokalnie na twoim komputerze
Lista kontrolna: pierwsze wprowadzenie PySH
Oficjalne źródła
pysh-shell.com — strona internetowa projektu; pypi.org/project/pysh-shell — strona pakietu (pip install pysh-shell); pełna dokumentacja znajduje się w repozytorium projektu, link jest wymieniony na stronie PyPI-.