Podstawowe Polecenia Systemu Unix

Podstawowe polecenia powłoki systemu Unix

8 Listopad 2021

Zaprzyjaźnij się ze swoim terminalem

Praca w terminalu początkowo może wydawać sie bardzo skomplikowana. Domyślna powłoka Linux Bash może, wydawać się dość restrykcyjnym środowiskiem do pracy. Wielu użytkowników utknęło na braku podstawowej umiejętności z radzenia sobie w tekstowym środowisku. Natomiast prawda jest taka, że praca w terminalu jest całkiem przyjazna dla użytkownika – jeśli tylko wiesz, jak się nim posługiwać. Tak więc, jeśli zamierzasz spędzić jakąkolwiek znaczącą ilość czasu używając linii poleceń to warto zapoznać się z podstawowymi poleceniami powłoki. Poniżej znajdziesz podstawowe polecenia pozwalające na operacje na elementach systemu plików.

Polecenia pozwalające na operacjach na plikach i katalogach

System plików to podstawowe miejsce trwałego przechowywania danych systemu operacyjnego. Nie ważne czy będziemy pracować w środowisku Windows czy Unix, każdy z nich przechowuje dane w postaci uporządkowanych zbiorów umieszczonych w określonych lokalizacjach systemu plików. Jako, że terminal najczęściej wykorzystywany jest w środowiskach Unixowych, to polecenia przedstawione będą na przykładach systemu plików środowiska Unix. Rysunek 1 przedstawia fragment przykładowego systemu plików przedstawiającego katalogi oraz zbiory danych. Polecenia te mogą być również wykorzystywane przez użytkowników systemu windows z zainstalowanym podsystemem WSL (ang. Windows Subsystem for Linux).

Struktura systemu plików !
Rysunek 1: Struktura systemu plików

Podstawowe operacje na elementach systemu plików można wykonać przy pomocy poniższych poleceń:

  • pwd – pokaż ścieżkę do bieżącego katalogu,
  • cd – zmiana katalogu,
  • ls – wyświetl zawartość katalogu,
  • mkdir – utworzenie nowego katalogu,
  • cp – przekopiowanie pliku lub katalogu,
  • mv – zmiana położenia bądź nazwy pliku lub katalogu,
  • rm – usunięcie pliku lub katalogu,

pwd – pokaż ścieżkę do bieżącego katalogu

Polecenie pwd (ang. print working directory) wyświetla ścieżkę do katalogu (folderu), w którym właśnie się znajdujemy. Jest to katalog bieżący w którym są wykonywane wszystkie operacje.

radek@laptop:~$ pwd
/home/radek
radek@laptop:~$

cd – zmiana katalogu

Do zmiany bieżącego katalogu służy polecenie cd (ang. change directory). Jako argument polecenia wpisujemy nazwę katalogu na który chcemy zmienić katalog roboczy.

Poniższy przykład pokazuje zmianę katalogu bieżącego na katalog dokumenty

radek@laptop:~$ cd dokumenty
/home/radek/dokumenty
radek@laptop:~/dokumenty$ pwd
/home/radek/dokumenty
radek@laptop:~/dokumenty$

Jeśli chcemy przejść do katalogu domowego to niezależnie od miejsca w którym się znajdujemy wystarczy użyć polecenia cd bez parametrów. Oprócz nazw katalogów możemy stosować specjalne nazwy katalogów:

  • . – bieżący katalog,
  • .. – katalog nad katalogiem bieżącym,
  • ~ – katalog domowy zalogowanego użytkownika,
  • / – główny katalog systemu plików.

ls – wyświetl zawartość katalogu

Komenda ls (ang. list) wyświetla zawartość wskazanego katalogu bądź katalogu w którym aktualnie się znajdujemy, czyli katalogu bieżącego.

radek@laptop:~$ ls
dokumenty obrazy pobrane
radek@laptop:~$

Oprócz zwykłych plików i katalogów na dysku mogą znajdować się elementy ukryte. W linuxie nazwy tego typu elementów poprzedzone są znakiem kropki. Aby wyświetlić pliki ukryte należy użyć odpowiedniego przełącznika do polecenia ls. Najczęściej używane przełączniki to:

  • -a – wypisuje wszystkie pliki i katalogi znajdujące włączając elementy ukryte,
