Polecenia systemu operacyjnego Unix
 
W systemach Unix oraz w systemach uniksopodobnych polecenia są często programami uruchamianymi z wiersza poleceń powłoki systemowej. Często różne powłoki mają dodatkowo wbudowane własne implementacje niektórych poleceń; np. zawierają wersję polecenia dostępnego jako /bin/echo. To, która wersja polecenia będzie wykonana domyślnie zależy od tego, która powłoka jest używana oraz od konfiguracji systemu. Podstawową powłoką większości systemów Unix jest Bourne shell dostępna zwykle jako /bin/sh lub /usr/bin/sh, jednak częściej w pracy interaktywnej używa się wywodzących się z niej, bardziej rozbudowanych powłok takich jak bash, Korn shell, Z shell, czy też spokrewnionych C shell i tcsh, z nowszych popularność zyskuje fish. Większość powłok może być także używana jako języki skryptowe, co pozwala użytkownikowi na wykonywanie rozbudowanych poleceń wykorzystujących wiele programów oraz pisanie skryptów automatyzujących często wykonywane czynności. Za pomocą mechanizmów potoków i kolejek można w łatwy sposób przekazywać dane pomiędzy wieloma programami tworząc z nich bardziej skomplikowane narzędzia.
 
 
 
Zarządzanie plikami
 
cat – wypisywanie i łączenie plików
chgrp – zmiana grupy pliku
chmod – zmiana praw dostępu do pliku
chown – zmiana właściciela/grupy pliku
chattr – zmiana konkretnych atrybutów pliku
cd – zmiana bieżącego katalogu, użyty bez argumentów powraca do katalogu domowego
cp – kopiowanie plików
df – wypisywanie wolnej przestrzeni zamontowanych systemów plików
du – wyświetla ilość miejsca zajmowanego przez pliki/katalogi
file – ustalanie typu danych zawartych w pliku
find – przeszukiwanie systemu plików
getfacl – odczytanie prawa dostępu z list ACL
ln – tworzenie dowiązań twardych i symbolicznych (patrz niżej)
ls – listowanie zawartości katalogu
lsof – wyświetlanie listy otwartych plików, oraz używających ich programów
mkdir – tworzenie katalogów
mkfifo – tworzenie nazwanych potoków
mv – przenoszenie/zmiana nazwy pliku
pwd – wydruk aktualnego katalogu
rcp – transfer plików na zdalny host
rm – usuwanie plików i katalogów.
rmdir – usuwanie katalogów
scp – transfer plików bezpiecznym kanałem, SSH, na zdalny host
setfacl – ustawienie prawa dostępu list ACL
split – dzielenie pliku na kawałki
rsync – synchronizacja plików, ewentualnie również bezpiecznym kanałem, SSH.
touch – zamiana daty ostatniej modyfikacji, lub dostępu do pliku bądź utworzenie pustego pliku
umask – wyświetla aktualną i umożliwia zmianę maski uprawnień dla tworzonych plików
unlink – wywołanie systemowe, usuwanie pliku lub katalogu
 
 
 
Zarządzanie systemem plików
 
badblocks – kontroluje badblocks (złe bloki urządzeń)
df – sprawdzanie przestrzeni (również wolnej) na dyskach
fsck – sprawdzanie integralności systemu plików
fdisk – manipulacje w tabeli partycji także cfdisk, sfdisk, parted
mkfs – tworzenie systemu plików , 'formatowanie'
lvm – narzędzia do LVM
mount – montowanie urządzeń/zasobów w systemie plików (patrz niżej)
umount – odmontowanie zasobu z systemu plików (patrz mount)
dd – operacje io na dysku z pominięciem systemu plików.
mdadm – zarządzania urządzeniami md czyli software raid
Zarządzanie procesami[edytuj | edytuj kod]
at – jednorazowe wykonywanie polecenia w określonym czasie
chroot – uruchomienie programu ze zmienionym katalogiem głównym
cron – regularne uruchamianie programów w określonym czasie
fg – przeniesienie procesu uruchomionego w tle na pierwszy plan
kill – przekazanie sygnału do procesu (domyślnie usunięcie wskazanego procesu)
killall – zakończenie wykonywania wszystkich procesów o podanej nazwie
ps – pobieranie informacji o aktywnych procesach
top – wyświetla najważniejsze procesy
watch – monitorowanie wyniku polecenia
halt, poweroff, shutdown, reboot – wyłączenie lub restart systemu
nice zmienia priorytet procesów
 
 
 
