Terminal to okno, w którym wpisujesz polecenia do powłoki (shell), a program obsługiwany w ten sposób nazywamy CLI (interfejsem wiersza poleceń). Polecenie składa się z nazwy programu, flag (np.-v,--help) i argumentów, czyli tego, na czym program ma pracować, a po pomoc sięgasz przez--help. Najczęstsze błędy na początku to „command not found” i „not recognized” (program nie jest w PATH), „permission denied” (brak uprawnień do uruchomienia pliku) oraz ścieżki ze spacjami, które trzeba ująć w cudzysłów.
Terminal wygląda groźnie, bo pokazuje tylko migający kursor i nie podpowiada, co zrobić. A potem trzeba w nim zrobić npm install, git commit albo uruchomić agenta AI. Większość problemów początkujących nie wynika z braku wiedzy o programowaniu, tylko z tego, że nikt nie wyjaśnił, jak czytać polecenie i komunikat błędu. Ten artykuł to robi: pokazuje anatomię polecenia, podstawowe komendy w Windows i na macOS oraz najczęstsze błędy z ich przyczynami.
Czym jest terminal, powłoka i CLI?
Trzy pojęcia, które na co dzień się mieszają:
| Pojęcie | Co to jest | Przykłady |
|---|---|---|
| Terminal | Okno, w którym wpisujesz tekst i widzisz wynik | Terminal (macOS), Windows Terminal, terminal w VS Code |
| Powłoka (shell) | Program wewnątrz terminala, który rozumie twoje polecenia | zsh (domyślna na macOS), bash, PowerShell, CMD |
| CLI (command-line interface) | Program, który obsługujesz poleceniami zamiast klikaniem | git, npm, pip, python, narzędzia AI w terminalu |
Różnica ma znaczenie, bo to samo polecenie może działać inaczej w innej powłoce. Na Windowsie masz zwykle do wyboru PowerShell i CMD (starszy wiersz poleceń), a na macOS zsh. Polecenia w tutorialach są najczęściej pisane pod bash lub zsh, więc na Windowsie część z nich trzeba przetłumaczyć. Jak otworzyć terminal w edytorze, opisuję w artykule o skrótach w VS Code.
Jak zbudowane jest polecenie z flagami i argumentami?
Większość poleceń ma ten sam układ: program, flagi i argumenty.
git commit -m "Dodaj formularz logowania"
gitto program,committo podpolecenie (program decyduje, co ono robi),-mto flaga, która zmienia sposób działania,"Dodaj formularz logowania"to wartość flagi (tu: treść komunikatu commita).
Argumentem nazywamy to, na czym program ma pracować, np. ścieżkę do pliku albo nazwę pakietu. W poleceniu npm install express argumentem jest express.
Czym różni się flaga krótka od długiej?
| Zapis | Wygląd | Przykład |
|---|---|---|
| Krótka | jeden myślnik, jedna litera | -v, -m, -p |
| Długa | dwa myślniki, całe słowo | --version, --message, --help |
Wiele flag ma obie formy (-m i --message to to samo). Krótkie można zwykle łączyć (-la znaczy -l -a), ale długich już nie. Dwa myślniki sam w sobie (--) w wielu programach oznaczają „dalej nie ma już flag, tylko argumenty”.
Czy kolejność flag i argumentów ma znaczenie?
Zależy od programu, ale ogólna zasada jest taka: nazwa programu i podpolecenie idą na początku, flagi obok polecenia, do którego należą. Jeśli program zgłasza błąd typu „unknown option” albo „unexpected argument”, sprawdź w --help, czy flaga nie wymaga wartości i czy stoi w dobrym miejscu. Jedna spacja za dużo albo za mało też zmienia znaczenie, np. w Bashu ZMIENNA = 5 (ze spacjami) jest traktowane jak próba uruchomienia programu o nazwie ZMIENNA.
Jak czytać pomoc: --help i man?
Zanim zaczniesz zgadywać, zapytaj program. Prawie każde CLI odpowie na jedną z form:
npm --help
git commit --help
python --version
Na macOS i Linuksie jest też man ls (instrukcja programu, wyjście klawiszem q). W PowerShellu odpowiednikiem jest Get-Help. Przy nowym narzędziu zacznij zawsze od --help i --version: pierwsze pokaże, co umie, a drugie, czy w ogóle jest zainstalowane.
Jak poruszać się po katalogach w terminalu?
Najpierw ustal, gdzie jesteś, bo polecenia działają na bieżącym katalogu.
| Co chcesz zrobić | macOS / Linux / PowerShell | CMD |
|---|---|---|
| Pokaż bieżący katalog | pwd | cd |
| Wypisz zawartość | ls | dir |
| Wejdź do katalogu | cd nazwa | cd nazwa |
| Wyjdź poziom wyżej | cd .. | cd .. |
| Utwórz katalog | mkdir nazwa | mkdir nazwa |
| Pokaż zawartość pliku | cat plik.txt | type plik.txt |
W PowerShellu ls, pwd i cat działają jako aliasy innych poleceń, więc w typowych sytuacjach zachowują się tak samo jak w bashu.
Jak podać ścieżkę ze spacją w nazwie?
Ujmij ją w cudzysłów: cd "Moje dokumenty". Bez cudzysłowu terminal potraktuje spację jako koniec argumentu i zobaczy dwa osobne słowa. W zsh i bashu możesz też „zeskapować” spację ukośnikiem: cd Moje\ dokumenty. Dobra wiadomość: klawisz Tab uzupełnia nazwy plików i katalogów sam, razem z odpowiednim zabezpieczeniem spacji, więc rzadko trzeba pisać ścieżki w całości.
Dlaczego pojawia się „command not found” albo „not recognized”?
Komunikaty zależą od powłoki, ale znaczą to samo: terminal nie znalazł programu o takiej nazwie.
- macOS / Linux:
zsh: command not found: python - Windows (CMD lub PowerShell):
'python' is not recognized as an internal or external command(CMD) alboThe term 'python' is not recognized…(PowerShell)
Terminal szuka programów w katalogach wymienionych w zmiennej środowiskowej PATH. Jeśli program nie jest zainstalowany albo jego katalog nie jest w PATH, dostajesz ten błąd. Najczęstsze przyczyny i kroki:
- Program nie jest zainstalowany. Sprawdź
python --version(lubpython3 --version). - Instalacja nie dodała programu do PATH. Na Windowsie instalator Pythona ma pole „Add python.exe to PATH”: zaznacz je i zainstaluj ponownie.
- Otwarte okno terminala jest stare. PATH wczytuje się przy starcie, więc po instalacji zamknij terminal i otwórz nowy.
- Używasz innej nazwy. Na macOS i Linuksie Python 3 to zwykle
python3, a na Windowsie działa też launcherpy.
Gdzie system widzi program? W macOS i Linuksie sprawdzisz to przez which python3, a w Windowsie przez where.exe python (z .exe, bo samo where w PowerShellu oznacza inne polecenie).
Co znaczy „permission denied”?
Ten błąd oznacza, że system nie pozwala wykonać operacji. Najczęściej w dwóch sytuacjach:
Uruchamiasz skrypt, który nie ma uprawnienia do wykonania. Zobaczysz np. zsh: permission denied: ./start.sh. Nadajesz mu je poleceniem:
chmod +x start.sh
./start.sh
Alternatywnie uruchom go przez interpreter: bash start.sh.
npm install -g kończy się błędem EACCES. Pokusa to dopisać sudo, ale instalowanie pakietów z uprawnieniami administratora sprawia, że mogą powstać pliki, których potem nie zmienisz zwykłym kontem. Lepsza droga to menedżer wersji Node (np. nvm) albo ustawienie katalogu globalnych pakietów w swoim koncie.
Dlaczego PowerShell pisze, że uruchamianie skryptów jest wyłączone?
Na Windowsie możesz zobaczyć komunikat „running scripts is disabled on this system”. To polityka wykonywania (execution policy) w PowerShellu, która domyślnie blokuje uruchamianie skryptów .ps1. Wpływa to np. na narzędzia instalowane przez npm, które w PowerShellu uruchamiają się jako skrypty.
Najczęściej stosowana zmiana dotyczy tylko twojego konta:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
Zanim ją zastosujesz, zrozum, co robi: pozwala uruchamiać lokalne skrypty, a skrypty pobrane z internetu muszą być podpisane. Jeśli komputer jest służbowy, polityka może być ustawiona centralnie i wtedy nie zmieniaj jej samodzielnie, tylko zapytaj administratora. Zamiast tego możesz też użyć CMD albo terminala w WSL (opisuję go niżej).
Co to jest WSL i czy potrzebuję go na Windowsie?
WSL (Windows Subsystem for Linux) to funkcja Windowsa, która uruchamia prawdziwy Linux obok systemu, bez maszyny wirtualnej do ręcznej konfiguracji. Dostajesz terminal z bashem, w którym działają polecenia z większości tutoriali (ls, chmod, which, man), a nie ich odpowiedniki z PowerShella.
Instalacja to zwykle jedno polecenie wpisane w PowerShellu uruchomionym jako administrator, po którym restartujesz komputer:
wsl --install
Domyślnie instaluje się Ubuntu. Kiedy to ma sens?
- Gdy podążasz za poradnikami pisanymi pod macOS lub Linuksa i nie chcesz tłumaczyć każdego polecenia na PowerShell.
- Gdy projekt (np. w Pythonie, Dockerze albo Node) w zespole uruchamia się na Linuksie, a ty chcesz mieć to samo środowisko lokalnie.
- Gdy PowerShell blokuje skrypty (execution policy) i szukasz prostszej drogi.
Nie musisz go jednak mieć, żeby zacząć. Do podstaw (Git, npm, pip, Python) w zupełności wystarczy PowerShell, a WSL możesz dodać później. Pamiętaj tylko, że pliki w WSL mają własny system plików, więc ścieżki wyglądają jak w Linuksie (/home/twoja-nazwa/projekt), a nie jak C:\Users\....
Jak zatrzymać polecenie i cofnąć się do poprzedniego?
Kilka skrótów, które oszczędzają najwięcej nerwów:
| Skrót | Co robi |
|---|---|
Ctrl + C | Przerywa działające polecenie (np. serwer, który „wisi”) |
| Strzałka w górę | Przywołuje poprzednie polecenie z historii |
Tab | Uzupełnia nazwę pliku, katalogu lub polecenia |
clear (cls w CMD) | Czyści ekran |
Co zrobić, gdy w terminalu coś nie działa?
Dwa nawyki, które oszczędzają najwięcej czasu, gdy zobaczysz błąd.
1. Czytaj komunikat od początku i kopiuj go dosłownie. Pierwsza linia błędu zwykle mówi wprost, co się stało: nazwę brakującego programu, ścieżkę albo kod błędu. Gdy szukasz pomocy w wyszukiwarce, u mentora albo w czacie AI, wklej dokładny tekst błędu razem z poleceniem, które go wywołało, i napisz, na jakim systemie pracujesz (Windows czy macOS). Opis „terminal nie działa” nie daje nikomu punktu zaczepienia.
2. Zanim napiszesz „nie działa”, odpowiedz na trzy pytania.
- Gdzie jestem? Sprawdź
pwd(w CMDcd). Polecenie uruchomione w złym katalogu to jedna z najczęstszych przyczyn błędów. - Czy program jest zainstalowany? Wpisz
nazwa --version. - Czy to nowe okno terminala po instalacji? PATH wczytuje się przy starcie, więc po instalacji otwórz terminal na nowo.
Te trzy odpowiedzi załatwiają większość problemów, a jeśli nie, od razu dają komuś, kto ci pomaga, komplet informacji.
Czy mogę wklejać do terminala polecenia z internetu albo od AI?
Możesz, ale przeczytaj je przed uruchomieniem. Terminal nie pyta „czy na pewno?”: polecenie typu rm -rf usuwa pliki bez kosza, a wzorzec curl ... | bash pobiera i od razu wykonuje cudzy skrypt. Zasada jest prosta: jeśli nie wiesz, co robi każdy fragment (program, flagi, ścieżka), zapytaj o to najpierw, np. czat AI albo --help. To samo dotyczy poleceń, które proponuje agent AI w terminalu: narzędzia AI dla programistów zwykle proszą o zgodę przed uruchomieniem, i warto z niej korzystać świadomie.
Jeśli masz do czynienia z Gitem, polecenia z flagami zobaczysz w praktyce w artykule o klonowaniu, forkach i pull requestach.
Podsumowanie: co zapamiętać o terminalu?
- Polecenie = program + flagi + argumenty; po pomoc idź do
--help. - Zawsze wiedz, w którym katalogu jesteś (
pwd, a w CMDcd). - „Command not found” / „not recognized” prawie zawsze oznacza brak programu w PATH: zainstaluj ponownie lub otwórz nowy terminal.
- „Permission denied” to brak uprawnień:
chmod +xdla skryptów, bezsudoprzy pakietach npm. - Ścieżki ze spacjami ujmuj w cudzysłów, a nazwy uzupełniaj klawiszem Tab.
- Nie uruchamiaj poleceń, których nie rozumiesz.


