# 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 plków w katalogu * __ls -ld .*__ - wyświetla wszystkie ukryte pliki i katalogi * **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 systememe 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) * **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 podkakatalogach * __find . -maxdepth 1 -name '*.json' -delete__ - usuwa dużą ilość plików z rozszerzeniem `*.json` * **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 ścierzkę w której zanjduje się uruchomiony skrypt * **ls -R | sort -R | tail -1** - wybiera losowy katalog lub plik z drzewa katalogu * **rename -v 's/\.pdf$/\.doc/' *.pdf** - zmienia nazwwy 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 ### 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 * **split -v 5M {plik} {prefix}** - dzieli podany plik na części po 5MB i dodaje prefix * **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) * **rm {nazwa pliku}** - kasuje plik * **touch {nazwa pliku}** - tworzy pusty plik * **ls -la | grep ^- | wc -l** - pokazuje liczbę plików w katalogu * **mv \`ls | head -n 2000\` test/** - przenosi 2000 plików do katalogu test * **less** - wyświetla zawartość pliku * **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}** - 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}" /jakis/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 * **diff {plik1} {plik2}** - porównuje ze sobą 2 pliki * **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) ### 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 ### Archiwa * **tar -xzvf {nazwa pliku}** - rozpakowuje archiwum `*.tar.gz` * **tar -vzcf {nazwa archiwum} {nazwa pliku/katalogu}** - archiwizuje wskazany plik/katalog do podanego pliku jako `tar.gz` * **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 * **id** - pokazuje id użytkowika, grupy, oraz do jakich grup należy\ * **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łą 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ę * **users | wc -w** - liczba zalogowanych użytowników * **sudo runuser -l {nazwa użytkownika} -c '{polecenie}'** - uruchamia poprzez innego użytkownika {polecenie} * **sudo su - {nazwa użytkownika} -c "{polecenie}"** - jak powyżej * **usermod** - modyfikuje ustawienia użytkownika * **sudo usermod -a -G {grupa} {user}** - dodaje usera do grupy * **sudo gpasswd -a {user} {grupa}** - j/w --- ## Data i czas * **cal** - pokazuje kalendarz aktualnego miesiąca * **date** - pokazuje aktualną datę * **date +"%T : %Y"** - pokazuje datę w formacie *HH:MM:SS : YYYY* * **sleep {sec} && {polecenie}** - uruchamia polecenie po określonej liczbie sekund --- ## System * **uname -a** - pokazuje informację o systemie Linux * **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 ortaz 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) ### Urządzenia * **mount {urządzenie} {ścierzka 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 -o loop {obraz.iso} {/katalog}** - montuje obraz.iso do katalogu /katalog * **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 * **sudo lshw -short** - jak wyżej, wersja skrócona (`-html` zapisuje w wersji html) * **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 ### 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 * **ps aux | grep {nazwa}** - szuka procesów o podanym wyrażeniu * **ps -LF -u {nazwa użytkownika}** - pokazuje procesy użytkownika * **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 * **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 {proces}** - przenosi podany proces w tło * **pidof {program}** - zwraca id procesu o podanej nazwie * **watch -n 1 -d "{polecenie}"** - uruchamia polecenie i obserwóje wynik co sekundę z zaznaczeniem zmian --- ## 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 poprzes ssh (user@192.128.0.1:/some/path/file) razem z podkatalogami * **curl ipinfo.io** - bardziej szczegółowe informacje o komputerze * **netstat** - wyświetla listę aktywnych połączeń TCP i UDP * **netstat -lntu** - lista otwartych portów * **netstat -at** - lista portów TCP * **sudo lsof -i -nP** - pokazuje używane porty oraz powiązane z nimi procesy * **iostat -d /dev/sda | sed -n "4p"** - pokazuje zużycie sieci * **ip route get 8.8.8.8 | awk '{print $NF; exit}'** - pokazuje ip komputera wewnątrz sieci * **nmap {hostname}** - pokazuje otwarte porty i serwisy na podanym hoście * **hostname -I** - pokazuje lokalne ip komputera * **cat /etc/services | less** - podgląd wszystkich portów i programów je wykożystujących * **tcpdump -i any port {port}** - pokazuje całą komunikację na wskazanym porcie * **nmap -sn {ip}/24** - skanuje adresy w poszukiwaniu hostów * **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 -sS -d key=val {url}** - wysyła dane POST, -sS pokazuje tylko błędy (-G - GET) * **whois {domena}** - podaje informacje o domenie internetowej * **dig {domena}** - informacje o DNS * **wget -r {url}** - pobiera rekursywnie z podanego url-a --- ## Inne * **reset** - inicjalizuje ponownie konsolę * **clear** - czyści wpisy w konsoli * **which {nazwa polecenia}** - podaje ścierzkę do polecenia * **whereis {nazwa polecenia}** - podaje ścierzkę 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ę polecień konsoli * **{polecenie} | column -t** - formatuje wynik polecenia w kolumny * **expr {wyrażenie matematyczne}** - rozwiązuje wyrażenia matematyczne * **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 praym górnym rogu terminala * **{polecenie} | tee {plik}** - wyświetla wyjście oraz zapisuje do pliku wyjście polecenia * **tail -f jakas/scierzka/\`ls --format=single-column -t /jakas/scierzka | 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 pojedyńczych liniach (zamienia spacje na nowy wiersz) * **{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) * **for i in {1..10}; do {polecenie}; done** - uruchamia {polecenie} 10x * **look {wyraz}** - podpowiada składnię wyrazu * **md5sum {plik}** - oblicza skrót md5 * **lpq** - status podłączonych drukarek * **lpq -P {nazwa drukarki} {nazwa pliku}** - drukuje plik na wskazanej drukarce * **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 wykoanaia} ; 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) --- ## 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 * **{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 ze znakiem nowej linii * **tty** - zwraca nazwę terminala