Zarządzanie użytkownikami i systemem
 
login – logowanie do systemu
passwd – zmiana hasła
su – logowanie na konto innego użytkownika (patrz niżej)
sudo – uruchomienia aplikacji z uprawnieniami root
w – podobnie jak who, jednak zawiera więcej informacji
who – wypisanie listy zalogowanych użytkowników wraz z dodatkowymi informacjami o nich
whoami – pokazuje bieżący efektywny uid, czyli identyfikator użytkownika, z którego prawami działamy
Przetwarzanie tekstu[edytuj | edytuj kod]
cut – wycina określone znaki z wejścia (zazwyczaj z pliku)
grep – wypisywanie linii pasujących do wzorca
head – wypisanie pierwszych 10 linijek tekstu
more – rozwinięcie o sterowanie strumieniem
less – dla dużych ilości tekstów
tail – wypisanie ostatnich 10 linijek tekstu, także używane w diagnostyce (patrz niżej)
tee – wypisywanie danych wejściowych na standardowe wyjście i do dowolnej liczby plików
od – wypisywanie i formatowanie surowej wersji pliku
vi – edycja plików tekstowych
Operacje wejścia/wyjścia[edytuj | edytuj kod]
echo – druk na standardowe wyjście
printf – bardziej rozbudowane polecenie drukujące na standardowe wyjście.
read – wczytanie znaków z terminala
Inne[edytuj | edytuj kod]
clear – wyczyszczenie konsoli/terminala
mail – zarządzanie pocztą
man – podręcznik elektroniczny
xinit – uruchomienie środowiska X Window System
test – sprawdzanie typów plików i porównywanie wartości
 
 
 
Operatory (bash)
 
&& – wykonaj jeśli poprzednie polecenie zakończyło się sukcesem, np. `./configure && make bzImage`
 ; – bezwzględne wykonanie, np. `clear ; echo -e "Fajnie!"`
