Dydaktyka:
FeedbackTo jest stara wersja strony!
Te materiały mają pokazać przykładowe narzędzia często używane do ułatwienia pracy z powłoką, często używane w skryptach, i realizujące często potrzebne funkcje.
Wybór kategorii narzędzi i rodzajów narzędzie jest mocno subiektywny
command -v
oraz command -V
# Bezwzględna ścieżka do katalogu w którym jest skrypt: SCRIPTDIR=$(dirname "$(realpath "$0")")
W Linuksie jest mechanizm zamków na plikach. Użycie zamków jest dobrowolne – jeżeli program nie zażąda zamku na
pliku, to dostanie dostęp do pliku niezależnie od tego czy zamek jest dostępny
czy zajęty.
Z powłoki można zakładać zamki (readers-writers lock) na czas wykonania podanego
polecania programem flock
.
Polecenie ulimit
pozwala ustawiać limity na np. ilość otwartych plików, ilość użytej
pamięci operacyjnej, zużyty czas procesora przez bieżącą powłokę i wszystkie jej
procesy potomne.
Polecenie ulimit -a
wyświetli bieżące wartości limitów z opisem czego dotyczą.
Multipleksery terminala pozwalają m. inn. na:
Multipleksery terminala są standardowym narzędziem przy pracy ze zdalnymi maszynami. Przykładowe popularne:
Skrócona instrukcja obsługi tutaj.
Midnight Commander,
uruchamiany poleceniem mc
, jest menadżerem plików z tekstowym interfejsem
użytkownika.
Program patch
nakłada wynik programu diff
.
Np: diff -u oryginał poprawiony_plik > łatka
wyprodukuje łatkę,
a komenda (wykonana np. na innym komputerze) patch < łatka
wprowadzi
zmiany wskazane w pliku łatka do pliku oryginał.
Do generowania i aplikowania różnic plików binarnych służą inne narzędzia, np. xdelta
.
Program file
na podstawie treści pliku określa rodzaj pliku ( np.
"PDF document, version 1.7, 172 pages
",
"PNG image data, 600 x 688, 8-bit/color RGBA, non-interlaced
",
"C source, ASCII text
").
file -i
określa typ MIME i kodowanie znaków
Program exiftool
odczytuje metadane
plików; uwaga: nazwa jest myląca – narzędzie obsługuje wiele formatów plików
niebędących obrazami, np. PDF, mp3, pliki pakietu Microsoft Office.
Dla niektórych formatów potrafi zmieniać metadane.
df [-h]
wyświetla zajętość dyskówdu [-h] [-s] [-x]
podaje rozmiar plików i (rekurencyjnie) sumę rozmiarów plików w kataloguncdu [-x]
odpala wygodny tekstowy interfejs z wynikami podobnymi jak du
Uwaga: narzędzia liczące rozmiar katalogu różnie rozwiązują problem zwykłych dowiązań i kompresji systemów plików.
Do kompresji służą między innymi programy (i pojawiają się wciąż nowe): gzip
,
bzip2
, xz
, zstd
, ...
Standardowo przełącznik -d
dekompresuje a -k
zachowuje oryginał.
Zwyczajowo z programami kompresującymi są instalowane wersje programu cat
,
grep
, less
, diff
które potrafią działać na skompresowanych
plikach, np: zcat
, zgrep
, zless
, zdiff
(gzip), bz…
(bzip2),
xz…
(xz), zstd…
(zstd).
W systemach uniksopodobnych zwykle inny program zajmuje się kompresją, a inny
tworzeniem archiwum.
Do archiwów (plików zawierającego inne pliki) jest używany powstały w latach
70tych program i format tar
(i czasami, choć rzadko, powstały jeszcze wcześniej
cpio
).
Program tar
pozwala, przy użyciu dodatkowych przełączników, automatycznie
skompresować stworzone archiwum wykorzystując wskazany przełącznikiem program
do kompresji.
Przykłady użycia komendy tar
1):
tar cf nazwa_archiwum.tar [lista_plików]...
tworzy archiwum bez kompresjitar czf …
/ tar cjf …
/ tar cJf …
/ tar cf nazwa --zstd …
tworzy archiwum i używa gzip/bzip2/xz/zstd do kompresji stworzonego archiwumtar caf nazwa.tar.rozszerzenie …
tworzy archiwum i zgaduje jak skompresować archiwum po rozszerzeniutar tf nazwa
testuje (listuje) pliki w archiwum, automatycznie wykrywa kompresję; tar tvf …
dodaje szczegółowe informacjetar xf nazwa
wypakowuje pliki z archiwum, automatycznie wykrywa kompresję
Standard POSIX definiuje format i program pax
, który jednak nie zdobył popularności.
Program iconv
pozwala zmienić kodowania plików, np.
iconv -f cp1250 -t utf-8 [plik_źródłowy] [-o plik_docelowy]
zmieni plik źródłowy korzystający ze starej strony kodowej MS Windows dla Europy
Środkowej do kodowania UTF-8.
Programy dos2unix
, unix2dos
, mac2unix
, unix2mac
zmieniają znaki
końca linii między \r\n
(dos=Windows), \n
(unix) i \r
(mac=starożytne Mac OS).
ImageMagick jest powszechnie dostępnym zbiorem narzędzi do
konwersji, prostej wsadowej przeróbki i łączenia obrazów. Składa się m. inn. z
narzędzia convert
(magick
), montage
oraz identify
.
Najprostsza przykładowa komenda przerabiająca png na jpg: convert x.png x.jpg
ffmpeg
jest jednym z częściej używanych narzędzi do konwersji
plików audio/wideo.
Najprostsza przykładowa komenda przerabiająca mp4 na webm: ffmpeg -i x.mp4 x.webm
.
Poza możliwością przerobienia obrazu na tekst (aalib i libcaca), niektóre emulatory terminala pozwalają rysować pojedyncze piksele używając odpowiednich sekwencji znaków (sixel).
Pozwala to np. na wykonanie komendy convert x.jpg sixel:-
która wstawi w
konsolę obraz lub mpv --vo=sixel --ao=null --quiet x.mp4
która odtworzy
w konsoli wideo.
Taka możliwość jest czasami przydatna przy pracy z plikami na zdalnej maszynie.
Programy wget
i curl
są popularnymi narzędziami
do m. inn. pobierania wskazanych adresów URL.
wget
domyślnie zapisuje ściągnięte dane do pliku i wyświetla postęp
pobierania, curl
domyślnie pobrane dane wypisuje na standardowe
wyjście. Działanie obu programów jest wysoce konfigurowalne opcjami.
Program yt-dlp
jest
uzupełnieniem dla powyższych programów pozwalając pobierać strumieniowane
audio / wideo.
Dla plików w typowych formatach (json, yaml, xml, html, …) dostępnych jest
wiele narzędzi konsolowych, przez narzędzia porządkujące plik i sprawdzające
jego poprawność (np. tidy
),
pozwalające ponadto wykonywać proste selekcje z pliku (np.
xmllint
),
aż po zaawansowane przetwarzanie takich plików (np.
jq
).
Do zapisu wszystkich działań w terminalu do pliku może posłużyć program
script
bądź jego
następcy – ttyrec
lub bazujący
na technologiach webowych do odtwarzania asciinema
.
Do tworzenia kodu html tekstu wyświetlanego na terminalu na tej stronie
wykorzystywany był najpierw tmux
z dodaną komendą wzorowaną na hardcopy ze
screen (tylko z zachowaniem kolorów):
bind H capture-pane -e \; save-buffer ~/tmux.hardcopy \; delete-buffer
oraz narzędzie ansifilter
z przełącznikami -fH
wypluwające gotowy kod html z takiego hardcopy.