Każdy użytkownik komputera w trakcie wykonywania codziennych czynności, takich jak sprawdzanie poczty, kopiowanie zdjęć z aparatu, tworzenie kopii zapasowych, napotyka na problemy, których rozwiązanie wydaje się być skomplikowane lub wymagać pewnego wyspecjalizowanego programu. Celem tego artykułu będzie pokazanie, że większość takich czynności da się wykonać bardzo prosto, szybko i sprawnie, korzystając z narzędzi oferowanych przez środowisko GNU/Linux.
Uwaga! Przykłady działają również w systemach Mac OS X (standardowo) oraz Windows (po doinstalowaniu np. Cygwina). Nie wszystkie
Nie jest to lista zebranych z Internetu przykładów, a napisane przeze mnie fragmenty, które uważam, że każdy powinien znać (nie tylko po to, żeby uprościć sobie życie, ale również ze względów bezpieczeństwa). Dla tych mniej świadomych – niektóre przykłady mogą być zaskakujące, ale działają!
Spakowanie i skompresowanie zawartości katalogu
$ tar -c Obrazy/ -vzf Obrazy.tar.gz |
Spowoduje spakowanie katalogu Obrazy/ korzystając z kompresji gzip (opcja -z), wypisywanie szczegółów (listy plików). Plik wynikowy zostanie zapisany w pliku Obrazy.tar.gz
Rozpakowanie archiwum
$ tar -zvxf Obrazy.tar.gz |
Dekompresja (-z), rozpakowanie (-x), wypisywanie szczegółów (listy plików) (-v) archiwum Obrazy.tar.gz (-f).
Sprawdzenie rozmiaru katalogu
Wyświetli czytelny dla człowieka (-h) rozmiar katalogu Obrazy
Wylistowanie rozmiaru wszystkich plików wewnątrz katalogu
Wyświetli czytelny dla człowieka (-h) rozmiar wszystkich plików i katalogów wewnąrz Obrazy/. Dla plików listowany będzie ich rozmiar, dla katalogów podsumowanie (rozmiar zawartości).
Wylistowanie dziesięciu największych plików/katalogów w podanej lokalizacji
$ du -m Obrazy/ | sort -n -k1 | tail |
Poda rozmiar w MiB (-m) dziesięciu największych plików/katalogów w Obrazy/.
Przesłanie pliku do innego komputera w sieci
$ nc -l -p 9999 -vvv < Obrazek.jpg |
Spowoduje rozpoczecie nasłuchiwania na porcie nr 9999 i w momencie nawiąznia połączenia – przesłanie pliku o nazwie Obrazek.jpg.
Odbieranie pliku z innego komputera w sieci
$ nc 192.168.1.100 9999 > Obrazek.jpg |
Otwarcie połączenia z komputerem o adresie IP 192.168.1.100 na porcie nr 9999 i zapisanie wysyłanej treści w pliku Obrazek.jpg.
Przesłanie katalogu lub wielu plików do innego komputera w sieci
$ tar -c Zdjęcia/ -zf - | nc -l -p 9999 -vvv |
Spakowanie i skompresowanie katalogu Zdjęcia/ i zapisanie rezultatu archiwum na standardowe wyjście, następnie przekierowanie go do programu nc, który nasłuchuje na porcie 9999 (po nawiązaniu połaczneia nastąpi transmisja danych).
Odebranie archiwum z innego komputera w sieci
$ nc 192.168.1.100 9999 > archiwum.tar.gz |
Jak w przykładzie z obrazkiem…
Odebranie i jednoczesne wypakowanie archiwum z innego komputera w sieci
$ nc 192.168.1.100 9999 | tar -zvxf - |
Spowoduje wypakowanie (w bieżącym katalogu) archiwum transmitowanego z komputera o adresie IP 192.168.1.100…
Masowa zmiana rozmiaru zdjęć
$ mkdir male
$ convert -resize 800x600 *.JPG male/zdjecia-z-wakacji.jpg |
Uruchomienie powyższego przykładu spowoduje utworzneie katalogu o nazwie male oraz zmianę rozmiaru wszystkich obrazków (do wielkości 800×600) o nazwie pasującej do *.JPG i zapisanie ich w katalogu male/ z nazwą zdjęcia-z-wakacji.jpg (z automatyczną numeracją).
Tworzenie dokumentu PDF z wielu zdjęć
$ convert -page A4 strona-1.jpg strona-2.jpg ksero-dowodu.jpg wniosek.pdf |
Tworzymy dokument PDF (rozmiar A4) o nazwie wniosek.pdf z plików: strona-1.jpg strona-2.jpg ksero-dowodu.jpg.
Historia uruchamiania systemu
Szczegółowa historia logowań użytkowników (wraz z historią uruchamiania systemu)
Wyświetli dokładną datę logowania/wylogowania użytkowników oraz daty włączenia/wyłączenia systemu.
Data ostatniego uruchomienia systemu
$ last -F reboot | head -n1 |
Daty logowania/wylogowania konkretnego użytkownika
$ last -F nazwa_uzytkownika |
Lista podłączonych dysków/pamięci i ich partycji
Formatowanie partycji na FAT32 + ustawienie nazwy
$ mkfs.vfat -F32 -n "MojaNazwa" /dev/sdb1 |
Uwaga! Należy upewnić sie, że partycja /dev/sdb1 jest na pewno tą, którą chcemy sformatować (patrz przykład wyżej).
Wyświetlenie plików/katalogów które mogą być zmodyfikowane lub usunięte przez dowolną osobę
Wyszuka w katalogu ~/ (katalog domowy zalogowane użytkownika) wszystkie pliki i katalogi które mają ustawiony bit zezwolenia na zapis dowolnej osobie.
Wyświetlenie plików/katalogów które mogą być zmodyfikowane lub usuniete przez dowolną osobę i natychmiastowa zmiana uprawnień na bezpieczne
$ find ~/ -perm -o=w -execdir chmod -v o-w '{}' \; |
Usunięcie wszystkich plików do których mamy prawo do zapisu ale nie jestesmy ich właścicielami
$ find / \( \( -not -user $(id -u) -and -not -group $(id -g) -and -perm -o=w \) \
-or \( -not -user $(id -u) -and -group $(id -g) \
-and \( -perm -g=w -or -perm -o=w \) \) \) \
-okdir rm -rv '{}' \; |
Przy każdym pliku/katalogu mamy dodatkowo możliwość zadecydownia czy go usunąć (-okdir). Nie róbcie tego poza domem
Usunięcie wszystkich plików *.o z projektu
$ find Projekt/ -name \*.o -delete -print |
Znalezienie plików zmodyfikowanych przez ostatnie 3 godziny i skopiowanie ich na pendrive
$ find ~/ -mtime 3 -execdir cp -v '{}' /media/pendrive \; |
Test zabezpieczenia przed fork bombą
$ echo ZigpIHsgZiB8IGYmIH07IGYgPiAvZGV2L251bGwgMj4mMSAmCg== | base64 -d | bash |
Test może okazać się jednorazowy
Stworzenie obrazu ISO płyty CD/DVD
$ dd if=/dev/cdrom of=Obraz.iso bs=1M |
Utworzenie obrazu ISO9660 z urzadzenia /dev/cdrom, zapisanie go w pliku Obraz.iso, za rozmiar bloku (odczytu i zapisu) przyjmujemy 1M
Stworzenie obrazu ISO płyty CD/DVD + pasek postępu
$ dd if=/dev/cdrom bs=1M | pv -pterb > Obraz.iso |
Jak wyżej…
Kopiowanie katalogu na pendrive + pasek postępu
$ tar -c Obrazy/ -f - | pv -pterb | tar -C /media/pendrive -xf - |
Przesłanie archiwum przez sieć + pasek postępu
$ pv -pterb archiwum.tar | nc 192.168.1.100 9999 |
Tworzenie obrazu karty sd/pendrive/dysku (razem z tablicą partycji)
$ dd if=/dev/sda of=sda.image bs=1M noerror |
Dodajemy pasek postępu:
$ dd if=/dev/sda bs=1M noerror | pv -pterb > sda.dd |
Nagranie obrazu na urządzenie:
$ pv -pterb sda.dd | dd of=/dev/sda bs=1M noerror |
Zerowanie dysku (wraz z tablicą partycji)
$ dd if=/dev/zero of=/dev/sda bs=4M |
Przesłanie (na żywo) dźwięku z mikrofonu do innego komputera
$ arecord | nc 192.168.1.100 9999 |
Odsłuchanie na komputerze 192.168.1.100:
Test prędkości odczytu z dysku twardego/pendrive/karty
$ sudo hdparm -t /dev/sda |
Wykresy prędkości przesyłu danych w sieci
Lista wszystkich połączeń TCP/UDP wraz z procesami, które ich używają
$ netstat -tup --numeric-ports |
Ta lista będzie coraz większa…
Świetny zbiór poleceń. Oczywiście udał się elment zaskoczenia ze względu na zmiane rozmiaru zdjęć.
Lista świetna, teraz by się przydał plik, któremu podajemy co chcemy zrobić a on dobiera polecenia np. zlecam pakuj obrazy/*.jpg /archiwum/moje.gzzlecam rozmiar /obrazy/*.jpg 800×600