Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

so:misc

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

 

Sprawdzanie czym jest komenda / gdzie jest plik wykonywalny

Rozwiązywanie ścieżek do bezwzględnych

# Bezwzględna ścieżka do katalogu w którym jest skrypt:
SCRIPTDIR=$(dirname "$(realpath "$0")")

Zamki (muteksy) w shellu

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.

Tworzenie tymczasowych plików

Program mktemp pozwala tworzy nowy tymczasowy plik. Można podać katalog w jakim ma być stworzony ten plik (-p), zażądań tworzenia katalogu zamiast pliku (-d) i podać szablon nazwy pliku. Ścieżka do nowo stworzonego pliku jest wypisywana na standardowe wyjście.

MYPROG_TMPFILE="$(mktemp -p /home/student "myProg_XXXXX.tmp")"

ulimit

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

Multipleksery terminala pozwalają m. inn. na:

  • uruchomienie powłoki, odłączanie się od niej i ponowne dołączanie do niej (sesje)
  • uruchomienie wielu powłok w jednej sesji i przełączanie się między nimi
  • dzielenie ekrany na kilka obszarów i uruchomienie w każdym powłoki

Multipleksery terminala są standardowym narzędziem przy pracy ze zdalnymi maszynami. Przykładowe popularne:

Skrócona instrukcja obsługi tutaj.

mc

Midnight Commander, uruchamiany poleceniem mc, jest menadżerem plików z tekstowym interfejsem użytkownika.

Porównywanie plików

  • cmp zwraca czy pliki są identyczne
  • diff pokazuje różnice między plikami lub rekurencyjnie między pliki w katalogach
  • comm dla odpowiednio posortowanych plików pokazuje linie które są tylko w pierwszym w obu i tylko w drugim pliku
  • vbindiff i dhex porównują pliki binarne

Patch

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.

Identyfikacja i metadane plików

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.

Użycie miejsca na dysku

  • df [-h] wyświetla zajętość dysków
  • du [-h] [-s] [-x] podaje rozmiar plików i (rekurencyjnie) sumę rozmiarów plików w katalogu
  • ncdu [-x] odpala wygodny tekstowy interfejs z wynikami podobnymi jak du
  • quota wyświetla limity użycia dysków; np:
    LANG= quota -pws | tail -n+2 | column -to' | '

Uwaga: narzędzia liczące rozmiar katalogu różnie rozwiązują problem zwykłych dowiązań i kompresji systemów plików.

Kompresja 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).

Pakowanie plików do archiwum

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 tar1):

  • tar cf nazwa_archiwum.tar [lista_plików]... tworzy archiwum bez kompresji
  • tar czf … / tar cjf … / tar cJf … / tar cf nazwa --zstd … tworzy archiwum i używa gzip/bzip2/xz/zstd do kompresji stworzonego archiwum
  • tar caf nazwa.tar.rozszerzenie tworzy archiwum i zgaduje jak skompresować archiwum po rozszerzeniu
  • tar tf nazwa testuje (listuje) pliki w archiwum, automatycznie wykrywa kompresję;
    tar tvf … dodaje szczegółowe informacje
  • tar xf nazwa wypakowuje pliki z archiwum, automatycznie wykrywa kompresję

Standard POSIX definiuje format i program pax, który jednak nie zdobył popularności.

Konwersja kodowania plików tekstowych

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).

Konwersja obrazów / dźwięku / wideo

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.

Wyświetlanie "grafiki" w konsoli

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.

Pobieranie plików z Internetu

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.

Obsługa standardowych formatów plików tekstowych

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).

"Nagrywanie" terminala

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.

OpenSSL

OpenSSL (i jego forki) udostępniają konsolową komendę openssl pozwalającą wykonywać wiele operacji związanych z szeroko pojętą kryptografią – szyfrować dane, generować klucze, wyświetlać informacje o certyfikatach, liczyć sumy kontrolne, szukać liczb pierwszych, generować liczby losowe, etc.

Programy md5sum, shasum, sha1sum, sha256sum, sha512sum itp. liczą sumy kontrolne.
Program mkpasswd przerabia hasło na jego solony skrót.

1) Ze składnią opcji w stylu BSD
so/misc.txt · ostatnio zmienione: 2023/06/05 12:48 przez jkonczak