Nowym użytkownikom często dużo trudności sprawia sprawne poruszanie się po terminalu.
Czym różni się terminal w Linuksie od tego w Windowsach? Przede wszystkim możemy wybrać sobie „powłokę” czyli środowisko, w którym będziemy wydawać komendy naszemu systemowi.
Powłoka, czyli „shell” (od ang. shell – skorupa), swoją nazwę zawdzięcza temu, że jest jak skorupa orzecha włoskiego. Okala wszystkie wewnętrzne elementy (konfiguracje, usługi, elementy systemu) i wystarczy sprawnie się w niej poruszać, by móc dobrze zarządzać systemem.
Poniżej lista podstawowych komend wraz z przykładami użycia:
pwd
– sprawdzanie aktualnej ścieżki, w jakiej się znajdujemy:
root@cheshirecat:~# pwd
/root
root@cheshirecat:~#
mkdir
– tworzenie katalogów
root@cheshirecat:~# mkdir test
root@cheshirecat:~#
ls
– listowanie elementów
root@cheshirecat:~# ls
a.txt b.txt history_root.txt snap test
root@cheshirecat:~#
możemy do tego polecenia dołączyć przełączniki:
l – wynik w formie listy,
a – wszystkie elementy, łącznie z ukrytymi,
h – wielkość elementów, w trybie czytelnym dla ludzi:
root@cheshirecat:~# ls -lah
total 88K
drwx------ 9 root root 4,0K maj 7 23:25 .
drwxr-xr-x 20 root root 4,0K maj 5 13:31 ..
-rw-r--r-- 1 root root 1,5K lut 8 13:36 a.txt
-rw------- 1 root root 13K kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1,5K lut 8 13:36 b.txt
drwx------ 5 root root 4,0K lut 25 17:26 .cache
drwx------ 4 root root 4,0K sty 17 14:12 .config
-rw-r--r-- 1 root root 9,8K mar 7 15:13 history_root.txt
-rw------- 1 root root 20 kwi 30 21:50 .lesshst
drwxr-xr-x 3 root root 4,0K paź 25 2023 .local
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4,0K paź 26 2023 .snap
drwx------ 10 root root 4,0K mar 10 21:31 snap
drwx------ 2 root root 4,0K lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4,0K maj 7 23:25 test
root@cheshirecat:~#
Pierwsza kolumna oznacza uprawnienia:
d – Directory czyli folder,
r – Read czyli uprawnienie do odczytu,
w – Write czyli uprawnienie do zapisu,
x – eXecute czyli uprawenienie do wykonania.
Druga kolumna oznacza wskazanie użytkownika będącego właścicielem danego elementu.
Trzecia kolumna oznacza wskazanie grupy użytkowników, będących właścicielami danego elementu.
Czwarta kolumna to rozmiar, piąta data dostępu/edycji a ostatnia to nazwa elementu.
Należy zwrócić uwagę na te pliki i katalogi, których nazwa zaczyna się od znaku kropki „.” – są to elementy ukryte i nie zobaczymy ich przy wykonaniu zwykłego polecenia ls.
touch
– „dotknięcie” oznacza zmianę daty modyfikacji pliku a jeśli plik nie stnieje to utworzenie go:
root@cheshirecat:~# touch podstawy_linuxa.txt
root@cheshirecat:~# ls -lah
total 88K
drwx------ 9 root root 4,0K maj 7 23:34 .
drwxr-xr-x 20 root root 4,0K maj 5 13:31 ..
-rw-r--r-- 1 root root 1,5K lut 8 13:36 a.txt
-rw------- 1 root root 13K kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1,5K lut 8 13:36 b.txt
drwx------ 5 root root 4,0K lut 25 17:26 .cache
drwx------ 4 root root 4,0K sty 17 14:12 .config
-rw-r--r-- 1 root root 9,8K mar 7 15:13 history_root.txt
-rw------- 1 root root 20 kwi 30 21:50 .lesshst
drwxr-xr-x 3 root root 4,0K paź 25 2023 .local
-rw-r--r-- 1 root root 0 maj 7 23:34 podstawy_linuxa.txt
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4,0K paź 26 2023 .snap
drwx------ 10 root root 4,0K mar 10 21:31 snap
drwx------ 2 root root 4,0K lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4,0K maj 7 23:25 test
root@cheshirecat:~#
Zwróćmy uwagę na linijkę:
-rw-r--r-- 1 root root 0 maj 7 23:34 podstawy_linuxa.txt
tego pliku na poprzedniej liście nie było. Jeśli wykonamy ponownie to samo polecenie to otrzymamy następujący wynik:
root@cheshirecat:~# ls -lah
total 88K
drwx------ 9 root root 4,0K maj 7 23:34 .
drwxr-xr-x 20 root root 4,0K maj 5 13:31 ..
-rw-r--r-- 1 root root 1,5K lut 8 13:36 a.txt
-rw------- 1 root root 13K kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1,5K lut 8 13:36 b.txt
drwx------ 5 root root 4,0K lut 25 17:26 .cache
drwx------ 4 root root 4,0K sty 17 14:12 .config
-rw-r--r-- 1 root root 9,8K mar 7 15:13 history_root.txt
-rw------- 1 root root 20 kwi 30 21:50 .lesshst
drwxr-xr-x 3 root root 4,0K paź 25 2023 .local
-rw-r--r-- 1 root root 0 maj 7 23:35 podstawy_linuxa.txt
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4,0K paź 26 2023 .snap
drwx------ 10 root root 4,0K mar 10 21:31 snap
drwx------ 2 root root 4,0K lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4,0K maj 7 23:25 test
root@cheshirecat:~#
Sprawdźmy tę samą linijkę w wyniku:
-rw-r--r-- 1 root root 0 maj 7 23:35 podstawy_linuxa.txt
Zauważyć możemy, że zmienił się czas modyfikacji pliku. Pierwotnie była to godzina 23:34, a następnie 23:35.
chmod
– zmiana uprawnień do pliku. Przy pomocy znaków „`”+”„` oraz „`”-„„` dodajemy oraz usuwamy uprawnienia.
Czy jedynym sposobem zmiany uprawnień jest pisanie ich artybutów literowych? Nie 🙂 Możemy to także zrobić liczbowo.
Uprawnienie będzie wynikiem dodawania elementów:
4 – odczyt,
2 – zapis,
1 – wykonanie.
Przykładem może być ustawienie 755 gdzie należy zauważyć, że mamy trzy liczby odpowiednio dla:
– właściciela pliku bądź katalogu,
– grupy,
– pozostałych użytkowników.
Pod żadnym pozorem NIE NALEŻY bez dobrego zastanowienia się, a najlepiej konsultacji z doświadczonym użytkownikiem (bądź administratorem) ustawiać uprawnień 777. Jest to bardzo niebezpieczne – daje każdemu, nawet anonimowemu użytkownikowi pełen dostęp do zasobu.
chown
– zmiana właścicielstwa. Podajemy także użytkownika/grupę, której ma dotyczyć zmiana:
root@cheshirecat:~# chown ksmaga:ksmaga podstawy_linuxa.txt
root@cheshirecat:~# ls -lah
total 88K
drwx------ 9 root root 4,0K maj 7 23:34 .
drwxr-xr-x 20 root root 4,0K maj 5 13:31 ..
-rw-r--r-- 1 root root 1,5K lut 8 13:36 a.txt
-rw------- 1 root root 13K kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1,5K lut 8 13:36 b.txt
drwx------ 5 root root 4,0K lut 25 17:26 .cache
drwx------ 4 root root 4,0K sty 17 14:12 .config
-rw-r--r-- 1 root root 9,8K mar 7 15:13 history_root.txt
-rw------- 1 root root 20 kwi 30 21:50 .lesshst
drwxr-xr-x 3 root root 4,0K paź 25 2023 .local
---x--x--x 1 ksmaga ksmaga 0 maj 7 23:35 podstawy_linuxa.txt
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4,0K paź 26 2023 .snap
drwx------ 10 root root 4,0K mar 10 21:31 snap
drwx------ 2 root root 4,0K lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4,0K maj 7 23:25 test
root@cheshirecat:~#
Zbierzmy trochę informacji o naszym systemie.
uname
– sprawdzenie podstawowych informacji systemowych:
root@cheshirecat:~# uname
Linux
root@cheshirecat:~#
Dodajmy przełącznik
a
by wyświetlić wszystkie dane systemowe:
root@cheshirecat:~# uname -a
Linux cheshirecat 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux
root@cheshirecat:~#
Trochę nam się narobiło już informacji na ekranie. Użyjemy odpowiedniego polecenia.
clear
– czyszczenie ekrany terminala:
Ekran przed użyciem tego polecenia:
root@cheshirecat:~# uname
Linux
root@cheshirecat:~# uname -a
Linux cheshirecat 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux
Ekran po użyciu tego polecenia:
root@cheshirecat:~#
Poleceniem „`echo„` możemy przekazać na wyjście standardowe zmienne:
root@cheshirecat:~# echo "podstawy Linuxa"
podstawy Linuxa
root@cheshirecat:~#
A co zrobić by wyświetlić wartość zmiennej?
Zadeklarujmy takową:
root@cheshirecat:~# autor="Krzysztof Smaga"
root@cheshirecat:~#
I następnie używając polecenia
echo
spróbujmy wyświetlić jej wartość:
root@cheshirecat:~# echo $autor
Krzysztof Smaga
root@cheshirecat:~#
Należy zauważyć, że przy wyświetlaniu wartości zmiennej należy określić, że właśnie zmienna nas interesuje. Używamy do tego znaku „`$„` przed nazwą zmiennej.
rm
– usuwanie elenentów:
root@cheshirecat:~# rm podstawy_linuxa.txt
Nasz plik tekstowy zniknął z listy:
root@cheshirecat:~# ls -lah
total 88K
drwx------ 9 root root 4,0K maj 8 00:02 .
drwxr-xr-x 20 root root 4,0K maj 5 13:31 ..
-rw-r--r-- 1 root root 1,5K lut 8 13:36 a.txt
-rw------- 1 root root 13K kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1,5K lut 8 13:36 b.txt
drwx------ 5 root root 4,0K lut 25 17:26 .cache
drwx------ 4 root root 4,0K sty 17 14:12 .config
-rw-r--r-- 1 root root 9,8K mar 7 15:13 history_root.txt
-rw------- 1 root root 20 kwi 30 21:50 .lesshst
drwxr-xr-x 3 root root 4,0K paź 25 2023 .local
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4,0K paź 26 2023 .snap
drwx------ 10 root root 4,0K mar 10 21:31 snap
drwx------ 2 root root 4,0K lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4,0K maj 7 23:25 test
root@cheshirecat:~#
Dla przykładu utwórzmy i usuńmy katalog:
root@cheshirecat:~# mkdir p_l
Katalog został utworzony:
root@cheshirecat:~# ls -lah
total 92K
drwx------ 10 root root 4,0K maj 8 00:05 .
drwxr-xr-x 20 root root 4,0K maj 5 13:31 ..
-rw-r--r-- 1 root root 1,5K lut 8 13:36 a.txt
-rw------- 1 root root 13K kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1,5K lut 8 13:36 b.txt
drwx------ 5 root root 4,0K lut 25 17:26 .cache
drwx------ 4 root root 4,0K sty 17 14:12 .config
-rw-r--r-- 1 root root 9,8K mar 7 15:13 history_root.txt
-rw------- 1 root root 20 kwi 30 21:50 .lesshst
drwxr-xr-x 3 root root 4,0K paź 25 2023 .local
drwxr-xr-x 2 root root 4,0K maj 8 00:05 p_l
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4,0K paź 26 2023 .snap
drwx------ 10 root root 4,0K mar 10 21:31 snap
drwx------ 2 root root 4,0K lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4,0K maj 7 23:25 test
Spróbujmy go usunąć:
root@cheshirecat:~# rm p_l
rm: cannot remove 'p_l': Is a directory
Otrzymujemy komunikat, że nie można usunąć wprost ponieważ „`p_l„` jest katalogiem.
Użyjmy zatem przełącznika:
r
– rekursywne usuwanie katalogów i plików.
root@cheshirecat:~# rm -r p_l/
Katalog p_l został usunięty:
root@cheshirecat:~# ls -la
total 88
drwx------ 9 root root 4096 maj 8 00:05 .
drwxr-xr-x 20 root root 4096 maj 5 13:31 ..
-rw-r--r-- 1 root root 1506 lut 8 13:36 a.txt
-rw------- 1 root root 12550 kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1440 lut 8 13:36 b.txt
drwx------ 5 root root 4096 lut 25 17:26 .cache
drwx------ 4 root root 4096 sty 17 14:12 .config
-rw-r--r-- 1 root root 10014 mar 7 15:13 history_root.txt
-rw------- 1 root root 20 kwi 30 21:50 .lesshst
drwxr-xr-x 3 root root 4096 paź 25 2023 .local
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4096 paź 26 2023 .snap
drwx------ 10 root root 4096 mar 10 21:31 snap
drwx------ 2 root root 4096 lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4096 maj 7 23:25 test
root@cheshirecat:~#
cp
– kopiowanie
Przekopiowany zostanie plik podstawy_linuxa.txt. Plikiem docelowym będzie podstawy_linuxa_v2.txt:
root@cheshirecat:~# ls -la
total 88
drwx------ 9 root root 4096 maj 8 00:11 .
drwxr-xr-x 20 root root 4096 maj 5 13:31 ..
-rw-r--r-- 1 root root 1506 lut 8 13:36 a.txt
-rw------- 1 root root 12550 kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1440 lut 8 13:36 b.txt
drwx------ 5 root root 4096 lut 25 17:26 .cache
drwx------ 4 root root 4096 sty 17 14:12 .config
-rw-r--r-- 1 root root 10014 mar 7 15:13 history_root.txt
-rw------- 1 root root 20 maj 8 00:07 .lesshst
drwxr-xr-x 3 root root 4096 paź 25 2023 .local
-rw-r--r-- 1 root root 0 maj 8 00:11 podstawy_linuxa.txt
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4096 paź 26 2023 .snap
drwx------ 10 root root 4096 mar 10 21:31 snap
drwx------ 2 root root 4096 lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4096 maj 7 23:25 test
Kopiowanie:
root@cheshirecat:~# cp podstawy_linuxa.txt podstawy_linuxa_v2.txt
Plik został przekopiowany:
root@cheshirecat:~# ls -la
total 88
drwx------ 9 root root 4096 maj 8 00:11 .
drwxr-xr-x 20 root root 4096 maj 5 13:31 ..
-rw-r--r-- 1 root root 1506 lut 8 13:36 a.txt
-rw------- 1 root root 12550 kwi 30 21:50 .bash_history
-rw-r--r-- 1 root root 571 kwi 10 2021 .bashrc
-rw-r--r-- 1 root root 1440 lut 8 13:36 b.txt
drwx------ 5 root root 4096 lut 25 17:26 .cache
drwx------ 4 root root 4096 sty 17 14:12 .config
-rw-r--r-- 1 root root 10014 mar 7 15:13 history_root.txt
-rw------- 1 root root 20 maj 8 00:07 .lesshst
drwxr-xr-x 3 root root 4096 paź 25 2023 .local
-rw-r--r-- 1 root root 0 maj 8 00:11 podstawy_linuxa.txt
-rw-r--r-- 1 root root 0 maj 8 00:11 podstawy_linuxa_v2.txt
-rw-r--r-- 1 root root 161 lip 9 2019 .profile
-rw-r--r-- 1 root root 66 lis 28 07:52 .selected_editor
drwx------ 2 root root 4096 paź 26 2023 .snap
drwx------ 10 root root 4096 mar 10 21:31 snap
drwx------ 2 root root 4096 lut 25 20:57 .ssh
drwxr-xr-x 2 root root 4096 maj 7 23:25 test
root@cheshirecat:~#
Aby kopiować katalogi należy – podobnie jak w przypadku polecenia rm – użyć przełącznika: r
– rekursywnie.
history
– sprawdzanie historii wydanych poleceń (zamieszczam fragment):
513 chmod +x podstawy_linuxa.txt
514 ls -lah
515 chown ksmaga:ksmaga podstawy_linuxa.txt
516 ls -lah
517 clear
518 uname
519 uname -a
520 clear
521 echo "podstawy Linuxa"
522 autor="Krzysztof Smaga"
523 echo $autor
524 rm podstawy_linuxa.txt
525 ls -lah
526 clear
527 mkdir p_l
528 ls -lah
529 rm p_l
530 rm -r p_l/
531 ls -la
532 man rm
533 clear
534 history
535 clear
536 touch podstawy_linuxa.txt
537 ls -la
538 cp podstawy_linuxa.txt podstawy_linuxa_v2.txt
539 ls -la
540 clear
541 history
root@cheshirecat:~#
Należy zauważyć, że w każdej linii jest liczba oznaczająca kolejność wydawanego polecenia.
grep
– poszukiwanie wzorca w pliku:
root@cheshirecat:~# history | grep clear
240 clear
275 clear
421 clear
427 clear
442 clear
501 clear
517 clear
520 clear
526 clear
533 clear
535 clear
540 clear
542 history | grep clear
root@cheshirecat:~#
Polecenia łączymy znakiem:
|
tzw. „pipe” czyli rurką. Wynik polecenia pierwszego jest przekazywany do polecenia drugiego.
cat
– wyświetlanie zawartości pliku:
root@cheshirecat:~# cat podstawy_linuxa.txt
0. Podstawy Linuxa
1. Podstawy Linuxa
2. Podstawy Linuxa
3. Podstawy Linuxa
4. Podstawy Linuxa
5. Podstawy Linuxa
6. Podstawy Linuxa
7. Podstawy Linuxa
8. Podstawy Linuxa
9. Podstawy Linuxa
10. Podstawy Linuxa
root@cheshirecat:~#