radek@laptop:~$ ls -a
. .. .bash_history .bashrc dokumenty obrazy pobrane .ssh
radek@laptop:~$
  • -al – wypisuje wszystkie pliki i katalogi znajdujące stosując rozszerzony format zapisu włączając elementy ukryte.
radek@laptop:~$ ls -al
drwxr-xr-x 1 radek users    344 11-08 11:59 .
drwx------ 1 radek users    594 11-08 16:13 ..
-rw------- 1 radek users 105911 11-08 16:01  .bash_history
-rw-r--r-- 1 radek users   4003 10-08 10:58  .bashrc
drwxr-xr-x 1 radek users    578 11-02 15:25  dokumenty
drwxr-xr-x 1 radek users   3046 11-05 10:43  obrazy
drwxr-xr-x 1 radek users  42804 11-08 15:51  pobrane
drwx------ 1 radek users    212 10-18 13:11  .ssh
radek@laptop:~$

W katalogu, który zawiera wiele elementów przydatne mogą być wzorce uogólniające pozwalające zawęzić wyświetlane rezultaty:

  • * – zastępuje dowolny ciąg znaków,
  • ? – zastępuje pojedynczy znak,
  • [] – zastępuje pojedynczy znak, ale używa do tego tylko znaki podane w nawiasie

Poniższy przykład powoduje wyświetlenie plików tylko części zawartości katalogu dokumenty – wyświetlone zostaną pliki których rozszerzenie to .txt i w nazwie bezpośrednio przed rozszerzeniem musi występować cyfra 1 lub 2.

