Ostatnio opisywałem komendy Wifi, oraz to jak przyspieszyć pracę w konsoli. A że konsola to fajna sprawa, dzięki niej możemy naprawdę efektywnie i szybko pracować. Poniżej przedstawiam dość obszerny spis różnistych, bardzo użytecznych i praktycznych komend. Wszystkie komendy zostały przetestowane zarówno na Fedorze i jak i Ubuntu.
- katalogi i szukanie plików
- kopie zapasowe i kompresja
- rsync
- ssh
- wget
- sieć
- sieć w systemie Windows
- manipulacja tekstem
- operacje na zbiorach
- matematyka
- kalendarz
- ustawienia lokalne
- kodowanie znaków
- CD/DVD
- miejsce na dysku
- monitorowanie i debugowanie
- informacje o systemie
- interaktywne
- różne
Nie wiem dlaczego, ale kiedy napiszę dwa myślniki ( – – tyle że bez odstępu między nimi ) WordPress podczas wyświetlania strony zamienia je na jeden dłuższy myślnik ( — ). Proszę na to zwrócić uwagę.
| Komenda | Opis | ||
| man -t man | ps2pdf – > man.pdf | Tworzy dokument .pdf z podręcznika man | ||
| which komenda | Pokazuje pełną ścieżkę dla komendy | ||
| time komenda | Pokazuje czas trwania komendy | ||
| time cat | Pokazuje komendy odpowiadające danemu wyrazowi | ||
| apropos słowo_klucz | Pokazuje komendy odpowiadające danemu wyrazowi | ||
| nice komenda | Uruchamia komendę z niższym priorytetem | ||
| renice 19 -p $$ | Uruchamia shell (skrypt) z niższym priorytetem. Używane przy automatycznych zadaniach | ||
| Katalogi | |||
| cd – | Wraca do poprzedniego katalogu | ||
| cd | Przechodzi do katalogu $HOME | ||
| cd /jakiś/katalog komenda | Przechodzi do katalogu, wykonuje komendę i wraca z powrotem | ||
| ls -l –color=auto | Pokazuje zawartość katalogu według daty, oraz koloruje wynik | ||
| ls -lrt | Pokazuje zawartość katalogu według daty | ||
| ls /jakiś/katalog | pr -T9 -W$COLUMNS | Pokazuje zawartość katalogu w dziewięciu kolumnach | ||
| find -name ‘*.[ch]’ | xargs grep -E ‘hasło’ | Szuka wyrazu ‘hasło’ w obecnym katalogu i poniżej | ||
| find -type f -print0 | xargs -r0 grep -F ‘hasło’ | Szuka danego wyrazu tylko w nazwie pliku w obecnym katalogu i poniżej | ||
| find -maxdepth 1 -type f | xargs grep -F ‘hasło’ | Szuka danego wyrazu tylko w nazwie pliku w obecnym katalogu | ||
| find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done | Wykonuje (w pętli) wiele komend dla każdego znalezionego wiersza | ||
| find -type f ! -perm -444 | Znajduje pliki nie mogące zostać odczytane przez nikogo (pożyteczne na serwerach www) | ||
| find -type d ! -perm -111 | Znajduje katalogi niedostępne dla żadnego użytkownika (pożyteczne na serwerach www) | ||
| locate -r ‘file[^/]*.txt’ | Search cached index for names. This re is like glob *file*.txt | ||
| look reference | Sprawdza (wg. Kolejności) wyraz w słowniku | ||
| grep –color reference /usr/share/dict/words | Podkreśla trafienia dla danego wyrażenia znalezione w słowniku | ||
| Kopie zapasowe i kompresja | |||
| gpg -c plik | Szyfruje plik | ||
| gpg plik.gpg | Odszyfrowuje plik | ||
| tar -c jakiś/katalog | bzip2 > katalog.tar.bz2 | Tworzy skompresowaną kopię katalogu | ||
| bzip2 -dc katalog.tar.bz2 | tar -x | Odtwarza zawartość kopii (dla plików tar.gz użyj gzip zamiast bzip2) | ||
| tar -c jakiś/katalog | gzip | gpg -c | ssh ktoś@inny-komp ‘dd of=dir.tar.gz.gpg’ | Tworzy skompresowaną i zaszyfrowana kopię katalogu, a następnie kopiuje go na inny komputer | ||
| find jakiś/katalog -name ‘*.txt’ | tar -c –files-from=- | bzip2 > archiwum.tar.bz2 | Tworzy kopię z części plików zawartych w katalogu, oraz innych w nim zawartych | ||
| find jakiś/katalog -name ‘*.txt’ | xargs cp -a –target-directory=inny/katalog –parents | Kopiuje część plików zawartych w katalogu jakiś/katalog oraz innych w nim zawartych do katalogu inny/katalog. | ||
| ( tar -c jakiś/katalog ) | ( cd inny/katalog && tar -x -p ) | Kopiuje (wraz z prawami) katalog jakiś/katalog do katalogu inny/katalog | ||
| ( tar -c jakiś/katalog ) | ssh -C ktoś@inny-komp ‘cd inny/katalog && tar -x -p | Kopije (wraz z prawami) katalog jakiś/katalog na inny komputer do katalogu inny/katalog. | ||
| dd bs=1M if=/dev/sda | gzip | ssh ktoś@inny-komp ‘dd of=sda.gz’ | Tworzy kopię dysku na innym komputerze | ||
| rsync | |||
| rsync -P rsync://rsync.server.com/ścieżka/do/pliku plik | Pobiera tylko różnice. W razie problemów z połączeniem można używać wielokrotnie | ||
| rsync –bwlimit=1000 fromfile tofile | Kopiuje lokalnie z ograniczeniem maksymalnej prędkością. Rodzaj nice dla operacji WE/WY | ||
| rsync -az -e ssh –delete ~/public_html/ remote.com:’~/public_html’ | Tworzy mirror strony (wraz kompresją i szyfrowaniem danych) | ||
| rsync -auz -e ssh remote:jakiś/katalog . && rsync -auz -e ssh . ktoś@serwer:jakiś/katalog | Synchronizuje aktualny katalog z katalogiem na serwerze | ||
| ssh | |||
| ssh ktoś@serwer komenda | Wykonuje ‘komendę’ jako ‘ktoś’ na ‘serwer’ | ||
| ssh -f -Y ktoś@serwer xeyes | Wykonuj GUI ‘komendę’ jako ‘ktoś’ na ‘serwer’ | ||
| scp -p -r ktoś@serwer: plik jakiś/katalog | Kopiuje wraz z prawami na ‘serwer’ do katalogu domowego użytkownika ‘ktoś’ | ||
| ssh -g -L 8080:localhost:80 root@serwer | Przekazuje połączenia do localhost:8080 na serwer:80 | ||
| ssh -R 1434:imap:143 root@serwer | Przekazuje połączenie z serwer:1413 na imap:143 | ||
| wget | |||
| (cd cli && wget -nd -pHEKk http://www.stronka.pl/index.html) | Tworzy kopię strony internetowej w lokalnym katalogu | ||
| wget -c http://www.stronka.pl/plik.tar | Kontynuuje pobieranie częściowo ściągniętego pliku | ||
| wget -r -nd -np -l1 -A ‘*.jpg’ http://www.stronka.pl/katalog | Kopiuje zbiór plików do lokalnego katalogu | ||
| wget ftp://serwer.pl/plik[1-9].iso/ | FTP wspiera bezpośrednio wyrażenia regularne (globbing) | ||
| wget -q -O- http://www.stronka.pl/instex.html | grep ‘a href’ | head | Natychmiast przeszukuje dane | ||
| echo ‘wget url’ | at 01:00 | Pobiera dany URL o 1 w nocy do obecnego katalogu | ||
| wget –limit-rate=20k url | Pobiera z małym priorytetem (w tym wypadku limit to 20KB/s) | ||
| wget -nv –spider –force-html -i bookmarks.html | Sprawdza linki w pliku | ||
| wget –mirror http://www.stronka.pl | Efektywnie uaktualnia lokalna kopię strony (można użyć w programie cron) | ||
| Sieć | |||
| ethtool eth0 | Pokazuje status urządzenia sieciowego eth0 | ||
| ethtool –change eth0 autoneg off speed 100 duplex full | Ręcznie ustawia prędkość urządzenia sieciowego | ||
| iwconfig eth1 | Pokazuje status urządzenia bezprzewodowego eth1 | ||
| iwconfig eth1 rate 1Mb/s fixed | Ręcznie ustawia prędkość urządzenia bezprzewodowego | ||
| iwlist scan | Pokazuje dostępne sieci bezprzewodowe | ||
| ip link show | Pokazuje urządzenia sieciowe | ||
| ip link set dev eth0 name wan | Zmienia nazwę urządzenia eth0 na wan | ||
| ip link set dev eth0 up | Włącza urządzenie sieciowe eth0 | ||
| ip addr show | Pokazuje adresy urządzeń | ||
| ip addr add 1.2.3.4/24 brd + dev eth0 | Dodaje (lub kasuje) adres IP i maskę sieciową (255.255.255.0) | ||
| ip route show | Pokazuje ruting | ||
| ip route add default via 1.2.3.254 | Ustawia standardową bramkę wyjścia na 1.2.3.254 | ||
| tc qdisc add dev lo root handle 1:0 netem delay 20msec | Dodaje opóźnienie 20ms do sterownika urządzenia (przydatne w czasie testów) | ||
| tc qdisc del dev lo root | Usuwa opóźnienie dodane powyżej | ||
| host serwer.pl | Pokazuje informacje IP dla nazwy DNS albo na odwrót | ||
| hostname -i | Pokazuje lokalny adres ip (równoważne z host `hostname`) | ||
| whois serwer.pl | Pokazuje informacje whois dla nazwy lub adresu IP | ||
| netstat -tupl | Pokazuje usługi internetowe | ||
| netstat -tup | Pokazuje aktywne usługi internetowe z i do komputera | ||
| Sieć systemu Windows | |||
| smbtree | Pokaż komputery z Windowsem. Zobacz też polecenie findsmb | ||
| nmblookup -A 192.168.1.100 | Pokaż windowsową nazwę (netbios) dla danego adresu ip | ||
| smbclient -L komputer_z_win | Pokaz katalogi współdzielone na komputerze z Windowsem lub serwerze samby | ||
| mount -t smbfs -o fmask=666,guest //komputer_z_win/udział /punkt/montowania | Podłącz katalog współdzielony | ||
| echo ‘message’ | smbclient -M komp_z_win | Wyślij wiadomość popup do komputera z Windowsem (w XP SP2 standardowo wyłączone) | ||
| Manipulacja tekstem | |||
| sed ‘s/wyraz1/wyraz2/g’ | Zastępuje wyraz1 na wyraz2 | ||
| sed ‘s/(.*)1/12/g’ | Zmienia dowonywyraz1 na dowolnywyraz2 | ||
| sed ‘/ *#/d; /^ *$/d’ | Usuwa komentarze i puste linie | ||
| sed ‘:a; /$/N; s/n//; ta’ | Łączy wszystkie linie oddzielając je znakiem | ||
| sed ‘s/[ t]*$//’ | Usuwa puste znaki z linii | ||
| sed ‘s/([`”$\])/1/g’ | Opuszcza meta znaki powłoki aktywne wewnątrz cudzysłowowa | ||
| seq 10 | sed “s/^/ /; s/ *(.{7,})/1/” | Justuje numery do prawej | ||
| sed -n ‘1000p;1000q‘ | Pokazuje tysięczną linię | ||
| sed -n ‘10,20p;20q‘ | Pokazuje linie od 10 do 20 | ||
| sort -t. -k1,1n -k2,2n -k3,3n -k4,4n | Sortuje adresy IPV4 ip | ||
| echo ‘Test’ | tr ‘[:lower:]’ ‘[:upper:]’ | Zmienia wielkość znaków | ||
| tr -dc ‘[:print:]’ < /dev/urandom | Filtruje znaki nie dające się wydrukować | ||
| history | wc -l | Liczy wiersze | ||
| Operacje na zbiorach | |||
| sort plik1 plik2 | uniq | Połączenie nieposortowane plików | ||
| sort plik1 plik2 | uniq -d | Część wspólna nieposortowane plików | ||
| sort plik1 plik1 plik2 | uniq -u | Różnica nieposortowane plików | ||
| sort plik1 plik2 | uniq -u | Symetryczna różnica nieposortowane plików | ||
| join -a1 -a2 plik1 plik2 | Połączenie posortowane plików | ||
| join plik1 plik2 | Część wspólna posortowane plików | ||
| join -v2 plik1 plik2 | Różnica posortowane plików | ||
| join -v1 -v2 file1 file2 | Symetryczna różnica posortowane plików | ||
| Metematyka | |||
| echo ‘(1 + sqrt(5))/2’ | bc -l | Proste obliczenia (obliczenie φ) | ||
| echo ‘pad=20; min=64; (100*10^6)/((pad+min)*8)’ | bc | Bardziej skomplikowane obliczenia (int). To pokazuje maksymalne prędkość FastEthernet | ||
| echo ‘pad=20; min=64; print (100E6)/((pad+min)*8)’ | python | Python potrafi obsłużyć notacje naukową | ||
| echo ‘pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)’ | gnuplot -persist | Prędkość FastE w relacji do wielkości pakietu | ||
| echo ‘obase=16; ibase=10; 64206’ | bc | Konwertuje liczby dziesiętne do szesnastkowych | ||
| echo $((0x2dec)) | Konwertuje liczby szesnastkowe do dziesiętnych (arytmetyczne rozszerzenie powłoki) | ||
| units -t ‘100m/9.69s’ ‘miles/hour’ | Konwersja jednostek (dziesiętne do calowych) | ||
| units -t ‘500GB’ ‘GiB’ | Konwersja jednostek (z SI do IEC) | ||
| units -t ‘1 googol’ | Definiuje jednostkę | ||
| seq 100 | (tr ‘n’ +; echo 0) | bc | Dodaje kolumnę z cyframi | ||
| Kalendarz | |||
| cal -3 | Pokazuje kalendarz | ||
| cal 9 1752 | Pokazuje kalendarz dla danego miesiąca i roku | ||
| date -d fri | Pokazuje datę najbliższego piątku | ||
| date –date=’25 Dec’ +%A | W jaki dzień wypada w tym roku Boże Narodzenie | ||
| date –date ‘1970-01-01 UTC 2147483647 seconds’ | Konwertuje sekundy, które upłynęły od początku epoki uniksa w datę | ||
| TZ=’:America/Los_Angeles’ date | Pokazuję godzinę na zachodnim wybrzeżu USA (użyj tzselect aby wybrać daną strefę czasową) | ||
| echo “mail -s ‘biegnij na pociąg!’ moja@poczta.pl < /dev/null” | at 17:45 | Wysyła email z przypomnieniem | ||
| echo “DISPLAY=$DISPLAY xmessage cooker” | at “NOW + 30 minutes” | Pokazuje okienko z przypomnieniem | ||
| Ustawienia lokalne | |||
| printf “%’dn” 1234 | Pokazuje liczbę z grupowaniem tysięcznym zgodnym z ustawieniami lokalnymi | ||
| BLOCK_SIZE=’1 ls -l | Pokazuje grupowanie tysięczne podczas użycia komendy ls | ||
| echo “I live in `locale territory`” | okazuje informacje o ustawieniach lokalnych | ||
| LANG=en_IE.utf8 locale int_prefix | Pokazuje lokalne informacje dla danego kraju. | ||
| locale | cut -d= -f1 | xargs locale -kc | less | Pokazuje pola dostępne w lokalnej bazie | ||
| Kodowanie znaków | |||
| recode -l | less | Pokazuje dostępne konwersje (aliasy na każdej linii) | ||
| recode windows-1252.. plik.txt | Windows “ansi” do lokalnego kodowania (automatyczna konwersja CRLF ) | ||
| recode utf-8/CRLF.. plik.txt | Windows utf8 do lokalnego kodowania | ||
| recode iso-8859-15..utf8 plik_do_zmiany.txt recode iso-8859-15..utf8 plik.txt | Latin9 (europa zachodnia) to utf8 | ||
| recode ../b64 < plik.txt > plik.b64 | Kodowanie Base64 | ||
| recode /qp.. < plik.txt > plik.qp | Quoted printable decode | ||
| recode ..HTML < plik.txt > plik.html | Tekst to HTML | ||
| recode -lf windows-1252 | grep euro | Pokazuje informacje o danym znaku | ||
| echo -n 0x80 | recode latin-9/x1..dump | Pokazuje informacje o znaku w kodowaniu latin-9 | ||
| echo -n 0x20AC | recode ucs-2/x2..latin-9/x | Pokazuje kodowanie latin-9 | ||
| echo -n 0x20AC | recode ucs-2/x2..utf-8/x | Pokazuje kodowanie utf-8 | ||
| CD/DVD | |||
| gzip < /dev/cdrom > cdrom.iso.gz | Tworzy skompresowaną kopię CD | ||
| mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz | Tworzy skompresowaną kopię CD z zawartości danego katalogu | ||
| mount -o loop cdrom.iso /mnt/dir | Podłącza (tylko odczyt) kopię CD do katalogu /mnt/dir | ||
| cdrecord -v dev=/dev/cdrom blank=fast | Kasuje dysk CDRW | ||
| gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom | Wypala CD z pliku | ||
| cdparanoia -B | Kopiuje ścieżki audio z CD jako pliki wav do bieżącego katalogu | ||
| cdrecord -v dev=/dev/cdrom -audio *.wav | Tworzy audio CD ze wszystkich plików wav z bieżącego katalogu | ||
| oggenc –tracknum=’track’ track.cdda.wav -o ‘track.ogg’ | Tworzy pliki ogg z plików wav | ||
| Miejsce na dysku | |||
| ls -lSr | Pokazuje pliki według wielkości, największe na końcu | ||
| du -s * | sort -k1,1rn | head | Pokazuje katalogi zajmujących największą ilość miejsca w bieżącym katalogu | ||
| df -h | Pokazuje wolne miejsce na podłączonych systemach plików | ||
| df -i | Pokazuje wolne inodes na podłączonych systemach plików | ||
| fdisk -l | Pokazuje wielkość dysków i typ partycji (jako root) | ||
| rpm -q -a –qf ‘%10{SIZE}\t%{NAME}\n’ | sort -k1,1n | Pokazuje wszystkie zainstalowane pakiety według wielkości (Bytes) w dystrybucjach używających rpm | ||
| dpkg-query -W -f=’${Installed-Size;10}\t${Package}\n’ | sort -k1,1n | Pokazuje wszystkie zainstalowane pakiety według wielkości (KBytes) w dystrybucjach używających deb | ||
| dd bs=1 seek=2TB if=/dev/null of=ext3.test | Tworzy duży plik testowy (nie zajmując w ogóle miejsca). | ||
| Monitorownie i debugowanie | |||
| tail -f /var/log/messages | Monitoruje informacje w logu | ||
| strace -c ls >/dev/null | Pokazuje podsumowanie/profil wywołań systemowych danej komendy | ||
| strace -f -e open ls >/dev/null | Pokazuje wywołania systemowe danej komendy | ||
| ltrace -f -e getenv ls >/dev/null | Pokazuje wywołania biblioteczne danej komendy | ||
| lsof -p $$ | Pokazuje ścieżki otwarte przez ten proces | ||
| lsof ~ | Pokazuje procesy ktore mają otwartą daną ścieżkę | ||
| tcpdump not port 22 | Pokazuje aktywność sieciową za wyjątkiem ssh | ||
| ps -e -o pid,args –forest | Pokazuje procesy wg hierarchii | ||
| ps -e -o pcpu,cpu,nice,state,cputime,args –sort pcpu | sed ‘/^ 0.0 /d’ | Pokazuje procesy wg % użycia procesora | ||
| ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS | Pokazuje procesy wg użycia pamięci | ||
| ps -C firefox-bin -L -o pid,tid,pcpu,state | Pokazuje wszystkie wątki danego procesu | ||
| ps -p 1,2 | Pokazuje informacje dla procesu o danym id | ||
| last reboot | Pokazuje historię ostatnich uruchomień | ||
| free -m | Pokazuje ilość wolnej pamięci RAM (-m w MB) | ||
| watch -n.1 ‘cat /proc/interrupts’ | Pokazuje zmiany danych aktualnie się zmieniających | ||
| Informacje o systemie | |||
| uname -a | Pokazuje wersje jądra | ||
| head -n1 /etc/issue | Pokazuje nazwę i wersję linuksa | ||
| cat /proc/partitions | Pokazuje partycje zarejestrowane w systemie | ||
| grep MemTotal /proc/meminfo | Pokazuje informacje o pamięci RAM | ||
| grep “model name” /proc/cpuinfo | Pokazuje informacje o procesorze | ||
| lspci -tv | Pokazuje informacje o PCI | ||
| lsusb -tv | Pokazuje informacje o USB | ||
| mount | column -t | Pokazuje systemy plików podłączone do kuputera (informacje są wyjustowane) | ||
| dmidecode -q | less | Pokazuje informacje SMBIOS/DMI | ||
| smartctl -A /dev/sda | grep Power_On_Hours | Pokazuję całościowy czas pracy dysku | ||
| hdparm -i /dev/sda | Pokazuje informacje o dysku sda | ||
| hdparm -tT /dev/sda | Testuję prędkość odczytu dysku sda | ||
| badblocks -s /dev/sda | Szuka popsutych bloków na dysku sda | ||
| Interaktywne | |||
| readline | Edytor linowy używany przez bash, python, bc, gnuplot | ||
| screen |
|
||
| mc | Manager plików który może przeglądać rpm, tar, ftp, ssh – opisany tutaj | ||
| gnuplot |
|
||
| links | Przeglądarka internetowa | ||
| Różne | |||
| set | grep nazwa_użytkownika | Przeszukuje aktualne ustawienia środowiska | ||
| touch -c -t 0304050607 plik | Zmienia datę pliku (YYMMDDhhmm) | ||
| python -m SimpleHTTPServer | Uruchamia prosty serwer HTTP i tworzy drzewo plików w aktualnym katalogu na http://nazwa_hosta:8000 |
Podziękowania dla kolegi Pádraig Brady, który udostępnił ten spis. Zachęcam do odwiedzenia jego strony pixelbeat.org.




9 lutego, 2009 at 0:28
Takiego artykułu szukałem, jak zaczynałem przygodę z pingwinem… Będę polecał :)
18 marca, 2010 at 18:36
Dziękuję za obszerny spis poleceń nie standardowych ( z argumentami do odpowiednich zastosowań ), takiego spisu szukałem – ten poszedł do druku i wisi obok komputera, będę się go z czasem uczyć aby lepiej w praktyce opanować terminal :)
Jeżeli można, wrzucę spis na forum linux.fastpc.pl ;)
30 maja, 2015 at 15:59
jak rozszyfrować te tajemnicze znaczki +?? *