Skip to content

Instantly share code, notes, and snippets.

@chajr
Last active May 28, 2024 05:43
Show Gist options
  • Save chajr/56cebd4be19b09f52b65 to your computer and use it in GitHub Desktop.
Save chajr/56cebd4be19b09f52b65 to your computer and use it in GitHub Desktop.

Polecenia konsoli Linux

Operacje na plikach i katalogach

  • pwd - aktualny katalog
  • ls -la - listuje wszystkie dostępne pliki
  • ls -lat - listuje wszystkie dostępne pliki posortowane według czasu modyfikacji
  • cp -r {nazwa pliku/katalogu} {miejsce docelowe} - kopiuje plik lub cały katalog z zawartością we wskazane miejsce
  • mv {nazwa pliku/katalogu} {miejsce docelowe} - przenosi plik lub cały katalog z zawartością we wskazane miejsce (jeśli lokalizacja pliku docelowego jest taka sama jak pliku do przeniesienia, zmienia nazwę)
  • du -sh - pokazuje zajętość całego katalogu
  • du -sh * - pokazuje rozmiar poszczególnych plików i katalogów
  • du -sh `ls -A` - pokazuje rozmiar wszystkich (w tym ukrytych) plików i katalogów (można też użyć $(ls -A))
  • du -sh .[!.]* - jak powyżej
  • du -hs .[^.]* - pokazuje rozmiar wszystkich ukrytych plików
  • du -ah - pokazuje zajętość wszystkich plików w katalogu
  • ls -ld .* - wyświetla wszystkie ukryte pliki i katalogi
  • ls -li /etc | sort -n - sortuje listę plików względem ich węzłów
  • df -h - pokazuje zajętość wszystkich dysków
  • df -a - pokazuje zajętość wszystkich urządzeń
  • df -hT - pokazuje zajętość punktu montowania wraz z systemem plików
  • chmod 0755 {nazwa pliku/katalogu} - zmiana praw dostępu (4-read, 2-write, 1-execute)
  • chmod ugo-x {nazwa pliku/katalogu} - odbiera prawa wykonywania wszystkim użytkownikom (user, group, other)
    • chmod g=-w;o=-w {plik}
    • chmod go=-w {plik}
    • chmod u+x {plik}
    • u+s - ustawia setuid (lub chmod 4755 -> rwsr-xr-x)
    • g+s - ustawia setgid (lub chmod 2644 -> rw-r-s-r--)
    • o+t - ustawia sticky (lub chmod 1777 -> rwxrwxrwt)
  • chown user:group {nazwa pliku/katalogu} - właściciela i grupy
  • ls | wc -l - liczba plików i katalogów w aktualnym katalogu
  • tree - drzewo katalogów i plików
  • tree -ugphD - drzewo katalogów i plików wraz z informacjami o plikach i katalogach
  • find -iname {nazwa pliku} - szuka podanego pliku bez uwzględnienia wielkości liter
  • find -size +100M - szuka plików powyżej 100mb
  • find / {pattern} - wyszukuja podanego wzorca w głównym katalogu i podkatalogach
  • find . -maxdepth 1 -name '*.json' -delete - usuwa dużą ilość plików z rozszerzeniem *.json
  • find . -type f -ctime -2 -print0 - pokazuje pliki utworzone w ciągu 2 dni i wyświetla jako linia (+1 starsze niz 2 dni)
    • f - plik
    • d - katalog
    • c - specjalny plik znakowy
    • p - plik fifo (named pipe)
    • l - link
    • s - socket
    • -user - użytkownik (-group)
    • -atime -mtime -ctime - czasy modyfikacjo, dostępu etc
  • find {dir} -type f -mtime +10d -exec rm {} ; - kasuje pliki starsze niż 10 dni (rm {} - nawiasy zastępowane nazwą pliku)
  • find {katalog}/ -size +1G -exec bash -c "ls -lh '{}'" ; - wyszukuje pliki większe niż 1GB i listuje je w outpucie
  • **find {dir} -type d -exec sh -c '{program} $0/*' {} ; - wykonuje program dla wszystkich plików w katalogu
    • -ok rm {} ; - pyta czy usunąć plik
    • find . -inum {węzeł} -ok rm {} ; - kasowanie pliku z uszkodzoną nazwą (ls -i - zwróci numer węzła pliku)
    • find / –perm –4000 - znajduje pliki z ustawionym setuid
  • find . -type l ! -exec test -e {} ; -print - wyszukuje zepsute symlinki
    • find . -type l ! -exec test -e {} ; -print0 | xargs -0 rm - wyszukuje i automatycznie kasuje zepsute symlinki
  • cksum {nazwa pliku} - pokazuje sumę kontrolną CRC i rozmiar pliku
  • ln -s {cel} {nazwa} - tworzy link do pliku lub katalogu
  • "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/$(basename "${BASH_SOURCE[0]}")" - zwraca ścieżkę w której znajduje się uruchomiony skrypt
  • ls -R | sort -R | tail -1 - wybiera losowy katalog lub plik z drzewa katalogu
  • *rename -v 's/.pdf$/.doc/' .pdf - zmienia nazwy wszystkich plików *.pdf
  • (cd /{some}/{dir}/ && ls -l) - zmienia katalog, wykonuje komendę i powraca do aktualnego katalogu
  • chgrp - zmienia grupę dla plików/katalogów
  • echo {pliki/katalogi} | xargs -n 1 cp -vr {katalog} - kopiuje pliki/katalogi do katalogu (-n ile przyjmuje argumentów, 1-każdy element z echo)
  • lsattr {plik/katalog} - lista rozszerzonych atrybutów (tylko partycje ext) (chattr - ustawia atrybut)
  • chattr {plik/katalog} - ustawia rozszerzone atrybuty
  • find . -maxdepth 1 -type d ( ! -name . ) -exec bash -c "cd '{}' && {polecenie}" ; - wykonuje polecenie w każdym podkatalogu obecnej lokalizacji
  • ls -1 | grep -Z -v '{regex}' | while read f; do mv "$f" {katalog docelowy}; done - przenosi znalezione pliki do katalogu docelowego
    • exa -1