radek@laptop:~$ ls -al ~/dokumenty/*[12].txt
-rw-r--r-- 1 radek users 0 11-05 12:31 /home/radek/Dokumenty/plik1.txt
-rw-r--r-- 1 radek users 0 11-05 12:31 /home/radek/Dokumenty/plik2.txt
radek@laptop:~$

mkdir – utworzenie nowego katalogu

Do tworzenia nowego katalogu należy użyć polecenie mkdir (ang. make directory). Jako parametr wywołania polecenia należy podać nazwę katalogu do utworzenia. Jeżeli chcemy utworzyć jednocześnie kilka katalogów wystarczy ich nazwy rozdzielić spacją.

radek@laptop:~$ mkdir projekty
mkdir: utworzony katalog 'projekty'
radek@laptop:~$ ls
dokumenty obrazy pobrane projekty
radek@laptop:~$ cd projekty
/home/radek/projekty
radek@laptop:~/projekty$ mkdir pierwszy drugi trzeci czwarty
mkdir: utworzony katalog 'pierwszy'
mkdir: utworzony katalog 'drugi'
mkdir: utworzony katalog 'trzeci'
mkdir: utworzony katalog 'czwarty'
radek@laptop:~/projekty$

W przypadku gdy chcemy utworzyć od razu kilka zagłębionych katalogów możemy posłużyć się parametrem -p.

radek@laptop:~$ mkdir -p projekty/pierwszy_projekt/podprojekt
mkdir: utworzony katalog 'projekty'
mkdir: utworzony katalog 'projekty/pierwszy_projekt'
mkdir: utworzony katalog 'projekty/pierwszy_projekt/podprojekt'
radek@laptop:~$ cd projekty/pierwszy_projekt/podprojekt
/home/radek/projekty/pierwszy_projekt/podprojekt
radek@laptop:~/.../pierwszy_projekt/podprojekt$ pwd
/home/radek/projekty/pierwszy_projekt/podprojekt
radek@laptop:~/.../pierwszy_projekt/podprojekt$

touch – utworzenie pustego pliku

Czasami jest potrzeba utworzenia pliku w określonej lokalizacji. Do tego celu służy polecenie touch. Polecenie to tworzy pusty plik oraz ustawia datę i czas modyfikacji tego pliku na moment jego utworzenia. Jeżeli jako argument polecenia podamy nazwę już istniejącego pliku zostanie zmieniona jego data i czas utworzenia na aktualną.

radek@laptop:~/projekty$ touch plik1.txt plik2.txt plik3.txt
radek@laptop:~/projekty$ ls
czwarty  drugi  pierwszy  pierwszy_projekt  plik1.txt  plik2.txt  plik3.txt  trzeci
radek@laptop:~/projekty$ 

cp – przekopiowanie pliku lub katalogu

Do kopiowania plików służy polecenie cp (ang. copy). Polecenie to pozwala utworzyć nam kopię pliku w katalogu z inną nazwą bądź przekopiować istniejący plik do określonej lokalizacji.

radek@laptop:~/projekty$ cp plik1.txt plik4.txt
'plik1.txt' -> 'plik4.txt'
radek@laptop:~/projekty$ cp plik1.txt pierwszy_projekt/
'plik1.txt' -> 'pierwszy_projekt/plik1.txt'

Do kopiowania plików możemy również używać wzorców uogólniających *, [], etc.

radek@laptop:~/projekty$ mkdir drugi_projekt
mkdir: utworzony katalog 'drugi_projekt'
radek@laptop:~/projekty$ cp *[24].txt drugi_projekt/
'plik2.txt' -> 'drugi_projekt/plik2.txt'
'plik4.txt' -> 'drugi_projekt/plik4.txt'
radek@laptop:~/projekty$ ls drugi_projekt/
plik2.txt  plik4.txt
radek@laptop:~/projekty$ 

mv – zmiana położenia pliku lub katalogu

Oprócz kopiowania możemy zaistnieć potrzeba przeniesienia już istniejących elementów do innej lokalizacji. Z pomocą przychodzi polecenie mv (ang. move). Polecenie to oprócz przenoszenia elementów pozwala na zmianę ich nazwy. Korzystając z tego polecenia możemy wykorzystywać wzorce uogólniające.

radek@laptop:~/projekty$ mv plik[12].txt trzeci_projekt/
przemianowany 'plik1.txt' -> 'trzeci_projekt/plik1.txt'
przemianowany 'plik2.txt' -> 'trzeci_projekt/plik2.txt'
radek@laptop:~/projekty$ mv plik4.txt nowy_plik.txt
przemianowany 'plik4.txt' -> 'nowy_plik.txt'
radek@laptop:~/projekty$ 

rm – usunięcie pliku lub katalogu

Do usuwania plików należy wykonać polecenie rm podając jako parametr nazwę elementu do usunięcia. Możemy używać wzorców uogólniających analogicznie jak w poleceniu ls czy cp. Domyślnie polecenie rm nie usuwa katalogów. Jeżeli chcemy aby usunięte zostały również katalogi należy użyć przełącznika -r. Do usunięcia pustych katalogów przydatny będzie przełącznik -d.

radek@laptop:~/projekty$ rm -d *
rm: nie można usunąć 'drugi_projekt': Katalog nie jest pusty
rm: nie można usunąć 'pierwszy_projekt': Katalog nie jest pusty
rm: nie można usunąć 'trzeci_projekt': Katalog nie jest pusty
radek@laptop:~/projekty$ ls
drugi_rpojekt pierwszy_projekt trzeci_projekt
radek@laptop:~/projekty$ 

Powyższy przykład pokazał jak usunąć zawartość bieżącego katalogu włączając puste podkatalogi. W efekcie wykonania polecenia pozostawiony został jeden katalog który zawierał podkatalogi. Do jego usunięcia należy użyć przełącznika -r.

radek@laptop:~/projekty$ rm -r pierwszy_projekt/ drugi_projekt/ trzeci_projekt/
radek@laptop:~/projekty$ ls
radek@laptop:~/projekty$ 

Skróty klawiszowe

Na sam koniec kilka skrótów klawiszowych przydatnych w pracy z powłoką Bash.

Skrót klawiszowy Działanie
ctrl + a przesuń kursor na początek linii
ctrl + e przesuń kursor na koniec linii
alt + f przesuń kursor o jedno słowo do przodu
alt + b przesuń kursor o jedno słowo do tyłu
ctrl + f przesuń kursor o jeden znak do przodu
ctrl + b przesuń kursor o jeden znak do tyłu
ctrl + l czyści okno terminala
ctrl + z zawiesza działanie bieżącego procesu pozostawiając go w tle
ctrl + c przerwanie działania programu poprzez wysłanie sygnału SIGINT
ctrl + d zamknięcie sesji bash poprzez wysłanie znaku EOF

Tabela 1: Skróty klawiszowe przydatne w pracy z powłoką bash.

Powyższe skróty klawiaturowe są dostępne w trybie pracy emacs w Bashu, jeżeli wykorzystywany jest inny tryb pracy skróty mogą być nieco inne.