Kategorie | Linux, Poradniki

  

Praktyczne komendy Linux

Opublikowano 07 lutego 2009 przez Franek

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
Wirtualne terminale z możliwością odłączania i podłączania
mc Manager plików który może przeglądać rpm, tar, ftp, ssh – opisany tutaj
gnuplot
Interaktywny i obsługujący skrypty program do rysowania
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.

  

3 Comments For This Post

  1. batwing Says:

    Takiego artykułu szukałem, jak zaczynałem przygodę z pingwinem… Będę polecał :)

  2. WebNuLL Says:

    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 ;)

  3. Wiktoria Sowerda Says:

    jak rozszyfrować te tajemnicze znaczki +?? *

Leave a Reply

Polityka komentarzy

Wyszukiwane tagi: komendy do linux, komendy AT      
     
Green Dog Says

MiniBlog