> – przekierowanie standardowego wyjścia (czyli to co program wypisze w konsoli) do pliku, np. `cat /proc/cpuinfo > ~/cpuinfo.txt`
< – przekierowanie do standardowego wejścia, np. `cat < /proc/cpuinfo`, jednak w efekcie to to samo co `cat /proc/cpuinfo` (w pierwszym przypadku dane wejściowe to plik skierowany na standardowe wejście, w drugim parametr przekazywany do programu, który znajduje, otwiera i czyta plik)
| – skierowanie standardowego wyjścia do potoku, który obsłuży program trzeci, np. `cat /etc/hosts | grep "192.168.0." | awk {print $1}`
& – wykonanie programu w tle, np. sudo synaptic &. Program taki nie podaje danych do terminala i pozostawia go możliwym do użycia.
`komenda` – wykonanie polecenie bashowego w trakcie wykonywania poprzedniego polecenia, np. `clear && echo -en "\033[1;31mInformacje o procesorze:\033[1;0m\n`cat < /proc/cpuinfo`\n"` – należy zwrócić uwagę na operator "`", przerywa on na chwilę działanie skryptu, wykonuje polecenie `cat` i kieruje standardowe wyjście w miejsce operatorów ``. Parametry programu echo – \033[y;xxm ustawiają kolory – y to kolor tła, x to kolor napisów.
 
 
 
Przykłady łączenia kilku poleceń
 
$ su -c "mount -t smbfs //inny_komputer/share /mnt/net_share; cp -r /mnt/net_share /home/uzytkownik/dane; chown uzytkownik:users -r /home/uzytkownik/dane; umount /mnt/net_share"
Podane polecenie skopiuje zawartość udostępnionych zasobów z inny_komputer, nada im odpowiednie prawa dostępu i potem odmontuje zasoby sieciowe. Wszystko jest wykonywane z poziomu roota, gdyż domyślnie tylko on może montować partycje i zasoby innych komputerów.
 
 
Zapoznamy się teraz z funkcjonowaniem podstawowych filtrów używanych w systemie Linux:
 
cat → wyświetla zawartość pliku
 
tail → wyświetla koniec pliku
 
head → wyświetla początek pliku
 
nl → numeruje wiersze pliku
 
more → wyświetlanie pliku strona po stronie
 
wc → liczy linie, słowa, i znaki
 
sort → uporządkowanie, fuzja plików
 
grep → poszukiwanie ciągu znaków w pliku
 
tr → prosta modyfikacja pliku
 
 
 
Polecenie   cat
 
Polecenie cat umożliwia wyświetlenie pliku a następnie zapisanie wyświetlonej zawartości – przy pomocy mechanizmu przekierowania – wybranego pliku w innym pliku.
 
Opcja → Funkcja:
 
-b → wyświetla numeracje wszystkich niepustych wierszy pliku
 
-E → wyświetla znak  $ na końcu każdego wiersza
 
-T → wyświetla znaki tabulacji  jako ^I
 
-v → wyświetla znaki niedrukowalne poza znakami tabulacji i znaku
 
-n → numeruje wszystkie wiersze
 
 
 
Polecenie head
 
Użycie polecenia head wyświetla nagłówek pliku. Często zdarza się, że plik, który użytkownik chce poddać edycji jest bardzo duży – zawiera kilkaset a nawet kilka tysięcy linii. Natomiast informacje których szuka użytkownik znajdują się w pierwszych liniach tekstu zawartego w pliku. Polecenie  head można przedstawić następująco:
 
head  -opcja  nazwa pliku
 
 
 
Opcje → Funkcje:
 
-c → wyświetla pierwsze N bajtów pliku
 
-n → wyświetla N pierwszych wierszy
 
-c N{a,b,c} → wyświetla pierwsze N blokow, odpowiednio 512 B, 1kB, 1Mb
 
Przećwiczmy zastosowanie polecenia head. W tym celu skorzystamy z dobrze znanego użytkownikowi  pliku  /etc/passwd oraz z konstrukcji potoku która szerzej omówimy w rozdziałach następnych:
 
 
 
Polecenie  tail
 
Jeżeli chcemy wyświetlić na ekranie końcowa zawartość pliku, powinniśmy skorzystać z dostępnego i stworzonego w tym celu polecenia tail. Poniżej znajduje się jego składnia i dostępne opcje.
 
tail     -opcja    nazwa pliku
 
 
 
Opcja → Funkcja:
 
-c → wyświetla ostatnie N bajtów
 
-f → nadzoruje wzrost pliku
 
-n → wyświetla N ostatnich wierszy
 
 
 
Polecenie  nl
 
Polecenie nl numeruje wiesze pliku. Załóżmy, że dysponujemy następującym plikiem poemat. Wyświetlimy go na ekranie przy pomocy polecenia cat
 
 
 
$ cat  poemat
 
 
 
Opadają kwasem wina
 
Liscie dębu i czeresni
 
I zza wody psi przylesni
 
Szczekaja jak mandolina
 
 
 
Bałałajke psiej tęsknoty
 
Uwiązali na łancuchu
 
Za to zdzierze-mgle na uchu
 
Dynda miesiac – kolczyk złoty
 
 
 
 
 
$ nl poemat #numeruje linie poematu
 
 
 
1 Opadają kwasem wina
 
2 Liście dębu i czereśni
 
3 I zza wody psi przyleśni
 
4 Szczekaja jak mandolina
 
 
 
5 Bałałajke psiej tęsknoty
 
6 Uwiązali na łańcuchu
 
7 Za to ździerze-mgle na uchu
 
8 Dynda miesiąc – kolczyk złoty
 
 
 
 
 
$ tail -3  poemat #wyświetla 3 ostatnie linie wiersza „poemat”
 
 
 
Uwiązali na łancuchu
 
Za to zdzierze-mgle na uchu
 
Dynda miesicc – kolczyk złoty
 
 
 
 
 
$ tail  +2  poemat #wyświetla od 2 lini do końca
 
 
 
Za to zdzierze-mgle na uchu
 
Dynda miesiac – kolczyk złoty
 
 
 
 
 
$ head -3 poemat #wyświetla 3 pierwsze linie
 
 
 
Opadaja kwasem wina
 
Liście debu i czeresni
 
I zza wody psi przylesni
 
 
 
Uwagi: Liczba liń branych pod uwagę przez polecenie tail i head wynosi 10
 
 
 
Co się dzieje gdy wystukamy (polecenie będące filtrem) bez żadnego argumentu, czyli bez nazwy pliku np.
 
$ wc +  [Enter] *
 
Polecenia zwane filtrami oczekują, że wprowadzimy jakieś dane możemy to zrobić i aby powrócić do lini poleceń i przerwać zapełnianie ekranu musimy wystukać jednocześnie  [ Carl ]+D
 
 
 
Polecenie  more
 
Często zdarza się, że edytowany przez użytkownika plik lub rezultat polecenia n.p ls –R / jest bardzo dużych rozmiarów i gdy jest wyświetlany na ekranie jego zawartość przelatuje przed oczyma użytkownika i widoczna jest jego końcowa część. Polecenie   more  umożliwia zapobiegać takim sytuacjom wyświetlając plik fragmentami ; przejście do następnego fragmentu następuje po naciśnięciu klawisza  spacja. Ogólna postać polecenia wygląda następująco:
 
more  [  opcja  ]  [ liczba wierszy ]  [ nazwa  pliku]
 
 
 
Opcja → Funkcja
 
-d → wyświetla komunikat: Press space to continue q to quit na końcu każdego wyświetlanego wiersza
 
-f → zlicza długie wiersze zapisane w kilku wierszach jako jeden wiersz
 
-l → ignoruje znak zmiany strony
 
-q → zatrzymuje wykonywanie polecenia more
 
-p → blokuje przewijanie ekranu
 
-s → zbiera wszystkie puste wiersze występujące po koleji w jeden pusty wiersz
 
-u → blokuje podkreślenia
 
-liczba wierszy → liczba wierszy która ma zostać jednorazowo
 
+numer wiersza → rozpoczyna wyświetlenie zawartości pliku od wiersza numer pliku
 
 
 
Polecenie    wc
 
Polecenie wc ( word count – licznik słów) wyświetla liczbę wierszy, liczbę słów i liczbę znaków zawartych w pliku. Ostatnia nazwa w danych wynikowych to nazwa pliku. Można zobaczyć tylko część danych wynikowych używając poniższych opcji
 
 
 
Opcja → Funkcja
 
-c → liczy znaki
 
-l → liczy wiersze
 
-w → liczy słowa
 
 
 
$  ls   |    wc  -l → liczy liczbę plików znajdujących się w katalogu – dlaczego
 
 
 
Polecenie    sort
 
Polecenie sort układa wiersze pliku w określonym porządku zgodnie z wartościami pewnych pól zawartymi w każdym pliku. Pola takie nazywamy kluczami sortowania np. kluczem sortowania w pliku zawierającym dane każdego obywatela może być numer Pesel lub nazwisko .
 
Klucze sortowania określane dla polecenia sort mogą być polami w których znajduje się ciąg znaków zakończony białą spacją  czyli znakiem tabulacji lub spacji, klucze sortowania mogą być także wyznaczane w oparciu o pozycje grupy  znaków w wierszu. Jeżeli pola są rozdzielone znakiem innym niż znak tabulacji trzeba w takim wypadku użyć   opcji -t i podać znak rozdzielający.
 
Na przykład w pliku passwd takim znakiem będzie  „:” . Jeżeli nie można podać jednoznacznie znaku rozdzielającego poszczególne pola w wierszu pliku to wtedy, to wtedy za pomocą zapisu  0.pozycja  znaku wyznaczyć początek i koniec klucza. Ważna funkcja polecenia sort jest funkcja łączenia plików, jest to możliwe pod warunkiem, ze pliki które chce się połączyć są juz uprzednio posortowane. W przypadku łączenia plików używamy opcji -m .Ogólna postać polecenia  sort ma następujący wygląd:
 
sort  [  - opcja  ]   [  plik  ]
 
 
 
Opcja → Funkcja:
 
-d → sortowanie w kolejności książki telefonicznej
 
-f → sortowanie nie rozróżniające małych i wielkich liter
 
-i → sortowanie ignorujące znaki spoza zakresu ASCII
 
-n → sortowanie najpierw w kolejności liczbowej , a potem alfabetycznej
 
-r → sortowanie odwracające kolejność danych wynikowych
 
 
 
root:x:0:0:root:/root:/bin/bash
 
bin:x:1:1:bin:/bin:
 
daemon:x:2:2:daemon:/sbin
 
shutdown:x:6:0:shutdown:/sbin:/sbin:/shutdown
 
halt:x:7:0:halt:/sbin:/sbin:/halt
 
ftp:x:14:50:FTP User:/home/ftp:
 
nobody:x:99:99:Nobody:/:
 
ola:x:519:504:Ola Pawlak:/home/ola:/bin/bash
 
 
 
$    sort  +3 –t’,’   liczba
 
1,un,one,ein                                                               8, huit,eight,acht
 
2,deux,two,zwei                                                           3,trois,three,drei
 
3,trois,three,drei                                                          1,un,one,ein
 
4,quatre,four,vier                                                         5,cinq,five,funf
 
5,cinq,five,funf                    →         sort        →             9,neuf,nine,neun
 
6,six,six,sechs                                                             6,six,six,sechs
 
7,sept,seven,sieben                                                     7,sept,seven,sieben
 
8,huit,eight,acht                                                           4,quatre,four,vier
 
9,neuf,nine,neun                                                          10,dix,ten,zen
 
10,dix,ten,zen                                                              2,deux,two,zwei
 
 
 
$  sort –n  liczba
 
1,un,one,ein
 
2,deux,two,zwei
 
3,trois,three,drei
 
4,quatre,four,vier
 
5,cinq,five,funf
 
6,six,six,sechs
 
7,sept,seven,sieben
 
8,huit,eight,acht
 
9,neuf,nine,neun
 
10,dix,ten,zen
 
 
 
$  sort  -t’,’ +3   liczba 8, 8,huit,eight,acht
 
3,trois,three,drei
 
1,un,one,ein
 
5,cinq,five,funf
 
9,neuf,nine,neun
 
6,six,six,sechs
 
7,sept,seven,sieben
 
4,quatre,four,vier
 
10,dix,ten,zen
 
2,deux,two,zwei
 
 
 
$  sort -t’,’ +1 -2
 
5,cinq,five,funf
 
2,deux,two,zwei
 
10,dix,ten,zen
 
8,huit,eight,acht
 
9,neuf,nine,neun
 
4,quatre,four,vier
 
7,sept,seven,sieben
 
6,six,six,sechs
 
3,trois,three,drei
 
1,un,one,ein
 
 
 
Polecenie uniq
 
Jak wiemy posortowane wyniki mogą zawierać powielone wiersze danych, czyli ten sam wiersz możw powtarzać sie 2 razy, za pomoca polecenia  uniq można takie powielone  wiersze usunąć.
 
 
 
Polecenie cut
 
Polecenie  cut (cut - ćiąć ) działa tak jak na to wskazuje nazwa, tnie wiersze pliku na częśći, które mogą byc nastepnie składane z powrotem w innym układzie. Polecenie cut działa na znakach lub na polach. Można również stosować te dwie metody jednocześnie.
 
 
 
Opcja → Funkcja:
 
-f → wskazuje pola które mają być wycięte
 
-d → zmiana separatora
 
-s → pozwala ignorować wiersze które nie zawieraja tabulacji lub separatora i nie wyświetla ich na standartowym wyjściu
 
 
 
Przećwiczmy polecenie sort i cut na konkretnym, przykładzie. Załóżmy, że dysponujemy plikiem nazwanym liczba który zawiera 10 wierszy a każdy wiersz zawi cztery kolumny które w różnych jezykach odliczają do 10. Separatorem każdej kolumny  jest  ",". Plik przedstawia się nastepująco:
 
 
 
$  cat  liczba
 
1,un,one,ein
 
10,dix,ten,zen
 
2,deux,two,zwei
 
3,trois,three,drei
 
4,quatre,four,vier
 
5,cinq,five,funf
 
6,six,six,sechs
 
7,sept,seven,sieben
 
8,huit,eight,acht
 
9,neuf,nine,neun
 
 
 
$  cut –f1,3  -d’,’
 
1,un,one,ein                                                  1,one
 
2,deux,two,zwei                                              2,two
 
3,trois,three,drei                                             3,three
 
4,quatre,four,vier                                            4,four
 
5,cinq,five,funf          →         cut          →          5,five
 
6,six,six,sechs                                                6,six
 
7,sept,seven,sieben                                         7,seven
 
8,huit,eight,acht                                              8,eight
 
9,neuf,nine,neun                                             9,nine
 
10,dix,ten,zen                                                 10,ten
 
 Opcja –f1,3 wskazuje, że wyselekcjonowane mają być kolumny  pierwsza i trzecia, opcja  -d wskazuje, ze separatorem kolumn jest   ",".
 
 
 
Polecenie paste
 
Polecenie paste (paste - sklej ) składa pliki na różne sposoby, przyjmuje jeden wiersz z jednego pliku i łaczy go z innym wierszem z innego pliku. Znak tabulacji jest zawsze domyślnym separatorem, mozna go jednak zmienić uzywając opcji  -d . Ogólna posatać polecenia  paste przedstawia sie nastepująco:
 
Paste   [ -opcja ]   [ plik1  ]   [plik2 ]
 
 
 
Opcja  → Funkcja:
 
-d  → sklej pliki korzystając z separatorów
 
-s  → sklej kolejne wiersze plików
 
--  → sklej dwa kolejne wiersze ze standarowego wejścia
 
-f  → wybiera kolumny do wyświetlenia
 
 
 
Polecenie  join
 
Polecenie join (join – łączyć) jest udoskonaloną wersją polecenia paste. Należy jednak pamiętać, że program ten działa tylko wtedy, kiedy łączone pliki mają wspólne pole. Polecenie  join rozpoczyna działanie od poszukiwania wspólnego pola w łączonych plikach, jeżeli takiego pola nie znajdzie, nic nie zostanie wyświetlone. Polecenie  join domyślnie oczekuje, że wspólnym polem obu plików będzie pole pierwsze. Aby polecenie  join działało skutecznie zaleca się sortowanie każdego z plików.
 
 
 
Polecenie  split
 
Polecenie split dzieli plik na części składające się z 1000 linii.
 
$  split  -500   plik1   maly
 
 
 
$ ls
 
plik1   malya malyb malyc
 
 
 
Polecenie grep
 
Polecenie grep (globally look for a regular expression and print – co na polski można przetłumaczyć: wyszukaj w pliku napisów spełniających wyrażenie regularne i wyświetl je) służy do znalezienia każdego wystąpienia słowa – ciągu znaków, frazy – w pliku utworzonym w systemie Linux. Ogólny wzór polecenia grep można przedstawić następująco:
 
grep  [ opcja ]   [ -e ]  [ wzór ]    [nazwa pliku]
 
 
 
Opcja → Funkcie
 
-b → wyświetla odnalezione miejsca
 
-c → wyświetla liczbe odnalezionych wyrażeń
 
-i → ignoruje różnice w wielkości liter
 
-l → wyświetla tylko nazy plików w których odnaleziony został wzór
 
-n → wyświetla numer każdego wiersza, w którym został odnaleziony wzór
 
-v → wyświetla tylko te wiersze, które nie zawierają wzoru
 
 
 
Przetestujmy polecenie grep na pliku, który przedstawia się następująco:
 
$ cat   poemat
 
Opadają kwasem wina
 
Liście dębu i czereśni
 
I zza wody psi przyleśni
 
Szczekaja jak mandolina
 
 
 
Bałałajke psiej tęsknoty
 
Uwiązali na łańcuchu
 
Za to zdzierze-mgle na uchu
 
Dynda miesiąc – kolczyk złoty
 
 
 
$  grep  ‘’psi’’  poemat
 
Opadają kwasem wina
 
Liście dębu i czereśni
 
I zza wody psi przyleśni
 
Szczekaja jak mandolina                                               ... I zza wody psi przyleśni
 
→          grep          →          Bałałajke psiej tęsknoty
 
Bałałajke psiej tęsknoty
 
Uwiązali na łańcuchu
 
Za to ździerze-mgle na uchu
 
Dynda miesiąc – kolczyk złoty
 
 
 
Polecenie  grep selekcjonuje z pliku linie zawierające poszukiwany ciąg znaków – w naszym przykładzie „psi”  - i wyświetla wskazane linie na ekranie. Opcja -i znosi różnice między małymi i dużymi literami. Jeżeli wystukamy:
 
$  grep  -i   ‘’za’’  poemat
 
I zza wody psi przyleśn
 
Za to ździerze-mgle na uchu
 
 
 
 
 
Opcja -c użyta z poleceniem grep umożliwia policzenie liczby liń zawartych w pliku (jakie inne polecenie wykonuje to samo ?).
 
$   grep  -c  poemat
 
8
 
 
 
Opcja  -n numeruje linie w pliku (jakie inne polecenie wykonuje to samo ? ).
 
$  grep  -n   poemat
 
1 Opadają kwasem wina
 
2 Liście dębu i czereśni
 
3 I zza wody psi przyleśni
 
4 Szczekaja jak mandolina
 
 
 
5 Bałałajke psiej tęsknoty
 
6 Uwiązali na łańcuchu
 
7 Za to ździerze-mgle na uchu
 
8 Dynda miesiąc – kolczyk złoty
 
 
 
 
 
Opcja -v wyświetla linie, które nie zawierają poszukiwanego ciągu znaków, w naszym pierwszym przykładzie, jeśli przed  „psi” dodamy  -v to otrzymamy:
 
$   grep  -v   ‘’psi’’  poemat
 
Opadają kwasem wina
 
Liście dębu i czereśni
 
Szczekaja jak mandolina
 
Uwiązali na łańcuchu
 
Za to ździerze-mgle na uchu
 
Dynda miesiąc – kolczyk złoty
 
 
 
Opcja -l jest użyteczna kiedy poszukujemy ciągu znaków w wielu plikach.
 
 
 
Polecenie  sed
 
Polecenie a właściwie edytor sed (ang. stream editor) czyli edytor strumienia linii jest narzędziem informatycznym używanym do wyszukiwania  - wg wzorca opartego zazwyczaj na regułach zdefiniowanych w wyrażeniach regularnych – linii w pliku, do ich zmieniania  wyświetlania na ekranie czy też skierowywania rezultatów manipulacji do nowego pliku. Ogólny wzorzec polecenia sed wygląda następująco:
 
sed  opcja  ‘wyszukiwany wzorzec’  nazwa_pliku
 
 
 
Trzeba pamiętać, że edytor sed pracuje tak jak każdy inny edytor z jednym bardzo ważnym wyjątkiem: pobiera polecenia w oparciu o nie przetwarza plik, ale zmiany nie są zapisywane do oryginalnego pliku. Zmodyfikowane dane przesyłane są na standardowe wyjście jako nowy plik. Dlatego też sed jest często używany jako filtr.
 
sed posiada następujące – główne- polecenia funkcje i opcje, których znaczenie przedstawiamy poniżej:
 
Opcje  → Funkcje
 
-e → pobierz polecenie edycji z wiersza polecenia
 
-n → nie wyświetlaj wynikowych wierszy (tzw tryb cichy)
 
-f → pobierz polecenia z pliku
 
 
 
Podajmy przykład:
 
$  sed  -n ‘polecenia edycji’  [ plik wejściowy  ]
 
 
 
Można zauważyć, że w pierwszym przypadku opcja -e nie jest potrzebna, ponieważ podane jest tylko jedno pole specjalne. Jeżeli chce się użyć więcej niż jednego polecenia wtedy skorzystać właśnie z opcji -e lub opcji -f. Polecenia edytora  sed  umieszczamy w apostrofach, ponieważ wiele z nich – jak się przekonamy – zawiera znaki specjalne i wyrażenia regularne. Zasada działania edytora sed jest następująca. Edytor pobiera wiersz z pliku i stosuje do niego wszystkie polecenia edycyjne w kolejności ich wpisywania.
 
 
 
Polecenie  → Opis
 
a → dołącz tekst w pliku wyjściowym
 
c → zastąp wybrane wiersze nowym tekstem
 
d → usuń wiersze z pliku i przejdź do następnego wiersza usuwane wiersze nie są wyświetlane
 
i\ → wstaw tekst w pliku wyjściowym -
 
p → drukuj określone wiersze z pliku (może być używane do wybrania wierszy z pliku)
 
h → skopiuj bieżący wiersz do bufora
 
q → wyście z edytora sed
 
r → wczytywanie wierszy z pliku i wyświetlanie ich na ekranie
 
! → zaprzeczenie liniom wyszukiwanym przez wzorzec
 
l → wyświetl wybrane wiersze
 
s → zastąp pierwszy napis drugim
 
 
 
Edytor  sed omówimy bardzo dokładnie w rozdziale 8, natomiast teraz przedstawimy kilka przykładów które umozliwią zrozumienie jak - to jedno z najbardziej skomplikowanych poleceń Linuksa -  funkcjonuje. Najprościej zrozumieć działanie edytora na podstawie przykładów. W tym podrozdziale przedstawimy kilka przykładów polecenia sed wykorzystującego funkcje  s czyli zastępowania. Załózmy że posiadamy w katalogu domowym plik o nazwie programowanie_bash w którym chcemy zamienić słowo  bash pisane z małej litery na Bash pisane z dużej litery.
 
$  sed  `s/bash/Bash/g`  programowanie_bash
 
 
 
Powyższe polecenia zastąpi wszystkie wystąpienia (tzw. znacznik  g) napisu bash napisem Bash we wszystkich wierszach pliku programowanie_bash. Pominięcie znacznika g   oznaczałoby zastąpienie tylko pierwszego wystąpienia napisu bash na bash w pliku. Jak widzimy ogólny wzór zastąpienia jednego ciągu znaków przez inny ciąg znaków wygląda następująco:
 
 
 
s/stary ciąg znaków/nowy ciąg znaków/
 
 
 
s/stary ciąg znaków/nowy ciąg znaków/g → g oznacza zastąp wszystkie wystąpienia wzorca znaków
 
 
 
s/stary ciąg znaków/nowy ciąg znaków/p → p  oznacza wyświetl wiersz po wykonaniu zastąpienia
 
 
 
 
 
Warto w tym podrozdziale zapoznać się także z opcją d usuwania wierszy. Jeżeli chcemy usunąć z pliky 10 pierwszych wierszy to polecenie sed będzie miało następującą postać:
 
 
 
$  sed  `1,10d`  programowanie_bash
Znak  ^  oznacza początek linii .
Znak  $  oznacza koniec linii.
 
 
 
 
 
Następujące polecenie usunie wszystkie puste wiersze z pliku:
$  sed `/^$/d`  programowanie_bash
 
 
 
Polecenie  tr
Polecenie tr (translate ) umożliwia zmianę standardowego wejścia znak po znaku  a nie wiersz po wierszu. Ogólna postać polecenia tr jest nieco inna od tej do której przyzwyczaił się już zapewne czytelnik. Należy koniecznie pamiętać o tym, że struktura polecenia  tr  pozwala jedynie na podanie dwóch zestawów znaków, ale nie nazwy pliku.
tr   [ nazwa znaków ]  [ nowa nazwa znaków ]
 
 
 
Nazwę pliku podajemy poleceniu przekierowując wejście
tr    [ nazwa znaków ] [ nowa nazwa znaków ]  <  plik1  > plik2
 
 
 
Załóżmy że dysponujemy plikiem o nazwie plik1, którego zawartość wygląda następująco:
$ cat  plik1
warszawa
paryz
praga
moskwa
 
 
 
Aby nazwy stolic pisać tylko dużymi literami należy w następujący sposób użyć polecenia tr:
$  tr  ‘[a-z]  ‘ [A-Z]   <  plik1   > plik2
 
 
Opcja → Funkcja:
-d → wymazanie pewnych znaków
-s → wymazanie powtórzeń
 
 
 
Podajmy kilka przykładów wyjaśniających działanie polecenia tr i opcji:
$  tr   ‘a,/’   ‘A;_’   <  plik1   > plik2
$ tr  -s  ‘ ‘  <  plik1   >  plik2
 
 
 
lower → wszystkie znaki z małej litery

upper → wszystkie znaki z dużej litery

print → wszystkie znaki drukowane
punct → znaki przystankowe
space → wszystkie odstępy
alnum → znaki alfanumeryczne
digit → tylko cyfry
cntrl → znaki kontrolne
alpha → tylko litery
graph → znaki drukowalne oprócz odstępów
$  tr  ‘[:lower:]’   ‘[:upper:]’  <  plik1  > plik2