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 +?? *