Skip to content

Commit 013a944

Browse files
author
Michal Skowron
committed
Dodaj artykuł o linii komend
1 parent 07a5316 commit 013a944

2 files changed

Lines changed: 356 additions & 0 deletions

File tree

blog/linia-komend/index.md

Lines changed: 356 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,356 @@
1+
---
2+
title:
3+
'„Ciemność, widzę ciemność, ciemność widzę” - czyli jak poskromić linię komend'
4+
authors: mojk
5+
date: '2026-02-04'
6+
tags:
7+
- 'dobre-praktyki'
8+
- 'narzędzia'
9+
- 'warsztat'
10+
coverImage: 'linia-komend.png'
11+
---
12+
13+
[Bash (Bourne Again Shell)](https://pl.wikipedia.org/wiki/Bash) to złoty
14+
standard w świecie rozwoju oprogramowania. Ta powłoka systemowa, a upraszczając
15+
na potrzeby zrozumienia tematu, ta linia komend pozwala nam na wykonanie
16+
rozmaitych operacji na naszym komputerze.
17+
18+
<!-- truncate -->
19+
20+
Za pomocą poleceń tekstowych możemy uruchomić przydatne narzędzia, dzięki którym
21+
będziemy mogli np. skopiować lub usunąć pliki. Czyli właściwie to co robimy w
22+
interfejsie graficznym naszego systemu operacyjnego, tyle, że trudniej :) W
23+
takim razie, po co sobie zaprzątać głowę tym czarnym okienkiem?
24+
25+
## Po co mi ta wiedza?
26+
27+
Podczas gdy świat technologii pędzi do przodu dostarczając nam każdego dnia tonę
28+
nowych rozwiązań i apek, które mają nam ułatwiać życie, ja wciąż uparcie
29+
twierdzę, że warto znać podstawy. Podobnie jak w życiu codziennym - mamy
30+
kalkulator i Wikipedię, ale jednak dobrze jest umieć podstawy matematyki i mieć
31+
ogólną wiedzę o świecie.
32+
33+
Pomimo tego, że większość rzeczy możemy już zrobić w interfejsach graficznych,
34+
linia komend wciąż nie odeszła do lamusa. Są sytuacje, w których przychodzi nam
35+
z pomocą. Poza tym, nowe rozwiązania, które cały czas się pojawiają na rynku
36+
oprogramowania, wciąż często oferują możliwość używania ich za pomocą linii
37+
komend.
38+
39+
Bash powstał pod koniec lat 80. i doczekał się już swoich następców, np.
40+
[Zsh](https://pl.wikipedia.org/wiki/Zsh). Pomimo tego, jest on wciąż
41+
wszechobecny w świecie software developmentu i dlatego warto się z nim
42+
zaprzyjaźnić. Jako tech writer, da Ci to kolejną super moc podczas pracy z
43+
programistami. Wyobraź sobie zaskoczenie deva z Twojego zespołu kiedy powiesz:
44+
45+
> Nie ma problemu, odpalę Basha i sprawdzę na serwerze, które pliki są dostępne
46+
> dla użytkownika i co w nich jest.
47+
48+
## Jak uruchomić
49+
50+
W systemach macOS i Linux, Bash jest dostępny od razu. Jeśli używasz Maca,
51+
wystarczy, że otworzysz aplikację **Terminal** i wpiszesz komendę `bash`.
52+
53+
Niestety, na Windowsie Bash nie jest dostępny jako część systemu operacyjnego.
54+
Na szczęście można to całkiem łatwo zmienić, np. instalując
55+
[Gita](https://git-scm.com/install/windows), który zawiera w sobie paczkę **git
56+
bash**.
57+
58+
## Jak używać
59+
60+
Tak jak wspomniałem na początku, Bash oferuje nam możliwość uruchomienia
61+
kwadryliona narzędzi. Ale od czegoś trzeba zacząć, dlatego skupię się na
62+
absolutnych podstawach.
63+
64+
### Pokaż o czym myślisz
65+
66+
Żeby wyświetlić na ekranie jakiś tekst albo wartość jakiegoś elementu, użyj
67+
komendy `echo`. Jak w każdym szanującym się poradniku, zacznij od przywitania
68+
się ze światem:
69+
70+
```bash
71+
docdeveloper@machine:~$ echo "Hello World!"
72+
Hello World!
73+
```
74+
75+
### Powtórz
76+
77+
Nikt z nas nie lubi się powtarzać. Ale czasem trzeba i jest to przydatne. W
78+
Bashu jeśli chcesz powtórzyć ostatnio użytą komendę, naciskasz
79+
`strzałkę do góry`. Prosta rzecz, a oszczędza sporo czasu.
80+
81+
```bash
82+
docdeveloper@machine:~$ echo "Hello World!"
83+
Hello World!
84+
docdeveloper@machine:~$ echo "Hello World!"
85+
Hello World!
86+
```
87+
88+
### Działaj szybciej
89+
90+
Wpisywanie komend tekstowych może być uciążliwe, szczególnie jeśli zawierają one
91+
długie ciągi znaków, np. ścieżkę do pliku. Na szczęście ktoś wymyślił
92+
autouzupełnianie.
93+
94+
Żeby zobaczyć podpowiedzi, podczas wpisywania komendy, naciśnij `Tab`. Jeśli
95+
istnieje tylko jedna możliwość uzupełnienia komendy, Twój wpisywany ciąg znaków
96+
od razu się wypełni. Jeśli jest ich więcej, to po pierwszym naciśnięciu nic się
97+
nie stanie. Wtedy naciśnij `Tab` drugi raz, a pod komendą, którą wpisujesz
98+
dostaniesz listę dostępnych opcji. To pomoże Ci zdecydować co dalej wpisać.
99+
100+
Na każdym etapie wpisywania komendy warto użyć podpowiedzi, czasami kilka razy,
101+
bo np. dopiero w połowie komenda staje się jednoznaczna i `Tab` doklei nam
102+
brakującą część.
103+
104+
### Ustal swoją lokalizację
105+
106+
Żeby sprawdzić, w którym obecnie folderze jesteś, użyj polecenia `pwd`.
107+
108+
```bash
109+
docdeveloper@machine:~/Documents$ pwd
110+
/Users/docdeveloper/Documents
111+
```
112+
113+
### Zmień lokalizację
114+
115+
Jeśli z jakiegoś powodu nie odpowiada Ci Twoje obecne położenie, możesz to łatwo
116+
zmienić za pomocą polecenia `cd`.
117+
118+
Żeby przejść do jakiegoś folderu, wpisz `cd nazwa_folderu` (pamiętaj o
119+
ułatwieniu sobie życia tabem). Na poziom wyżej możesz wskoczyć używając `..`. Na
120+
przykład, jeśli jesteś w folderze `/Users/docdeveloper/Documents/Notes` a chcesz
121+
przeskoczyć do `/Users`, wpisz `cd ../..`.
122+
123+
```bash
124+
docdeveloper@machine:~/Documents/Notes$ pwd
125+
/Users/docdeveloper/Documents/Notes
126+
docdeveloper@machine:~/Documents/Notes$ cd ../..
127+
docdeveloper@machine:~$ pwd
128+
/Users/docdeveloper
129+
```
130+
131+
### Pokaż mi co tam masz
132+
133+
Żeby sprawdzić zawartość folderu, w którym się znajdujesz, użyj komendy `ls`.
134+
Jeśli chcesz zobaczyć też ukryte pliki, dodaj parametr `-a`. Jeśli chcesz więcej
135+
szczegółów na temat poszczególnych elementów, np. uprawnienia i właściciel,
136+
dorzuć `-l`.
137+
138+
Czyli, żeby zobaczyć szczegółową listę zawartości folderu, użyj komendy
139+
`ls -la`. Jeśli chcesz sprawdzić zawartość innego folderu niż tego, w którym
140+
obecnie jesteś, po prostu dodaj ścieżkę do polecenia. Np.
141+
`ls -la /Users/docdeveloper/tmp`.
142+
143+
```bash
144+
docdeveloper@machine:~/tmp$ ls -la
145+
total 16
146+
drwxr-xr-x 4 docdeveloper staff 128 Feb 2 12:00 .
147+
drwxr-xr-x 6 docdeveloper staff 192 Feb 2 11:00 ..
148+
-rw-r--r-- 1 docdeveloper staff 50 Feb 2 12:01 .gitignore
149+
-rw-r--r-- 1 docdeveloper staff 1024 Feb 2 12:05 notatki.txt
150+
```
151+
152+
### Zajrzyj w głąb
153+
154+
Sprawdzanie zawartości folderu to jedna rzecz. Ale jak sprawdzić szybko
155+
zawartość pliku? Trzeba poprosić kota o pomoc ;)
156+
157+
A tak serio, to trzeba użyć komendy `cat sciezka_do_pliku`. Tylko pamiętaj, że
158+
taki podgląd działa tylko dla plików typu tekstowego, np. `txt` albo `md`.
159+
Niestety zdjęć nie będziesz w stanie przeglądać.
160+
161+
```bash
162+
docdeveloper@machine:~$ cat notatki.txt
163+
To jest przykładowa zawartość pliku.
164+
Bash jest bardzo przydatny!
165+
```
166+
167+
> Pro tip: Jeśli dorzucisz do komendy opcję `-n`, to zobaczysz zawartość pliku z
168+
> ponumerowanymi linijkami
169+
170+
### Stwórz coś
171+
172+
Tworzenie folderów nie wymaga dużego wysiłku. Wystarczy użyć
173+
`mkdir nazwa_folderu` i gotowe.
174+
175+
Jeśli chcesz stworzyć folder w innej ścieżce niż obecna, to warto dodać opcję
176+
`-p`. To spowoduje stworzenie wszystkich brakujących folderów w ścieżce. Na
177+
przykład, chcesz dodać folder `/Users/docdeveloper/kurs_basha/notatki`. Zarówno
178+
folder `kurs_basha` i `notatki` nie istnieją, więc odpalasz komendę
179+
`mkdir -p /Users/docdeveloper/tmp/kurs_basha/notatki`. Zrobione! Pominięcie
180+
opcji `-p` spowoduje błąd, że folder `kurs_basha` nie istnieje.
181+
182+
```bash
183+
docdeveloper@machine:~$ mkdir -p /Users/docdeveloper/tmp/kurs_basha/notatki
184+
docdeveloper@machine:~$
185+
```
186+
187+
Jeśli chodzi o pliki, to można by rzec, że tworzy się je jak za dotknięciem
188+
magicznej różdżki ;) Wystarczy odpalić `touch sciezka_do_pliku`, żeby dodać
189+
pusty plik.
190+
191+
```bash
192+
docdeveloper@machine:~/kurs_basha$ touch nowy_plik.md
193+
```
194+
195+
Nowy plik możesz też stworzyć za pomocą komendy `echo`. Ta metoda pozwala Ci
196+
stworzyć nie tylko pusty plik, ale też plik z jakimś tekstem. Pusty plik
197+
tworzysz komendą `echo > sciezka_do_pliku`, a plik z zawartością
198+
`echo "tekst" > sciezka_do_pliku`.
199+
200+
```bash
201+
docdeveloper@machine:~$ echo "Lista zadań" > todo.txt
202+
```
203+
204+
### Ogarnij się
205+
206+
Porządek musi być. Czasem trzeba coś usunąć, skopiować albo przenieść. Tutaj
207+
przyjdą nam z pomocą komendy:
208+
209+
- `cp` - kopiowanie
210+
- `mv` - przenoszenie
211+
- `rm` - usuwanie
212+
213+
Kopiowanie pliku albo całego folderu to prosta sprawa -
214+
`cp sciezka_zrodlowa sciezka_docelowa`.
215+
216+
Jednak kopiowanie samej zawartości folderu, wymaga już użycia opcji
217+
rekursywności i "dzikiej karty" - `cp -r sciezka_zrodlowa/* sciezka_docelowa`.
218+
Drobna uwaga - standardowo `*` nie obejmuje plików ukrytych (zaczynających się
219+
od kropki, np. `.env` lub `.gitignore`).
220+
221+
```bash
222+
docdeveloper@machine:~$ cp -r projekt_v1/* projekt_finalny/
223+
```
224+
225+
Przenoszenie w inne miejsce to właściwie podobna historia -
226+
`mv sciezka_zrodlowa sciezka_docelowa`.
227+
228+
Przydatną funkcją jaką nam daje komenda `mv` jest zmiana nazwy. Na przykład,
229+
jeśli chcemy zmienić nazwę pliku to można go po prostu przenieść, nawet wewnątrz
230+
tej samej lokalizacji. Na przykład, żeby zmienić nazwę pliku w obecnej
231+
lokalizacji, użyj komendy `mv obecna_nazwa_pliku nowa_nazwa_pliku`
232+
233+
```bash
234+
docdeveloper@machine:~$ mv notatka_stara.txt notatka_nowa.txt
235+
```
236+
237+
Usunięcie pliku to też krótka piłka - `rm sciezka_do_pliku`.
238+
239+
Usunięcie folderu wymaga dodania opcji rekursywności -
240+
`rm -r sciezka_do_folderu`. Jeśli dostaniesz jakiś błąd usuwania a i tak nadal
241+
chcesz usunąć ten plik lub folder, możesz "użyć siły", czyli opcji `-f`.
242+
243+
```bash
244+
docdeveloper@machine:~$ rm -r folder_do_usuniecia
245+
```
246+
247+
### Skomponuj coś
248+
249+
Każde polecenie w Bashu to jak odpalenie małego narzędzia. Naciskanie `Enter` po
250+
każdym wpisanym poleceniu jest ok, ale można sobie oszczędzić trochę naciskania
251+
klawiszy za pomocą operatów `&&`, `||` i `|`. Pozwalają one na budowanie
252+
potężnych jednolinijkowców.
253+
254+
Najczęściej używanym jest `&&` (`AND`), który wykonuje kolejną komendę tylko
255+
wtedy, gdy pierwsza się uda.
256+
257+
```bash
258+
docdeveloper@machine:~$ mkdir nowy_folder && cd nowy_folder && echo "Bardzo mi się podoba ten artykuł" > opinia.txt && cat opinia.txt
259+
```
260+
261+
Powyższy tasiemiec najpierw stworzy nowy folder, potem do niego wejdzie i
262+
stworzy plik z zawartością a na końcu wyświetli tę zawartość.
263+
264+
Operator `||` wykonuje kolejną komendę tylko wtedy jeśli poprzednia się nie uda
265+
(`OR`).
266+
267+
```bash
268+
docdeveloper@machine:~$ mkdir nowy_folder || mkdir nowy_folder_1
269+
```
270+
271+
Operator `|` (Pipe) przekazuje informację wyjściową z polecenia po lewej stronie
272+
jako informacje wejściową dla polecenia po prawej stronie.
273+
274+
```bash
275+
docdeveloper@machine:~$ ls | cat -n
276+
1 dokumenty
277+
2 zdjecia
278+
3 notatki.txt
279+
```
280+
281+
### Odśwież swoją pamięć
282+
283+
Ciężko jest sobie przypomnieć obiad sprzed dwóch dni, a co dopiero komendy
284+
wywoływane w Bashu.
285+
286+
Jeśli potrzebujesz przywołać zapis swoich poczynań, użyj do tego komendy
287+
`history`.
288+
289+
```bash
290+
docdeveloper@machine:~$ history
291+
501 cd projekty
292+
502 mkdir nowa_strona
293+
503 ls -la
294+
504 touch index.html
295+
```
296+
297+
Każdy wpis w historii ma swój numer. Ułatwia to czytanie loga, ale też ma inną
298+
przydatną funkcję. Żeby ponownie odpalić jakąś komendę z historii, wpisz
299+
`!numer`.
300+
301+
```bash
302+
docdeveloper@machine:~$ !503
303+
ls -la
304+
```
305+
306+
> Pro tip: Żeby odpalić ostatnią użytą komendę, wpisz `!!`.
307+
308+
### Zostań hardkorem
309+
310+
Lubisz zawsze iść pod wiatr? Nie uznajesz kompromisów? W takim razie mam coś dla
311+
Ciebie - edytor VI lub VIM dostępny w terminalu.
312+
313+
Tyle samo osób go kocha co nienawidzi z powodu bardzo specyficznego sposobu
314+
obsługi. Wszystko robisz na klawiaturze całkowicie inaczej niż w nowoczesnych
315+
edytorach i nie używasz w ogóle myszki. Kiedyś podjąłem wyzwanie nauczenia się
316+
podstawowej obsługi tego edytora. Na początku był pot, krew i łzy, ale po jakimś
317+
czasie stwierdziłem, że to wszystko ma sens i zrozumiałem dlaczego można
318+
polubić VI. Do tej pory zdarza mi się robić jakieś proste zmiany w plikach
319+
tekstowych lub skryptach za pomocą tego edytora.
320+
321+
Jeśli chcesz spróbować to odpal poniższą komendę, która utworzy nowy plik i
322+
otworzyć go w VI.
323+
324+
> OSTRZEGAM! Wyjście z programu może okazać się pierwszym poważnym wyzwaniem na
325+
> jakie natrafisz. W świecie programistów krążą nawet o tym żarty ;)
326+
327+
```bash
328+
docdeveloper@machine:~$ vi plik_konfiguracyjny.txt
329+
```
330+
331+
## Co dalej?
332+
333+
Każde z opisanych wyżej narzędzi to królicza nora, którą można dalej
334+
eksplorować. Wiele z nich ma różne parametry, które dają Ci dodatkowe funkcje.
335+
336+
Jeśli temat Basha Cię zainteresował, poszukaj w internecie jakie jeszcze ciekawe
337+
komendy istnieją. Sztuczny asystent dobrze sprawdza się w generowaniu poleceń,
338+
których potrzebujesz.
339+
340+
Jak już zaczniesz sprawnie poruszać się w ciemnościach tego magicznego okienka,
341+
spróbuj stworzyć jakiś prosty skrypt, czyli plik z rozszerzeniem `.sh`, w którym
342+
umieścisz potrzebne komendy. Na przykład coś takiego:
343+
344+
```bash
345+
#! /bin/bash
346+
347+
cd /Users/docdeveloper
348+
ls
349+
```
350+
351+
Ta dziwna pierwsza linijka to wiadomość dla systemu operacyjnego, żeby odpalił
352+
nasz skrypt w powłoce Bash. Na przykład w macOS od jakiegoś czasu domyślną linią
353+
komend jest Zsh. Brak tej linijki, spowoduje, że skrypt zostanie odpalony z
354+
automatu w Zsh.
355+
356+
Powodzenia i miłej zabawy!

static/img/cover/linia-komend.png

181 KB
Loading

0 commit comments

Comments
 (0)