Zanim wymyślono interface graficzny z przyjemnymi w użytkowaniu okienkami, znano jedynie interface będący formą terminala, z którego poziomu zarządzano komputerem. Choć Linux został wynaleziony w czasach gdy GUI (interfejs graficzny) już znano, posiada on konsole poleceń. Ponadto w przypadku serwerów Linux, nie posiadają one graficznej odsłony a jedynie terminal, z którego poziomu musimy wszystko skonfigurować. Dzięki braku odsłony graficznej system jest lżejszy i nie wymaga dodatkowych zasobów. Dzięki temu poradnikowi dowiesz się jak orientować się w terminalu Linux za pomocą komend. Poniżej znajdziesz komendy Linux Ubuntu, w większości kompatybilne z różnymi dystrybucjami oraz wersjami serwerowymi.
Przedstawione komendy Linux dotyczą dystrybucji Ubuntu, lecz zadziałają na większości dystrybucji lub znajdą swoje odpowiedniki. Komendy zadziałają również na Linux serwerze w dystrybucji Ubuntu, który świetnie się sprawdza jako, np. serwer stron internetowych. Stanowią więc doskonałą podstawę do wprowadzenia w świat Linuxa. Wszystkie komendy posiadają swoje wyjaśnienie oraz przykład użycia.
Pamiętaj, że znajdziesz tutaj tylko najważniejsze (zdaniem autora) opcje do komend. Praktycznie każda komenda posiada swoje opcje, które w większości nie zostaną tutaj wymienione. Wszystkie opcje można sprawdzić wpisując w terminalu man [nazwa_komendy]. Opcje wprowadzają dodatkową funkcjonalność, dzieki której możesz skonfigurować polecenia pod własne potrzeby.
Spis treści – znajdź szybko czego szukasz:
- Do czego służy terminal w Linux?
- Jak uruchomić terminal w Linuxie?
- Skróty klawiszowe w terminalu Linux
- Ogólne komendy Linux
- Komendy Linux do zarządzania plikami
- Komendy do zarządzania pakietami (w tym programami)
- Uruchamianie programów i skryptów
- Zarządzanie procesami w Linux – komendy terminal
- Wyrażenia regularne w terminalu
- Operatory w terminalu
- Przydatne komendy administracyjne
Do czego służy terminal w Linux?
Terminal Linux – niegraficzny Interface tekstowy do sterowania systemem. Podobnie jak w Windows CMD konsola terminala Linux może być użyta do zbierania informacji o komputerze, zmianie ustawień, zarządzania plikami i wielu innych czynności. Z poziomu Terminala Linux, jesteśmy w stanie zrobić więcej niż z poziomu interface’u graficznego. Jednakże do sprawnego poruszania się po terminalu niezbędna jest znajomość komend oraz umiejętność zdobywania o nich informacji. Ten poradnik przedstawi Ci podstawowe komendy w terminalu Linux Ubuntu.
Oprócz wspierania interface’u graficznego (GUI) opanowanie komend jest często niezbędne do uruchomienia własnego Linux Servera. Obecnie większość serwerów jest oparte o jądro Linux’a. Takie serwery mogą zostać użyte, np. do hostowania stron internetowych i aplikacji.
Jak uruchomić terminal w Linux?
Sposobów na uruchomienie terminala jest wiele i zależą one często od dystrybucji Linuxa, jaką wybraliśmy. Poniżej przestawiam uniwersalne sposoby na uruchomienie Terminala Linux.
[!] W przypadku Linux serwera terminal jest jedynym, co wyświetla system.
1# Najszybszą metodą jest wciśnięcie skrótu klawiszowego: Ctrl + Alt + T
2# Inną prostą metodą jest wyszukanie Terminala Linux na liście aplikacji. W tym celu:
- Kliknij przycisk Windows (lub Super – w przypadku klawiatur Linux).
- Zajdź Linux terminal na liście aplikacji poprzez wyszukanie frazy „Terminal” w wyszukiwarce aplikacji.
[!] Przeciągając ikonę Terminala do paska zadań możesz zapisać skrót na potem.
Skróty klawiszowe w terminalu i Linux serwerze
Poniższe skróty klawiszowe terminala Linux ułatwią Ci poruszanie się, które na początku może wydawać się bardzo trudne.
Skrót klawiszowy Linux | Działanie |
Ogólne | |
(SHIFT +) Page Up / Down | Przewijanie terminala Linux |
CTRL + L | Czyści ekran terminala (równoważne z komendą Linux clear) |
CTRL + D | Wychodzi z obecnej sesji terminala |
CTRL + C | Natychmiast kończy aktualne działajace polecenia, np. ping |
CTRL + Z | Wstrzymuje aktualnie działający proces |
Edycja poleceń | |
CTRL + A | Przenosi kursor na początek linii |
CTRL + E | Przenosi kursor na koniec linii |
ALT + B | Przesuwa kursor do tyłu o jedno słowo |
ALT + F | Przesuwa kursor do przodu o jedno słowo |
CTRL + K | Wycina tekst od kursora do końca linii |
CTRL + U | Wycina tekst od początku linii do kursora |
CTRL + W | Wycina słowo będące przed kursorem |
CTRL + Y | Wkleja wcześniej wycięty tekst z terminala Linux |
Historia poleceń | |
CTRL + R | Rozpoczyna wszukiwanie w historii poleceń terminala Linux |
CTRL + G | Anuluje wyszukiwanie w historii poleceń |
CTRL + P lub strałka w górę | Wstawia poprzednio użyte polecenia |
CTRL + N lub strzałka w dół | Wstawia następne polecenia |
Ogólne komendy Linux Terminal
Komendy Linux | Opis | Przykład |
man [nazwa polecenia] | Otwiera program z instrukcją (manualem) korzystania dla wybranego polecenia. | man usermod |
help / -h / –help | Lżejsza wersja pomocy. Nie otwiera całego manuala. Wyświetli opcje dla wybranego polecenia lub listę wszystkich poleceń, gdy jest użyte samo. | help ping –h |
sudo [polecenie] | Wykonuje wybrane polecenie na prawach administratora (wymaga wpisania hasła + posiadania uprawnień). | sudo |
whoami | Komenda „Kim jestem?” wyświetla nazwę zalogowanego użytkownika – przydatne, gdy pracujemy na kilku kontach. | whoami |
clear | Czyści okno terminala | clear |
exit | Wychodzi z aktualnego programu / wylogowuje z terminala | exit |
logout | Wyloguje aktualnego użytkownika | logout |
ping | Sprawdza czy połączenie może być zrealizowane / czy inny serwer odpowiada, np. strony internetowej. Pokazuje również czas wysłania pakietu do serwera aż do jego powrotu w milisekundach (ping internetu). | ping smartmob.pl |
chmod | Zarządzanie uprawnieniami użytkowników do plików i katalogów. | chmod 777 nazwa_pliku |
usermod | Zarządzanie użytkownikami (zawieszanie kont, zmiana folderów, zmiana loginów, preferencji itp.) | sudo usermod –lock UŻYTKOWNIK – Zablokuje konto dowolnego użytkownika. |
netplan | Przedstawia i aktualizuje konfigurację kart sieciowych. | netplan apply – Aktualizuje konfigurację na podstawie wpisów w pliku konfiguracyjnym znajdującym się w /etc/netplan/plik.yaml (nowsze linuxy) netplan get ethernets.NAZWA_karty_sieciowej.addresses – wyświetla adresy IP wybranej karty sieciowej |
echo | Wyświetla komunikat tekstowy, może wyświetlać aktualne wartości zmiennych. | echo KOMUNIKAT |
systemctl | Pozwala zarządzać oraz sprawdzać status usług. | systemctl status ssh – Sprawdza status usługi Secure Shell do zdalnych połączeń (jeśli jest zainstalowana). |
adduser | Dodaje nowego użytkownika. | sudo adduser UŻYTKOWNIK |
nano | Uruchamia wbudowany w Linux Ubuntu edytor tekstu. | nano |
Komendy Linux do zarządzania plikami
Z poziomu terminala Linux można sukcesywnie i szybko zarządzać plikami za pomocą poniższych komend.
Polecenie / komenda Linux | Opis | Przykład zastosowania |
ls | Wyświetla listę plików oraz katalogów. | ls |
pwd | Ukazuje aktualną ścieżkę. | pwd |
cd [folder] | Zmienia aktualny katalog (folder) na wskazany. | cd /folder |
mkdir [nazwa] | Tworzy nowy katalog w aktualnej lokalizacji. | mkdir folder2 |
rm [lokalizacja][nazwa_pliku] | Usuwa wskazany plik lub katalog. | rm /folder/folder2 |
cp [plik][lokalizacja_docelowa] | Kopiuje wskazany plik lub katalog do wybranej lokalizacji. | cp plik.txt /folder/folder2 |
mv | Dwa zastosowania: 1) Zmiana nazwy pliku 2) Przeniesienie pliku | 1) mv plik.txt nowa_nazwa.txt 2) mv plik.txt /nowa_lokalizacja |
cat [plik] | Wyświetla zawartość wskazanych plików tekstowych. W połączeniu z operatorem przekierowującym może zostać użyte do łączenia dwóch plików w jeden. | cat plik1.txt Wyświetli zawartość pliku cat plik1.txt plik2.txt > plik3.txt Połaczy dwa pliki w jeden o nazwie plik 3.txt. |
grep [atrybut] [„fraza”] [plik] | Komenda wyszukująca dane słowo w plikach. Może wyszukiwać w wielu plikach jednocześnie. Domyślnie wyświetla linie zawierające wyszukiwaną frazę. Obsługuje wyrażenia regularne. | grep „slowo” plik.txt grep -r „slowo” nazwa_katalogu/ Poszuka frazy „slowo” w plikach znajdujących się w całym katalogu. |
tar [opcja] [PLIK] | Komenda służąca do rozpakowywania skompresowanych plików. Przydatne opcje: -xvf dla rozszerzeń .tar -zxvf dla .tar.gz -jxvf dla .tar.bz2 -Jxf dla .tar.xz Komenda obsługuje jedynie archiwa tar działające w systemie Linux | tar -xvf paczka.tar Polecenie rozpakuje archiwum o nazwie paczka.tar |
find [opcje] [nazwa] | Wyszukuje lokalizację wskazanych plików i katalogów. Opcja: -name wyszukuje po nazwie -type f wyszukuje tylko pliki -type d wyszukuje tylko foldery Opcje można łączyć ze sobą oraz z wyrażeniami regularnymi. | find -name nazwa.txt Wyszuka lokalizację pliku o wskazanej nazwie find -type f -name nazwa* Komenda wyszuka tylko pliki o wskazanej nazwie i dowolnym rozszerzeniu find -type d -name nazwa Polecenie znajdzie tylko katalogi o wkazanej nazwie |
Komend do zarządzania plikami można używać wraz z wieloma z wyrażeniami regularnymi.
Komendy Linux do zarządzania pakietami
Pakiety w systemie Linux służą do instalacji dodatków systemowych oraz programów. Pakiety to nic innego jak zbiory z plikami programu lub pliki z danymi. Linuxowe pakiety są dostępne w internetowych repozytoriach. Zarządzanie pakietami jest więc zarządzaniem programami z poziomu teminala Linux.
Polecenie apt (Advanced Package Tool) inicjuje menedżer pakietów, dzięki któremu Linux jest w stanie wyszukać dany pakiet po krótkiej nazwie, np. firefox to przeglądarka Firefox. Nie potrzeba do tego żadnego linka do pobrania ani skomplikowanych komend. Wystarczy jedynie nazwa pakietu, aby menedżer pakietów przeszukał repozytoria.
Większość komend do zarządzania pakietami wymaga dodania „sudo” przed komendą, ponieważ w systemie Linux muszą być wykonywane przy użyciu uprawnień administratora.
Komendy Linux | Opis | Przykład zastosowania |
apt update | Aktualizuje listę dostępnych pakietów, aby była zgodna z aktualnymi wersjami. | sudo apt update |
apt upgrade | Aktualizuje zainstalowane pakiety do najnowszych dostępnych wersji. | sudo apt upgrade |
apt install [nazwa] | Instaluje wskazany pakiet oraz jego przynależności. | sudo apt install gimp |
apt remove [nazwa] | Usuwa zainstalowany pakiet. | sudo apt remove gimp |
apt purge | Usuwa zainstalowany pakiet wraz z pozostałościami (np. plikami konfiguracyjnymi). | sudo apt purge gimp |
apt autoremove | Automatycznie usuwa pozostałości po odinstalowanych pakietach. | sudo apt autoremove |
apt search [nazwa] | Wyszukuje dostępne w repozytoriach pakiety o wskazanych nazwach. | apt search text editor |
apt show [nazwa] | Wyświetla informacje na temat danego pakietu | apt show firefox |
Uruchamianie programów i skryptów w terminalu Linux
Oto instrukcja jak uruchomić dany program lub skrypt za pomocą terminala Linux.
Uruchamianie programu: [nazwa_programu]
Przykład:nano
Uruchamianie skryptu: .[lokalizacja][nazwa_skryptu]
Przykład:
./folder/skrypt.sh
Uruchamianie skryptu lub programu w tle: [powyższe składnie] &
Przykład:nano &
Komendy do zarządzania procesami w Linux
Zbiór przydatnych komend Linux terminal do zarządzania procesami.
Komenda Linux | Opis | Przykład zastosowania |
free | Wyświetla poziom zużycia pamięci RAM. Warto dodać -m lub -g, aby wyświetlał się w MB lub GB. Dodanie -s[liczba] sprawi, że zużycie będzie odświeżane co ustaloną liczbę sekund. | free -m |
ps | Wyświetla listę działających procesów w obecnej sesji terminala. Dodanie -el spowoduje wyświetlenie wszystkich procesów | ps |
top | Menedżer procesów, wyświetla listę aktualnie aktywnych procesów i ukazuje zużycie zasobów w czasie rzeczywistym | top |
htop | Zaawansowana forma manedżera procesów, prezentuje listę procesów w interaktywnej tabeli. | htop |
kill [PID] | Zatrzymuje proces wskazany za pomocą numeru PID (numer identyfikacyjny procesu – każdy takowy posiada i może być ukazany w menedżerze procesów) | kill 1234 |
killall [nazwa] | Zatrzymuje wszystkie procesy o określonej nazwie. | killall firefox |
pkill [argument] [wzorzec] | Wyszukuje i zabija procesy pasujące do podanego wzorca w argumencie. | pkill -f „firefox” |
pgrep | Wyszukuje numery PID procesów | |
bg | Przenosi zatrzymany proces proces do tła, dzięki czemu okno terminala może się zająć innymi procesami. | top [CTRL + Z] bg Przenosi menedżer procesów do tła, dzięki czemu okno terminala jest w pełni funkcyjne. |
.[lokalizacja][skrypt] & | Dodatek & na końcu umożliwia uruchomienie skryptu w tle, pozostawiając teminal pełni funkcyjnym (nie listuje działania skryptu). | ./skrypt.sh & |
fg [%numer_zadania] | Przenosi zatrzymany proces z powrotem na pierwszy plan. Jeśli sesja terminala zawiera wiele procesów w tle, możemy wskazać numer konkretnego zadania (za pomocą komendy jobs wyświetlimy numery zadań). | top [CTRL + Z] bg fg |
jobs | Wyświetla listę zadań wykonywanych w tle lub będących wstrzymanymi. Wyświetla numery zadań. Status „Stopped” oznacza, że proces został wstrzymany, a „Running”, że aktualnie działa w tle. | jobs |
nice [argument][priorytet] [komenda] | Uruchamia proces z określonym priorytetem. Czym niższy numer tym większy jest priorytet. Zazwyczaj dostępny jest zakres od -20 do 19, gdzie zejście poniżej 0 może wymagać uprawnień. | nice -n 10 nano plik.txt Uruchamia notanik nano z normalnym priorytetem. |
Wyrażenia regularne w Linux Ubuntu
Wyrażenia regularne (Regular Expressions/regex/regexp) umożliwiają zaawansowane wyszukiwanie oraz zaawansowaną manipulację poleceniami. Pozwalają na ustalenie wzorców, według których polecenia mają się wykonywać.
Przykładowe zastosowania wyrażeń regularnych w systemie Linux i Linux server to: wprowadzenie warunkowości, wyszukiwanie, filtracja, zastępowanie fragmentów teksu na inne, walidacja danych – czyli sprawdzanie, czy spełniają one warunki co do formatu.
Wyrażenie | Opis | Przykład |
* | Wildcard – dzika karta/wyrażenie wieloznaczne. Symbolizuje dowolne znaki w dowolnej ilości (również brak znaku) w systemie Linux. | cp w*.txt /folder/folder2 Kopiuje wszystkie pliki do wskazanej lokazliacji, które posiadają na początku nazwy literę „w” oraz rozszerzenie .txt |
. lub ? | Wyrażenie odpowiada dowolnemu pojedynczemu znakowi (Wildcard dla jednego znaku). | grep tek.t plik.txt Kropka symbolizuje dowolną literę, grep wyszuka podobne słowa. ls pl?k.* Wyrażenie listuje pliki zaczynające się na pl, a kończące nazwę na k. Z dowolnym roszszerzeniem. |
^[znaki] | Znak symbolizujący początek linii. | grep „^[0-9]” plik.txt Użyty do wyszukiwania cyfr wylistuje linie zaczynające się od cyfr. |
[^znaki] | Negacja wyrażenia dla niektórych komend w terminalu Linux | grep „[^0-9]” plik.txt Grep wyszuka wszystko oprócz cyfr |
$ | Znak symbolizujący koniec linii | grep koniec$ plik.txt Wyszuka w pliku linię kończącą się na „koniec” |
[ZNAKI] | Zaznacza obecność wymienionych znaków. | ls [pl]* Wyrażenie poszuka plików zaczynających się na litery „pl” |
[0-9] | Wyrażenie regularne symbolizujące wszystkie cyfry. | grep „[0-9]” plik.txt Użyte do wyszukiwania wylistuje linie zawierające cyfry. |
[a-z] | Wyrażenie symbolizujące tylko wszystkie małe litery | grep [a-z] plik.txt |
[A-Z] | Wyrażenie symbolizujące tylko wszystkie duże litery | grep [A-Z] plik.txt |
[a-zA-Z0-9] | Wyrażenie symbolizujące pełen zakres znaków alfabetu oraz cyfr (przykład łączenia). | grep [a-zA-Z0-9] plik.txt |
’znak’ | Odpowiada dokładnemu dopasowaniu, unika specjalnego znaczenia znaków, np. znaku dolara „$” lub „^”. | ls '$’* Wyświetli pliki, które posiadają znak dolara w nazwie. |
Wyrażenia regularne świetnie sprawdzają się w połączeniu z operatorami Linux.
Operatory Linux w terminalu
Operatory w terminalach Linux umożliwiają interakcję z poleceniami oraz strumieniami wejścia/wyjścia (dostarczania lub eksportowania) danych. Istnieje kilka rodzajów operatorów dla komend Linux:
- Przekierowanie wejścia w Linux umożliwia wstawianie zawartości pliku, bez konieczności kopiowania jej do okna terminala. Przydatne w przypadku konieczności posortowania danych lub wstawienia licznych komend do wykonania.
- Przekierowania wyjścia pozwalają na zapisanie rezultatów komend/skryptów w plikach (zamiast wyświetlania ich w terminalu). Mogą okazać się bardzo przydatne, gdy potrzebujemy gromadzić logi.
- Operatory logiczne podobnie jak w programowaniu, umożliwiają wprowadzenie warunkowości przy wykonywaniu poleceń w systemie Linux.
Operator | Opis | Przykład |
< | Przekierowanie wejścia (input) z pliku | sort < plik.txt |
[Komenda] << [Trigger] | Czerpie dane bezpośrednio z terminala i przekazujeje komendzie. | grep „tekst” << KONIEC Przykładowy „tekst” wpisany do terminala. KONIEC Operator wejścia po wpisaniu KONIEC do terminala odnotuje, że ma dostarczyć cały tekst komendzie grep, która znajdzie w nim słowo „tekst”. |
[komenda1] | [komenda2] | Operator potoku. Przekazanie wyników pierwszej komendy jako input następnej komendy | ls | grep .txt |
[komenda1] |& [komenda2] | Zaawansowany operator potoku przekazujący również wyniki potoku błędów Linux. | ls |& grep .txt |
> | Przekierowanie wyjścia do pliku i nadpisanie zawartości (jeśli plik istnieje, w przeciwnym razie się utworzy) | ls > log.txt |
>> | Przekierowanie wyjścia do pliku i dopisanie wyników na końcu pliku (jeśli plik istnieje, w przeciwnym razie się utworzy) | ls >> log.txt |
2> | Przekierowanie tylko strumień błędów do pliku z nadpisaniem | ls 2> error-log.txt |
2>> | Przekierowuje tylko strumień błędów do pliku z dopisaniem | ls 2>> error-log.txt |
2>&1 | Umożliwia gromadzenie strumieni błędów wraz ze strumieniami wyników. | ls katalog > wynik.txt 2>&1 Komenda sprawdzi czy katalog istnieje, następnie zapisze wynoki w wynik.txt, a jeśli wystąpi kominikat błędu, wówczas zostanie również zapisany w tym samym pliku. |
[Komenda] < [PLIK] > [PLIK] | Operator przekierowania wejścia i wyjścia. Połączenie obu operatorów w jednej komendzie. Wstawia input z pliku, następnie zwraca wynik do drugiego pliku | sort < plik.txt > wynik.txt Sortuje dane z plik.txt i zwraca wynik sortowania do wynik.txt |
{ [komendy] } | Operator grupujący wiele komendy i wykonuje je razem. Umożliwia łatwe grupowanie komend do przekierowania wyjścia. | {echo „komunikat1” ; echo „komunikat2” } > log.txt Wyświetla oba komunikaty oraz zapisuje je w pliku log.txt |
!! | Powoduje ponowne wykonanie ostatniej komenty wpisanej w terminalu. | !! |
[proces] & | Operator uruchamiający proces w tle. | firefox & |
[komenda 1] && [komenda2] | Operator logiczny „AND”. Jeśli pierwsza komenda zostanie wykonana, wówczas kowykona się druga komenda. | ls plik.txt && cat plik.txt |
[komenda 1] || [komenda 2] | Operator logiczny „OR”. Wykonuje kolejną komendę tylko wtedy, gdy pierwsza zakończyła się niepowodzeniem. | rm plik.txt || echo „Nie udało się usunąć pliku” |
Przydatne komendy administracyjne w Linux terminal
Poniżej prezentuję przydatne komendy umożliwiające sprawne poruszanie się po Linux w dystrybucji Ubuntu (+Ubuntu Server):
Komendy Linux | Działanie |
who | Ukazuje litę aktualnie zalogowanych użytkowników. Dodaje adres IP użytkownika, jeśli połączenie odbywa się po SSH. |
mv plik1.txt plik2.txt [LOKALIZACJA] | Przenoszenie wielu plików do wskazanego katalogu. |
ls *.txt | Listuje tylko pliki z rozszerzeniem .txt, dzięki zastosowaniu wyrażenia wieloznacznego (wildcard). |
mv *.txt [LOKALIZACJA] | Przenoszenie wszystkich plików o rozszerzeniu .txt do wskazanej lokalizacji. |
sudo su | Sprawia, że wszystkie komendy będą wykonywane z uprawnieniami administratora (bez konieczności dodawania „sudo” i wpisywania hasła). |
sudo nano /etc/passwd | Wyświetla zawartość pliku, w którym są zapisane informacje o wszystkich użytkownikach w systemie. |
sudo adduser [UŻYTKOWNIK] | Tworzy konto nowego użytkownika. |
sudo chage -l [UŻYTKOWNIK] | Wyświetla informacje o haśle danego użytkownika. |
sudo chage -d 0 [UŻYTKOWNIK] | Wygasa hasło wybranego użytkownika i wymusza zmianę hasła przy następnej próbie zalogowania. |
sudo chage -E 2023-07-22 -M 90 -W 5 UŻYTKOWNIK | Ustala datę wygaśnięcia konta (-E 2023-07-22), ilość dni do wygasania hasła (-M 90) i okres czasu na zmianę hasła (-W 5 = 5 dni). |
Posiadasz lepsze opisy/przykłady komend Linux lub czegoś brakuje?
Zgłoś się do mnie poprzez formularz kontaktowy.
Pozdrawiam Tomek