Przydatne polecenia Unix
Razem z najważniejszymi opcjami, w kolejności z grubsza od najważniejszych.
Tekst
echo– wypisywanie linii (napis ze specjalnymi znakami można dostać tak:echo $'a\tb\nc').cat– konkatenacja, wypisywanie wejścia na wyjście bez zmian.head– wypisanie pierwszych 10 linii (-n 42liczba linii,-n -2wypisze aż do przedostatniej,-c 42liczba bajtów).tail– wypisanie ostatnich 10 linii (jak wyżej,-n +2wypisze zaczynając od drugiej linii).less– pokazanie dłuższego tekstu w przewijalny sposób (woła goman); wychodzi się klawiszemq, szuka klawiszem/.
cut– wypisanie wybranych fragmentów linii (-f2: drugi fragment,-d' ': między spacjami jako delimiter).sort– sortowanie ,-nnumerycznie,-hdla rozmiarów plików z jednostkami (takich jak wypisuje np.du -h),-k2sortowanie po drugiej kolumnie.uniq– deduplikacja ciągów identycznych linii (zazwyczaj trzeba najpierw posortować),-czlicza.diff– sprawdzanie różnic.tr– (od translate) zamiana znaków na inne, np.tr '\n' ' 'zmieni końce linii na spacje.wc– (od word count) liczenie linii, słów, znaków.seq– wypisywanie ciągów liczb.
Wyszukiwanie:
grep– wyszukiwanie w plikach (regexami)-i: ignore case (wielkość liter)-r: rekurencyjnie wchodzi we wskazane ścieżki-v: wypisz odwrotnie, czyli nie-matchujące linie-l: wypisz tylko nazwy matchujących plików-o: wypisz tylko matchującą część-A,-B,-C: wypisz match razem ze wskazaną liczbą linii After (po) / Before (przed) / Context (przed i po).
rg– nowocześniejszy, szybki rekurencyjny grep.find– znajdowanie plików;- bez opcji wypisuje rekurencyjnie wszystkie pliki we wskazanych ścieżkach;
-exec: wykonuje wskazane polecenie dla każdego matchu, np.find -exec head -n 1 {} \;wypisze pierwsze linie (pod{}będzie podstawiona ścieżka, a polecenie trzeba zakończyć znakiem średnika);- bardzo dużo innych opcji, patrz przykłady na wiki.
locate– szybkie wyszukiwanie pliku po nazwie (z indeksu aktualizowaniego poleceniemupdatedb).sed s/foo/bar/g– search&replace w pliku (patrz wiki);- przykład z regexem i użyciem grupy (nr 1) w nawiasach:
sed 's/foo\(.*\)bar/\1\1/g'zamienifooxyzbarnaxyzxyz.
- przykład z regexem i użyciem grupy (nr 1) w nawiasach:
awk– potężniejsze narzędzie do przetwarzania tekstu; mniej ważne, ale często przydaje się jedna prosta rzecz: wypisanie fragmentu oddzielonego ciągem spacji nieokreślonej długości (czegocutnie potrafi) – np.awk '{ print $2 }'wypisze drugą kolumnę tabelki wyrównanej spacjami (wypróbuj na wyjściups).
System plików
cdls-l-h(human-readable rozmiary plików);treecp-r(rekurencyjnie)-a(z zachowaniem czasów i uprawnień) ,mv,rm,mkdir,rmdir.touch– zmienia czas modyfikacji (metadaną pliku), tworzy pusty plik jeśli go nie ma.ln -s– tworzenie linków symbolicznych (skrótów).
tar– tworzenie archiwów (zbiorów katalogów i plików, razem z ich metadanymi). Odnośnie opcji patrz xkcd.- tworzenie:
tar -czf foo.tar.gz foo/(create) - rozpakownie:
tar -xzf foo.tar.gz(extract) - tar domyślnie nie kompresuje (podejście one tool one job), stąd opcja
-z(wołagzip) i roszerzenie.tar.gz. - archiwum o nazwie
foo.tar.gzpowinno zawierać jeden katalogfooi wszystko w nim; inaczej rozpakowanie robi bałagan, tzw. tarbomb. - Moodle (jak załączacie rozwiązania różnych zadań) czasem nie przyjmuje plików
.tar.gz, tylko.tgz.
- tworzenie:
df -h– wolne miejsca na dyskach (pydf– nowocześniejsza wersja).du -h --max-depth=1– ile w sumie zajmują katalogi (dust– nowocześniejsza wersja;filelight– GUI).
Inne
ps,pstree,top(htop),kill,pgrep,pkill– informacje o działających procesach i ich ubijanie.time– mierzy czas wykonania innego polecenia.watch– uruchamia co 2s wskazane polecenie i pokazuje aktualny wynik.bc -l– prosty kalkulator.curl– pobieranie plików/robienie zapytań HTTP.file– mówi jakiego typu jest wskazany plik (np. plik zip któremu ktoś błędnie nadał nazwęfoo.rar).enconv– encoding conversion,-g(guess) wypisuje tylko zgadnięte kodowanie (np. UTF-8);dos2unixzamienia końce linii.hexdump– pokazywanie plików binarnych;strings– heurystyczne znajdowanie napisów w pliku binarnym.chmod,chown,chgrp– zmiania uprawnień, właściciela, grupy (patrz wiki).