Podstawowe polecenia powłoki systemu Unix
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).
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 |
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.