Pliki

  • cat {plik 1} {plik 2} {plik n} >> {plik docelowy} - dodaje content z plików 1, 2 i 3 do pliku docelowego
  • cat {prefix}* >> {plik docelowy} - łączy pliki z podanym prefixem w jeden (np cat baza_*.sql >> baza.sql)
  • split -v 5M {plik} {prefix} - dzieli podany plik na części po 5MB i dodaje prefix
    • split -l 1000 - dzieli po 1000 linii
    • split -b 1000 - dzieli po 1000 bajtw (b|k|m)
    • split -expr \wc -l {plik} | awk '{print $1}'` /$k` {plik} {prefix} - dzieli plik na $k równych części
    • csplit -k {plik} 100 {99} - dzieli plik na części po 100 linii (ostatnia może być dłuższa)
  • nl {nazwa pliku} - pokazuje zawartość pliku wraz numerami linii
  • dd - kopiowanie pliku wraz z konwersją typu (dd if=/home/user/Downloads/debian.iso of=/dev/sdb1 bs=512M; sync)
  • dd id=/dev/device of=~/device.img - kopiuje każdy bajt z urządzenia device do pliku
  • rm {nazwa pliku} - kasuje plik
  • touch {nazwa pliku} - tworzy pusty plik
  • ls -la | grep ^- | wc -l - pokazuje liczbę plików w katalogu (-lar - + podkatalogi)
  • mv `ls | head -n 2000` test/ - przenosi 2000 plików do katalogu test
  • less - wyświetla zawartość pliku (podobne: more)
  • less {plik} | grep "wyrażenie regularne" - szuka w wybranym pliku podanej wartości
  • tail -f {nazwa pliku} - pokazuje zmiany na żywo w podanym pliku
  • tail -2 {plik} - wyświetla 2 ostatnie linie w pliku
  • stat {nawza pliku} - rozszerzone informacje o pliku
  • file {nazwa pliku} - pokazuje typ pliku
  • head -2 {plik} - pokazuje 2 wiersze z podanego pliku
  • head -c5 {plik} - wyświetli 5 pierwszych liter
  • md5sum {plik} - oblicza sumę md5
  • sha1sum {plik} oblicza sumę sha1
  • wc -l {plik} - liczba linii w pliku
  • find . -type f | wc -l - liczba samych plików w katalogu
  • grep -ri "{pattern}" /jakiś/katalog/* - wyszukuje podany pattern we wszystkich plikach w katalogu i podkatalogach, bez względu na wielkość liter
  • grep –color -rw "{pattern}" . - szuka tylko całych słów, zwraca pokolorowany otput
  • grep -c "{pattern}" . - zwraca ilość znalezionych wzorców w plikach
  • grep -v "{pattern}" . - zwraca wszystko z pominięciem wzorca
    • grep -v "^git|docker"
  • grep -C 2 {pattern} - zwraca 2 linie otaczające znaleziony fragment (2 z góry i 2 z dołu)
  • grep --include={plik} -A 1 -rn {ścieżka} -e {wzorzec} - szuka wzorca w ścieżce i podanym pliku, wyświetla ścieżkę, numer linii + linia poniżej znalezionej
  • grep -o {wzorzec} {plik} | sort --unique | wc -l - ilość unikalnych wystąpień wzorca
  • grep -o {wzorzec} {plik} | sort | uniqu -c - pokazuje posortowane wzorce + ilość ich wystąpień
  • grep -rcw - szuka rekursywnie wzorca w postaci całych słów i wyświetla tylko ilość znalezionych
    • -l - pokazuje tylko nazwy plikÓw z wzorcem
    • -L - pokazuje tylko nazwy plikÓw bez wzorca
  • diff {plik1} {plik2} - porównuje ze sobą 2 pliki
    • -y - pokazuje w kolumnach (2 pliki, 2 kolumny)
    • -a - traktuja jako tekst
    • -n - format rcs
    • -w - ignoruje biale spacje
    • diff <(sed -n '1p' {plik}) <(sed -n '1p' {plik})
    • diff -Nyrw dir1 dir2 - pokazuje różnice w plikach między dwoma katalogami
  • find {pattern} | xargs rm - szuka plików i kasuje wszystkie znalezione
  • ls -laR | grep ^- | wc -l - zlicza ilość plików w katalogu i podkatalogach
  • find . -type f | sort -R | tail -1 - wyszukuje losowy plik
  • locate {file} - znajduje wszystkie pliki o podanej nazwie
  • cmp {plik1} {plik2} - pokazuje różnicę między plikami
  • cmp --verbose {pliki} - pokazuje kody różnic (bajt różnicy, kod znaku 1, kod znaku 2)
  • cmp -bl <(sed -n '1p' {plik}) <(sed -n '1p' {plik}) - porównuje pierwsze linie z plików
  • lsof - pokazuje wszystkie otwarte pliki
    • lsof -p {pid} - pliki otwarte przez podany proces
  • fdupes -rnS {dir} >> duplicated - znajduje i zapisuje do pliku listę zduplikowanych plików
  • qemu-img convert -f raw -O qcow2 image.img image.qcow2 - konwertuje pliki obrazów (np VM)
  • foremost -v -i {image} -o {out} - odzyskiwanie skasowanych plików z obrazu do katalogu out
  • flock -xn {test.lock} -c "{script}" - uruchamia skrypt i ustawia locka na pliku {test.lock}, do zakończenia nie da się ponownie uruchomić
  • echo '{string}' | cat - {plik} > temp && mv temp {plik} - dodaje string na początek pliku
  • cat << EOF > {plik} - uruchamia wpisywanie danych do pliku, linie oddzielone enterem
    • EOF - kończy wpisywanie do pliku
  • uuencode {plik} > {plik ze stringiem} - konwertuje blik binarny na wartość tekstową (uudecode - proces odwrotny)
  • find {katalog} -type f -exec du -sh {} + | sort -rh | head -n 5 - znajduje 5 największych plików w katalogu
    • ... -type f -printf "%s %p\n" ...
  • expand -t 4 {input} > {output} - zmienia taby na 4 spacje w pliku input i zapisuje do output (-i - tylko początkowe taby)

Media

  • identify -format '%Q' {plik} - zwraca informacje na temat kompresji
  • convert -quality 70 {źródło} {cel} - zmienia stopień kompresji pliku np jpg
  • identify -verbose {img} - odczytuje metadane z obrazu
  • exiftool {img} - jw

Katalogi

  • rm -fr {nazwa katalogu lub pliku} - umożliwia kasowanie katalogu i zawartości wraz z wymuszeniem
  • mkdir {nazwa pliku} - tworzy katalog (mkdir {katalog} && cd {katalog} - po utworzeniu od razu otwiera katalog)
  • touch {nazwa pliku} - tworzy pusty plik
  • ls -la | grep ^- | wc -l - pokazuje liczbę plików w katalogu
  • mv `ls | head -n 2000` test/
  • du -sckx * | sort -nr - sortuje katalogi według rozmiaru
  • cd - - powraca do poprzedniego katalogu (przed wykonaniem polecenia cd {katalog})
  • watch "ls -lrt | tail -10" - obserwowanie zmian na katalogu
  • mkdir -p ~/katalog/{bin,src,pkg} - tworzy katalog i w nim bin, src, pkg na tym samym poziomie
    • take ~/katalog/{bin,src,pkg} - j/w

Archiwa

  • tar -xvzf {nazwa pliku} - rozpakowuje archiwum *.tar.gz
  • tar -cvzf {nazwa archiwum} {nazwa pliku/katalogu} - archiwizuje wskazany plik/katalog do podanego pliku jako tar.gz
  • tar -tvf {nazwa archiwum} - lista zarchiwizowanych elementów
  • gzip {nazwa} - kompresuje pliki jako .gz
  • gunzip {nazwa} - rozpakowuje archiwum *.gz
  • zip -r0 {plik.zip} {katalog} - zapisuje zawartość katalogu do pliku zip bez kompresji

Użytkownicy

  • last - pokazuje listę ostatnich logowań użytkowników (-n {liczba})
  • whoami - podaje nazwę aktualnego użytkownika
  • users - zalogowani użytkownicy
  • users | wc -w - liczba zalogowanych użytkowników
  • id - pokazuje id użytkownika, grupy, oraz do jakich grup należy
    • -u - id usera
    • -g - id grupy
    • -G - wszystkie grupy usera
  • sudo su - {nazwa użytkownika} - przełącza na konto innego użytkownika
  • groups - pokazuje grupy do których należy użytkownik
  • w - pokazuje kto jest zalogowany i co robi
  • who - pokazuje kto jest zalogowany
  • wall {wiadomość} - wysyła wiadomość do użytkowników
  • mesg - status wyświetlania wiadomości w terminalu (mesg y - włącza, mesg n - wyłącza)
  • write {użytkownik} - włącza tryb pisania wiadomości do użytkownika
  • passwd - zmiana własnego hasła
  • adduser {user} {grupa} - dodaje nowego użytkownika
  • userdel {nazwa} - usuwa użytkownika
  • addgroup {nazwa} - dodaje grupę
  • groupdel {nazwa} - usuwa grupę
  • sudo runuser -l {nazwa użytkownika} -c '{polecenie}' - uruchamia poprzez innego użytkownika {polecenie}
  • sudo su - {nazwa użytkownika} -c "{polecenie}" - jak powyżej
  • su - {user} - przełącza usera
  • usermod - modyfikuje ustawienia użytkownika
    • ** -u {id} {user}** - zmienia id usera
    • ** -a -G {grupa} {user}** - dodaje usera do grupy
  • gpasswd -a {user} {grupa} - dodaje usera do grupy
  • htpasswd {user} {pass} - tworzy plik htpasswd (-c nowy plik o wskazanej nazwie)
  • groupmod -g {id} {grupa} - zmienia id grupy
  • find / -group {id} -exec chgrp -h {user} {} \ || true - szuka plikw z podanym id usera i zmienia im usera;
  • find / -user {id} -exec chown -h {grupa} {} \ || true - szuka plikw z podanym id grupy i zmienia im grupę;

Data i czas

  • cal - pokazuje kalendarz aktualnego miesiąca
  • date - pokazuje aktualną datę
  • date +"%T : %Y" - pokazuje datę w formacie HH:MM:SS : YYYY
    • date --date="2 days ago"
    • date "+%Y-%m-%d"
    • date "+%H:%M:%S"
    • date +"%D %T" - 05/18/18 12:16:46
    • date +%N - 563339704
    • date +%s - 1526638758
    • date -R - Fri, 18 May 2018 12:20:07 +0200
    • date -jnu - Fri May 18 10:21:13 UTC 2018
    • date -v -1d '+%m-%d-%y' - 05-17-18
    • date -d @{timestamp} - konwertuje timestamp na datę
  • sleep {sec} && {polecenie} - uruchamia polecenie po określonej liczbie sekund (45m - minuty)

System

  • uname -a - pokazuje informację o systemie Linux
  • uname -snrvm - j/w tylko bardziej szczegółowo
  • reboot - urucahmia ponownie
  • shutdown -h {now | liczba minut | godzina:minuta} - zamyka system natychmiast lub po podanej liczbie minut, lub czasie
  • init 0 - zabija cały system
  • uptime -p && uptime -s - pokazuje czas pracy systemu, oraz datę uruchomienia
  • getconf LONG_BIT lub arch pokazuje architekturę systemu
  • dstat - listat statystyk systemowych
  • free pokazuje ilość dostępnej pamięci
  • hostname - pokazuje nazwę komputera w sieci
  • who -r - pokazuje czas uruchomienia systemu oraz jego poziom
  • runlevel - pokazuje poziom na którym zainicjalizowano system
  • top -bn1 | grep -i "%Cpu" | head -1 | sed "s/., ([0-9],.)% (id|be).*/\1/;s/,/./" | awk '{print 100 - $1}' - pokazuje zużycie procesora
  • free | grep Mem | awk '{print $4/$2 * 100.0}' - ilość wolnej pamięci w procentach
  • free | grep Mem | awk '{print $3/$2 * 100.0}' - ilość zajętej pamięci w procentach
  • iostat -d /dev/sda | sed -n "4p" - pokazuje zużycie dysku (/dev/sda)
  • cat /proc/loadavg | awk '{print $1,$2,$3}' - pokazuje load systemowy
  • printenv - pokazuje wszystkie zmienne środowiskowe i ich wartości
  • sudo dmidecode -t system - informacje o systemie (w tym o urządzeniu)
  • top -l 1 -s 0 | grep PhysMem - ilość zużytej i wolnej pamięci
  • lsmod - pokazuje status modułów w jądrze linuxa
  • lsb_release -a - informacje o dystrybucji (-s skrócone)
    • cat /proc/version - j/w
    • cat /etc/*-release - j/w
    • cat /etc/system-release - j/w
  • lslk - lista locków
  • modprobe -a {modul1} {modul2} - ładuje podane moduły które pasują do wzorca
    • -c - lista załadowanych modułów
  • crontab -e -
  • crontab -l - lista wpisów w contab
  • crontab -l -u {user} -
  • vim /etc/crontab - systemowy crontab (/etc/cron.hourly/)
  • for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l 2>/dev/null | grep -v '^#; done - lista wpisów dla wszystkich userów
  • smem -t -P {proces} - podaje zużycie pamięci wszystkich procesów pasujących do wzorca
  • smem -t -k -c pss -P {proces} | tail -n 1 - jw ale podsumowanie dla bardziej realnych danych (pamięć tylko procesu, nie współdzielona)

Urządzenia

  • mount {urządzenie} {ścieżka docelowa} - montuje urządzenie
  • unmount {urządzenie} - odmontowuje urządzenie
  • mount -l - lista podłączonych urządzeń
  • lsblk - lista urządzeń blokowych ( -l)
  • sudo mount -r -o loop {obraz.iso} {/katalog} - montuje obraz.iso do katalogu /katalog (-r tylko do odczytu)
  • sudo mount -t auto -o loop {name}.img {dir} - montuje obraz (-t automatycznie wybiera system plików)
  • blkid - id urządzeń blokowych
  • sudo fsck -Cyv {/dev/sdx} - skanuje i naprawia system plików na dysku
  • lsusb - lista urządzeń usb
  • sudo fdisk -l - pokazuje informacje o systemie plików
  • sudo lshw - pełna lista urządzeń systemowych
    • -short - jak wyżej, wersja skrócona (-html zapisuje w wersji html)
    • -class disk - informacje o dyskach
  • lscpu - szczegółowe informacje na temat procesora
  • lsblk - szczegółowe informacje na temat urządzeń blokowych
  • lspci - urządzenia podpięte pod szynę PCI
  • watch "dmesg | tail -20" - podgląd na żywo logów systemowych
  • hciconfig -a - Bluetooth info
  • awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats - pokazuje statystyki dysków zaczynających sie na sd
  • udevadm info -q all -n /dev/sda1 - szczegółowe informacje na temat dysku
  • udevadm monitor - monitoruje urządzenia
  • lsinput - lista urządzeń wejściowych
  • lshal - informacja o urządzeniach HAL
  • lpq - status podłączonych drukarek i drukowania
  • lpq -P {nazwa drukarki} {nazwa pliku} - drukuje plik na wskazanej drukarce
    • lpstat - j/w (-d domyślna drukarka)
  • lp {plik} - dodaje plik do kolejki drukowania
  • lprm {id} - usuwa z kolejki do druku
  • sudo service bluetooth status - status bluetooth na maszynie
  • hciconfig scan - skanuje bluetooth
  • hcitool dev - informacje o urządzeniu bluetooth na maszynie
  • hcitool inq - znalezione i nie podłączone urządzenia
  • sudo hcitool info {mac} - informacje o urządzeniu
  • hcitool con - podłączone urządzenia bluetooth
  • inxi -Fxz - szczegółowe/iso informacje na temat systemu
  • file -sL {/dev/...} - zwraca szczegółowe informacje o dysku (np typ plików)
  • sudo parted -l - jw, ale dla wszystkich dysków
  • sudo lsblk -f - jw
  • rfkill - zarządzanie urządzeniami radiowymi
    • list - lista urządzeń
    • -J - output jako json
  • sudo hdparm -r 0 /dev/{device} - usuwa flagę tylko do odczytu
  • sudo dd if=/dev/zero of=/dev/{device} status=progress - niszczy dane na nośniku
  • sudo dd if=/dev/zero of={plik}.img bs=1M count=1200 status=progress - tworzy pusty obraz (1.2GB) (.iso, .image, /dev/urandom)
    • dd if=/dev/mem | hexdump -C | less - przeglądanie pamięci
    • dcfldd - bardziej rozbudowana wersja dd github
  • sudo mkfs -t ext4 {name}.img - tworzy partycję na podanym obrazie
  • fdisk -l - wyświetlenie partycji i informacji na ich temat
  • lsblk -o NAME,FSTYPE,MOUNTPOINT,PARTLABEL,SIZE,RO - lista urządzeń blokowych z listą informacji (nazwa, system plików, punkt montowania, label, rozmiar, tylko do odczytu)
  • sudo fdisk /dev/sdg - operacje na dysku

Procesy

  • pstree - pokazuje drzewo procesów
  • kill -9 {numer procesu} - zabija wskazany proces (kill)
  • kill -3 {numer procesu} - zakończenie procesu (quit)
  • kill -15 {numer procesu} - zakończenie procesu (terminate)
  • killall {nazwa} - zabija wszystkie procesy o podanej nazwie
  • pidof {nazwa} - znajduje id podanego procesu
  • sudo update-rc.d {skrypt w init.d} defaults - dodaje skrypt do autostartu na domyślnym poziomie
  • sudo lsof - pokazuje otwarte pliki i procesy ich używające
  • ps -Af --no-headers | wc -l - liczba uruchomionych procesów
  • ps u - pokazuje polecenia uruchomione w konsolach
  • ps aux | head -1 && ps aux | grep {program} - szuka podanego programu, wraz z opisem kolumn z wyniku
  • ps aux | grep {nazwa} - szuka procesów o podanym wyrażeniu
  • ps -LF -u {nazwa użytkownika} - pokazuje procesy użytkownika
  • ps -p {id} -o %cpu,%mem - pokazuje zużycie ramu i procesora dla podanego procesu
    • watch -n 1 -d "ps -p {id} -o %cpu,%mem"
  • nohup ./{nazwa}.sh > {nazwa}.log & - uruchamia proces ze skryptu z zapisem do logu, tak aby działał dalej po wyjściu z konsoli
  • bg - pokazuje procesy w tle
    • fg {nazwa} - przywraca podany proces
  • fg {proces} - przenosi podany proces w tło
  • pidof {program} - zwraca id procesu o podanej nazwie
  • watch -n 1 -d "{polecenie}" - uruchamia polecenie i obserwuje wynik co sekundę z zaznaczeniem zmian
  • iotop - pokazuje operacje i/o
  • jobs - pokazuje polecenia uruchomione w terminalu i przeniesione w tło
  • kill %1 - zabija proces w tle
  • fg %2 - przywraca proces z tła (bez % ostatni)
  • bg - przenosi proces w tło, po zatrzymaniu przez CTRL-Z
  • top -U {user} -o cpu -p {id} - statystyki zużycia procesu przez użytkownika o id (na żywo)
  • pgrep {program} - zwraca id procesu dla podanej nazwy programu
  • renice {numer} {pid} - zmienia priorytet procesu o podanym id, im niższy tym wyższy priorytet (np -19, default: 0)
  • pkill {program} - zabija podany program
    • -p $(pgrep {program}) - dla podanego programu
  • xkill - umożliwia zabijanie okienkowych procesów, należy wskazać kursorem proces do zabicia
  • pidstat -hruvp {pid1}{pid2} 5 - monitoruje 2 procesy i pokazuje co 5s
  • pmap -x {proces id} - podaje szczegółowe informacje na temat zużycia pamięci przez proces i jego zależności
  • ps --no-headers -o "rss,cmd" -C {nazwa procesu} | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"Mb") }' - sumaryczne zużycie pamięci dla procesu

Internet i sieć

  • curl ifconfig.me - pokazuje zewnętrzne ip komputera
  • wget http://ipinfo.io/ip -qO - - pokazuje zewnętrzne ip komputera
  • ifconfig - pokazuje ustawienia sieci
  • ifconfig {nazwa sieci} - pokazuje informacje o wskazanej sieci
  • ifconfig {nazwa sieci} | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}' - zwraca adres lokalny komputera
  • ifconfig {nazwa sieci} {down|up} - wyłącza lub włącza sieć
  • ssh-keygen - generuje nowy klucz ssh
  • mtr {ip lub domena} - połączenie ping i traceroute
  • scp -r {źródło} {cel} - kopiuje plik poprzez ssh ([email protected]:/some/path/file) razem z podkatalogami
    • -l {val} - limit transferu w Kbit/s (8000 -> 1MB)
  • curl ipinfo.io - bardziej szczegółowe informacje o komputerze
  • netstat - wyświetla listę aktywnych połączeń TCP i UDP
  • netstat -at - lista portów TCP
  • netstat -nr | awk '{ if ($1 ~/default/) { print $6} }' - nazwa aktualnie używanej sieci
  • netstat -anp tcp | grep -i "listen" - pokazuje nasłuchiwane połączenia tcp
  • netstat -nr - pokazuje tablicę routingu
  • netstat -tuln - lista otwartych połączeń
  • netstat -tulnp tcp - tylko tcp
  • sudo lsof -i -P -n | grep LISTEN - lista otwartych portów i procesów ich nasłuchujących
  • sudo lsof -i -nP - pokazuje używane porty oraz powiązane z nimi procesy
  • nethogs" - pokazuje zużycie sieci i transfery do konkretnych hostów
  • ip route get 8.8.8.8 | awk '{print $NF; exit}' - pokazuje ip komputera wewnątrz sieci
  • hostname --ip-address - lokalne ip komputera
  • nmap -sn {ip}/24 - skanuje adresy w poszukiwaniu hostów (/24,16,8 - mask adresu np /16 -> 127.0.x.x, 24 -> 127.0.0.x)
  • nmap {hostname} - pokazuje otwarte porty i serwisy na podanym hoście
    • nmap -p 1-1000 {hostname} - pokazuje otwarte porty i serwisy na podanym hoście od 1 do 1000
    • nmap -sn 192.168.0.0/24 - skanuje w poszukiwaniu działających ip
    • arp-scan 192.168.0.0/24 - j/w
  • hostname -I - pokazuje lokalne ip komputera
  • hostname -f - nazwa hosta (długa, -s - krótka)
  • cat /etc/services | less - podgląd wszystkich portów i programów je wykorzystujących
  • tcpdump -i any port {port} - pokazuje całą komunikację na wskazanym porcie
    • tcpdump -i {nazwa sieci} - pokazuje całą komunikację na wskazanej sieci (np z ifconfig)
  • curl -D {plik dla nagłówków} {url} > /dev/null - zapisuje nagłówki do pliku (nie generuje outputu)
  • curl -o- {url}.sh | bash - pobiera skrypt i wykonuje go na komputerze
  • curl -si -H "Host: host.com" "http://server-name/" - testowanie serwera za load balancerem (host - główna strona, server-name - docelowy serwer za load balancerem)
  • curl -sS -d key=val {url} - wysyła dane POST, -sS pokazuje tylko błędy jeśli krytyczne (-G - GET)
    • -d {key=val} - post data
    • -G {key=val} - get data
    • -H {Name: value} - header data
    • -i - pokazuje headery w output
    • -I - pokazuje tylko headery w output
    • -L - podążaj za relokacją ze strony
    • -N - bez bufora, pokazuje na bieżąco dane przychodzące
    • -o - zapisuje output do pliku (-o- - force)
    • -O | --remote-name - nazywa plik tak samo jak ten z serwera
    • -s - nie pokazuje błędów i progresu
    • -S - pokazuje błędy
    • -sS - pokazuje błędy tylko jeśli zapytanie się nie udało
    • -v --ipv4 -I - pokazuje krok po kroku co dzieje się z zapytaniem
    • -k - pozwala na połączenie jeśli są problemy z certyfikatem ssl
    • -w {format} - formatuje wyjście względem ustawionego formatu
    • -u {username:password} - logowanie przez basic http authorization
  • for ((i=0;i<=30;i++)); do curl -I "{url}/$i"; done; - odpala 30 url-i z dopiskiem numeru na końcu i zwraca tylko headery
    • curl -s -o /dev/null -w "%{http_code}\n" - pokaże tylko kody odpowiedzi http
  • whois {domena} - podaje informacje o domenie internetowej
  • dig {domena} - informacje o DNS
  • wget -r {url} - pobiera rekursywnie z podanego url-a
    • -O {plik} - zapisuje output do pliku
    • -c - wznawia ściąganie częściowo ściągniętego pliku
  • lsof -n -i:80 | grep LISTEN - lista programów nasłuchujących port 80 (-iTCP:80 - tylko TCP)
  • dsh -vMm {serwer, ...} -c {polecenie} - uruchamia polecenia na zewnętrznych maszynach
  • if=netstat -nr | awk '{ if ($1 ~/default/) { print $6} }' && ifconfig ${if} - szczegóły aktualnie używanej sieci
  • if=netstat -nr | awk '{ if ($1 ~/default/) { print $6} }' && ifconfig ${if} | awk '{ if ($1 ~/inet$/) { print $2} }' - zwraca ip
  • ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}' - j/w
  • ifconfig | sed -En 's/127.0.0.1//;s/.inet (addr:)?(([0-9].){3}[0-9])./\2/p' - j/w
  • ifconfig | grep -Eo 'inet (addr:)?([0-9].){3}[0-9]' | grep -Eo '([0-9].){3}[0-9]' | grep -v '127.0.0.1' - j/w
  • nc {ip} {port} - ustawia połączenie tcp & udp z serwerem
  • nc -z -v 127.0.0.1 1-1000 - skanowanie portów od 1 do 1000
    • nc -z 127.0.0.1 1-100 - tylko te z którymi udało się połączyć
    • nc -z -n -v 127.0.0.1 1-1000 2>&1 | grep succeeded - j/w
  • nc -l {port} - nasłuchuje na porcie
    • nc -l {port} | tar xzvf - - zapisuje output do spakowanego pliku
    • tar -czf - * | nc {ip} {port} - wysyła spakowane pliki przez netcata
  • while true; do printf 'HTTP/1.1 200 OK\n\n%s' "$(cat index.html)" | nc -l {port}; done - tworzy prosty serwer pokazujący plik index.html (while - żeby działało cały czas)
  • iptables -I INPUT -p tcp -m tcp --dport {port} -j ACCEPT - dodaje port do wpisu w+ iptables
  • iptables -A INPUT -s {ip} -j DROP - blokuje adres IP
  • iptables -D INPUT -s {ip} -j DROP - usuwa z listy blokowanych
  • iptables --list - lista wpisów
  • iptables-save - zapisuje ustawienia
  • iptables -A INPUT -s {ip} -p tcp --destination-port {port} -j DROP - blokuje wskazany port

Inne

  • reset - inicjalizuje ponownie konsolę
  • clear - czyści wpisy w konsoli
  • which {nazwa polecenia} - podaje ścieżkę do polecenia
  • whereis {nazwa polecenia} - podaje ścieżkę do polecenia, źródeł binarnych, bibliotek i pakietów
  • alias fuck='sudo $(history -p !!)' - fuck command
  • alias fuck='sudo $(fc -ln -1)' - fuck command 2
  • history - pokazuje historię poleceń konsoli
  • {polecenie} | column -t - formatuje wynik polecenia w kolumny
  • expr {wyrażenie matematyczne} - rozwiązuje wyrażenia matematyczne
    • expr {arg1} = {arg2} - czy oba argumenty są identyczne (|, &, <, >, <=, >=, !=, +, -, *, /, %)
    • expr {string} : {regexp} - sprawdza czy string pasuje do wzorca
    • expr substr {string} {start} {długoś} - wycina cześć stringa
    • expr index {string} {chars} - zwraca index znaku w stringu
    • expr length {string} - długość tekstu
  • disown -a && exit {polecenie} - uruchamia polecenie w tle nawet po zamknięciu konsoli
  • bind -p - pokazuje skróty dostępne w bash
  • time {polecenie} - mierzy czas podanego polecenia
  • while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done & - pokazuje datę i czas w prawym górnym rogu terminala
  • {polecenie} | tee {plik} - wyświetla wyjście oraz zapisuje do pliku wyjście polecenia
  • tail -f jakaś/ścieżka/`ls --format=single-column -t /jakaś/ścieżka | head -1` - uruchamia taila na najnowszym pliku w podanym katalogu
  • {polecenie} | awk '{ print $1 } - wyświetla pierwszy wyraz z wyniku polecenia
  • {polecenie} | tr '\ ' '\n' - wyświetla wynik polecenia w pojedynczych liniach (zamienia spacje na nowy wiersz)
    • echo $PATH | tr ':' '\n' - pokazuje ścieżki ze zmiennej $PATH w osobnych liniach
  • {polecenie} | xargs -n1 - działa jak powyżej
  • xxd -c 1 {plik} - wyświetla wartości hex dla każdego znaku linia po linii
  • rsync -vrpogthl --progress {katalog} {katalog backupu} - wykonuje backup katalogu, aktualizuje jedynie to co się zmieniło (opcje zapewniają backup praw, własności, czasów modyfikacji plików i symlinki jako symlinki)
    • -e 'ssh -p {port}' - połączenie na innym niż domyślny port
    • -L - Podąża za symlinkami
    • -a - pomija symlinki
    • -z - kompresuje pliki do przesyłania
    • -P - --progress and --partial
    • -v - zwiększa ilość informacji
    • -r - rekursywnie
    • -p - zachowuje uprawnienia
    • -o - zachowuje właściciela
    • -g - zachowuje grupę
    • -t - zachowuje czas modyfikacji
    • -h - numery w formacie łatwym do odczytania
    • -l - kopiuje symlinki jako symlinki
    • -q - nie pokazuje wiadomości (tylko błędy)
    • --del - (--delete-during) operacja usuwania podczas synchronizacji
    • --delete-after - operacja usuwania po synchronizacji
    • --log-file - zapisuje informacje do loga
  • for i in {1..10}; do {polecenie}; done - uruchamia {polecenie} 10x
  • look {wyraz} - podpowiada składnię wyrazu
  • md5sum {plik} - oblicza skrót md5
  • mkpasswd -l 10 - generuje hasło 10 znakowe trudne do złamania
  • makepasswd --cahrs 10 - generuje hasło 10 znakowe trudne do złamania
  • while true; do {polecenie lub skrypt do wykonania} ; sleep 100 ; done - wykonuje skrypt co określony czas
  • mplayer -vo caca {film} - odtwarzanie filmów w konsoli
  • multitail -l 'ssh user@host "tail -f /var/log/log.log"' -l 'ssh user@host2 "tail -f /var/log/log.log"' - podgląd logów z 2 serwerów na raz
  • echo -n "Hello" | od -A n -t x1 - wyświetla tekst jako wartości hex
  • echo -n "Hello" | hd - wyświetla tekst jako wartości hex + oryginalny string (hd, xxd)
  • od {opcja} {plik} - wyświetla zawartość pliku jako wartości danego znaku
    • -c - pokazuje znaki niedrukowane
    • -x - jako wartości hex
    • -b - jako wartości octalne
  • history | cut -c 8- | grep -Eo "^{name}.*" | sort --uniq - wyszukuje w historii unikalne komendy zaczynające się od wyrażenia
  • history | cut -c 8- | grep -v "^{name}|{name2}.*" | sort --uniq - wyszukuje w historii unikalne komendy nie zaczynające się od wyrażenia name lub name2
  • history | awk '{ $1=""; print }' - wyświetla tylko komendy z historii (print substr($0,2) - bez spacji na początku)
  • history | fc -ln - j/w
  • for ((i=32;i<=127;i++)); do printf '%03o\t' "$i"; done;echo "\n"" - liczby od 32-127 przedstawione w notacji ósemkowej
  • mysqldump --host -u -p --no-create-info --single-transaction -d {db_name} > sb.sql - eksport danych bez info
    • --no-create-db --where="date_time>'2015-08-01'"
    • mysqluc -e "help utilities"
  • tig grv - wizualna reprezentacja git-a
  • curl -N tty.zone/[0-2]?auto&cols=$((COLUMNS)) - demo narzędzi graficznych pod terminal
  • wget -O- -q wttr.in/Poland+{miasto} - pogoda
  • type {alias} - pokazuje komendę powiązaną z podanym aliasem
  • alias {alias} - j/w
  • xfd -fa "{czcionka}" - pokazuje pełną listę znaków dla podanej czcionki
  • sudo sshfs -p {port} -o allow_other,IdentityFile={id_rsa} {domena}:{katalog} /mnt/{punk montowania} - montuje jako dysk katalog na zewnętrznym serwerze
  • htpasswd -nb -B {user} {pass} | cut -d ":" -f - generuje i zwraca hash hasła
  • grep -r -P '[^\x00-\x7f]' {plik} - wyszukuje znaki unicode w pliku
  • openssl passwd -apr1 - generuje hash hasła
    • openssl rand -hex {długość} - generuje hasło o podanej długości (*2)

Stream

  • awk '{print $4/$2}' - wyświetla parameter 4 i 2 z wejścia podzielone przez siebie (oddzielone spacja) ($NF - liczba pol, $NR - liczba rekordów)
  • awk 'BEGIN{for(i=32;i<128;i++)printf "%c",i}' - wyświetla listę znaków (32-128)
  • awk -F'/' '{print $3}' - dzieli input względem znaku / i wyświetla 3 element
  • awk '{s+=$1} END {print s} -
  • awk '{gsub(/{pattern}/,"{replace}")}' {plik} - Szuka i zastępuje wszystkie wzorce znalezione w pliku
    • awk '{gsub(/[0-9]+.216.104.10/,"10.216.104.1")}' php.ini
  • sed -n '44,92p' {plik} - pokazuje linie 44-92 z pliku (samo 92p - 92 linia)
  • sed -i -- 's/{pattern}/{replace}/g' {plik} - zastępuje znaleziony wzorzec w pliku
  • ... | cut -d' ' -f1 - tnie po spacji i podaje pierwszy element (-f 2- - od 2 i dalej; -2 do 2)
  • sed -i '1s/^/{string}\n/' {plik} - dodaje string na początek pliku
  • tr ':' '\n' - zamienia podany znak na inny, tu : na nową linię
    • tr 'a-z' 'A-Z' - zamienia litery na duże
    • tr -d ‘is’ - kasuje wyrażenie ** tr -s " " - zastępuje wiele spacji pojedynczą
    • tr -cd - kasuje nieliczbowe znaki

Terminal

  • {command} 1> {file|program} - Redirect stdout to file or program
  • {command} 1>> {file|program} - Redirect and append stdout to file or program
  • {command} 2> {file|program} - Redirect stderr to file or program
  • {command} 2>> {file|program} - Redirect and append stderr to file or program (to samo co {command} >> {plik} 2>&1)
  • {command} &> {file|program} - Redirect both stdout and stderr to file or program
  • {command} 2>&1 - Redirect stderr to stdout
  • {command} > /dev/null 2>&1 - Redirect whole output to /dev/null
  • {command} &> /dev/null - Redirect whole output to /dev/null
  • echo -n "{tekst}" - wyświetla tekst bez znaku nowej linii
  • echo "\u9c93" - 鲓
  • echo "\ue0b0 \u00b1 \ue0a0 \u27a6 \u2718 \u26a1 \u2699" -  ±  ➦ ✘ ⚡ ⚙
  • echo "\xe2\x9c\x93" - ✓
  • tty - zwraca nazwę terminala
  • ttylog -d /dev/pts/{numer} - wyświetla informacje z innego terminala
  • script -f /dev/tty3 - zapisuje wszystkie informacje z terminala (np zapis wszystkich działań w terminalu) do innego terminala, lub pliku (-f {plik})
  • retty $({id procesu}) - przełącza proces z innego terminala na obecny
  • ... | bash -s {param} - uruchamia skrypt w bash i podaje na standardowe wejście parametr
  • fc - history manager
  • echo $(( 2#101011 )) - zamienia binary na decimal (101011 -> 43)
  • echo "obase=2; {liczba}" | bc - decimal do binary
  • echo "obase=8; {liczba}" | bc - decimal do octal
    • printf "%on" {octal}
  • echo "obase=16; {liczba}" | bc - decimal do hex
    • printf "%xn" {liczba}
  • echo "ibase=2; {liczba}" | bc - binary do decimal
  • echo "ibase=8; {liczba}" | bc - octal do decimal
  • echo "ibase=16; {liczba}" | bc - hex do decimal
    • echo $((0x{hex}))
  • echo "ibase=2;obase=8; {liczba}" | bc - binary do octal

Skróty

  • ctrl+c - zatrzymuje aktualny proces
  • ctrl+z - przenosi proces w tło
  • ctrl+u - kasuje wpisaną linię
  • ctrl+w - kasuje jedno słowo z linii
  • ctrl+r - szuka poprzedniej komendy
  • ctrl+d - wylogowuje z obecnej sesji
  • !! - powtarza poprzednie polecenie
  • !-6 - uruchamia komendę uruchomioną 6 kroków wcześniej
  • !$ - argumenty poprzednio uruchomionej komendy
  • !^ - pierwszy argument poprzednio uruchomionej komendy
  • !{komenda}:2 - drugi argument ostatnio uruchomionej komendy podanej w nawiasach

Ubuntu

  • sudo dpkg -i --force-overwrite {*.deb} - wymusza uruchomienie pakietu
  • sudo apt -f --fix-broken install - naprawia zależności

Suse

  • cat /var/log/boot.log - 2
  • tail -30 /var/log/messages -
  • tail -30 /var/log/messages | awk '{print $3,$5,$6,$7,$8,$9,$10}' -
  • zypper search -s {openssh} - szuka pakietu z poprzednimi wersjami
  • sudo zypper install --oldpackage {openssh-7.6p1-lp150.7.4} - zainstalowanie starszej wersji pakietu

MacOS


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment