Wybrane polecenia Linux
Jest to lista poleceń które mogą być przydatne w codzinnym życiu.
Powłoki definiowane przez X/Open 4.2 i POSIX 1003.2
sh oryginalna powłoka Bourne'a
csh, tcsh, zsh powłoka C autorstwa Billa Joya
ksh, pdksh powłoka Davida Korna
bash Bourne Again Shell najpopularniejsza pochodząca z projektu GNU
rc bardziej C niż csh, równiez GNU
tclsh powłoka Tcl
wish powłoka Tk
Przeglądanie katalogów
cd ~ przejście do katalogu domowego
cd przejście do katalogu domowego
cd - przejście do poprzedniego katalogu
(cd dir && command) przejscie do katalogu dir, wykonanie polecenia command i powrót do katalogu bierzącego
pushd . odłożenie aktualnego katalogu na stos, nastepnie katalogu może być zdjety ze stosu poprzez popd
Operacje na CD
gzip < /dev/cdrom > cdrom.iso.gz zapisanie spakowanej kopii płyty CD
mkisofs -r dir | gzip > cdrom.iso.gz utworzenie obrazu ISO płyty z zawartości katalogu
mount -o loop cdrom.iso /mnt/dir zamontowanie obrazu CDROM w katalogu /mnt/dir
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom - wypalenie obrazu CDROM (użyj dev=ATAPI -scanbus w celu określenia dev)
cdparanoia -B ripuje traki audio z CDROM do plików wav w aktualnym katalogu
cdrecord -v dev=/dev/cdrom -audio *.wav tworzy płytę audio CD z plików wav w aktualnym katalogu(zabacz także cdrdao)
oggenc --tracknum='track' track.cdda.wav -o 'track.ogg' koduje plik ogg z pliku wav
Archiwizacja
tar c dir/ | bzip2 > dir.tar.bz2 tworzy archiwum tar/bz2 katalogu dir/
tar -cvjf dir.tar.bz2 dir/ tworzy archiwum tar/bz2 katalogu dir/
tar -cvzf dir.tgz dir/ tworzy archiwum tar/gzip katalogu dir/
tar -xvzf dir.tgz dir/ dekompresuje archiwum tar/gzip
bzip2 -dc dir.tar.bz2 | tar x dekompresuje archiwum (użyj gzip zamiast bzip2 dla plików tar.gz lub tgz)
tar c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg' tworzy zakodowane archiwum katalogu dir/ na zdalnej maszynie
find dir/ -name '*.txt' | tar c --files-from=- | bzip2 > dir_txt.tar.bz2 tworzy archiwum z wybranych plików *.txt z katalogu dir/ i jego podkatalogów
find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents tworzy kopię z wybranych plików z katalogu dir/ i jego podkatalogów we wskazanym katalogu
( tar c /dir/to/copy ) | ( cd /where/to/ && tar x -p ) kopiuje (z uprawnieniami) katalog copy/ do katalogu /where/to/
( cd /dir/to/copy && tar c . ) | ( cd /where/to/ && tar x -p ) kopiuje (z uprawnieniami) zawartość katalogu copy/ dir do katalogu /where/to/
( tar c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar x -p' kopiuje (z uprawnieniami) katalog copy/ do katalogu na zdalnej maszynie remote:/where/to/
dd bs=1M if=/dev/hda | gzip | ssh user@remote 'dd of=hda.gz' tworzy backup dysku twardego na zdalnej maszynie
rsync (Do testów uUżyj opcji --dry-run)
rsync -P rsync://rsync.server.com/path/to/file file Jedynie pobiera różnice. Wykonaj kilkakrotnie jeżeli masz problemy z download'em
rsync --bwlimit=1000 fromfile tofile Kopiuje lokalnie z ograniczoną przepustowością. Działa jak nice dla operacji we/wy
rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html' Tworzy mirror strony (używając kodowania i kompresji)
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/ Sunchronizuje aktualny katalog ze wskazanym katalogiem zdalnym
Przeszukiwanie plików
alias l='ls -l --color=auto' szybkie listowanie katalogu
ls -lrt listuje pliki po datach.
find -name '*.[ch]' | xargs grep -E 'expr' wyszukuje 'expr' w katalogu dir i podkatalogach.
find -type f -print0 | xargs -r0 grep -F 'string' wyszukuje 'string' we wszystkich plikach regularnych w katalogu dir i podkatalogach
find -type f -maxdepth 1 | xargs grep -F 'string' wyszukuje 'string' we wszystkich plikach regularnych jedynie w katalogu dir
find -type d -maxdepth 1 | while read dir; do (cd "$dir" && echo $PWD); done przetwarza każdy element przez wiele poleceń (w pętli while)
find -type f ! -perm -444 wyszukuje pliki nie czytelne dla wszystich (użteczne przy stornach web)
find -type d ! -perm -111 wyszukuje katalogi niedostepne dla wszystich (użteczne przy stornach web)
locate -r 'file[^/]*\.txt' przeszukuje cachowany indeks nazw. Wyrażenie regularne odpowida nazwie globowanej *file*.txt
for a in *; do sed s/tekst 1/tekst 2/g <$a >$a.new; mv -f $a.new $a; done zastępuje łańcuch 'tekst 1' przez łańcuch 'tekst 2' we wszystkich plikach pasujących do wzorca (tutaj *).
Sieć (Polecenia ifconfig, route, mii-tool, nslookup uznawane są za przestarzałe)
ip link show listuje interfejsy
ethtool interface listuje status interfejsu interface
ip link set dev eth0 name wan zmienia nazwę eth0 na wan
ip addr add 1.2.3.4/24 brd + dev eth0 dodaje ip oraz maskę(255.255.255.0)
ip link set dev interface up aktywuje (lub dezaktywuje - down) interfejs
ip route add default via 1.2.3.254 ustawia domyślną bramę (gateway) na 1.2.3.254
host ummon.org wyszukuje adres ip address dla nazwy lub odwrotniea
hostname -i wszukuje lokalny adres ip (równoważnik dla host `hostname`)
netstat -lp --inet listuje usługi internet w systemie
netstat -p --inet list aktywne połączenia z/do systemu
windows (pakietem dostarczającym poniższe polecenia jest samba)
smbtree znajduje maszyny windows. Zaobacz także findsmb
nmblookup -A 1.2.3.4 znajduje nazwy windows (netbios) powiązane z adresem ip
smbclient -L windows_box listuje zasoby współdzielone na maszynie windows lub serwerze samba
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share mount a windows share
echo 'message' | smbclient -M windows_box Wysyła wiadmość popup do maszyny windows (opcja wyłączona domyślnie w XP z sp2)
Matematyczne
echo '(1 + sqrt(5))/2' | bc -l wylicznie wartości
echo 'obase=16; ibase=10; 123' | bc konwersja podstawy (dziesiętna do szesnastkowej)
echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc Bardziej złożony przykład: Oblicza maksymalny transfer pakietów przez FastE
echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python obsługa notacji inżynierskiej przez python'a
echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist Rysuje szykość transferu przez FastE od rozmiaru pakietu
Operacja tekstowe (polecenia używają stdin oraz stdout, jeżeli chcesz edytować pliki, dodaj<oldfile >newfile)
sed 's/string1/string2/g' zastępuje string1 przez string2
sed '/ *#/d; /^ *$/d' usuwa komentarze i puste linie
sed ':a; /\\$/N; s/\\\n//; ta' dołącza linie poprzedzone przez \
sed 's/[ \t]*$//' usuwa poprzedzające spacje z linii
sed 's/\([\\`\\"$\\\\]\)/\\\1/g' backslashuje aktywne meta-znaki shell w "..."
sed -n '1000p;1000q' drukuje 1000czną linię
sed -n '10,20p;20q' drukuje linie od 10 do 20
sort file1 file1 file2 | uniq -u pokazuje linie w file2 nie występujące w file1
echo 'Test' | tr '[:lower:]' '[:upper:]' konwersja wielkości znaków
tr -dc '[:print:]' < /dev/urandom filtruje znaki niedrukowalne
grep 'processor' /proc/cpuinfo | wc -l zlicza linie zawierające processor
Kalendarz
cal -3 wyświetla kalendarz
cal 9 1752 wyświetla kalendarz dla wybranego miesiąca w roku
date -d fri Określa jaka data będzie w ten piątek.
date --date '31 Dec' +%A Wyświetla nazwę dnia tygodnia Sylwestra tego roku
date --date '1970-01-01 UTC 1097781420 seconds' konwerteruje ilość sekund licząc od Epoki w datę
TZ=':Europe/Warsaw' date Określa jaki czas jest aktualnie w Warszawie (użyj tzselect do określenia strefy czasowej TZ - time zone)
Lokale - ustawienia narodowe
printf "%'d\n" 1234 print number with thousands grouping appropriate to locale
echo "I live in `locale territory`" wydobywa informację z bazy danych lokali
locale | cut -d= -f1 | xargs locale -kc | less listuje pola z bazy danych lokali
LANG=pl_PL locale int_prefix poszukuje informacji w lokalach o określonym kraju
Przestrzeń dyskowa
ls -lSr wyświetla pliki, największy ostatni
du -s * | sort -k1,1rn | head wyświetla największe pliki w aktualnym katalogu
df -h wyświetla informację o przestrzeni na dyskach
df -i wyświetla informację o i-węzłach
fdisk -l wyświetla rozmairy partycji dyskowych (uruchom jako root)
rpm -q -a --queryformat '%10{SIZE}\t%{NAME}\n' | sort -k1,1n listuje wszystkie pakiety sortując po zajętości (Bajtów) w dystrybucjach opartych o rpm
dpkg -query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n listuje wszystkie pakiety sortując po zajętości (KBajtów) w dystrybucjach opartych o deb
Monitorowanie/Debugowanie
strace -c ls >/dev/null podsumowuje/profiluje wywołania systemowe wykonane przez polecenie command
strace -f -e open ls >/dev/null listuje wywołania systemowe polecenia command
ltrace -f -e getenv ls >/dev/null listuje wywołania biblioteczne wykonane przez polecenie command
lsof -p $$ listuje ścieżki plików, które otworzył proces
lsof ~ listuje procesy które otworzyły określoną ścieżkę
tcpdump not port 22 Wyświetla ruch sieciowy oprócz ssh.
ps -e -o pid,args --forest listuje drzewo procesów
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d' listuje procesy sortując według użycia cpu
ps -e -o rss=,args= | sort -b -k1,1n | pr -TW$COLUMNS listuje procesy sortując po zużyciu pamięci.
ps -C mozilla-bin -m listuje wszystkie wątki danego procesu
ps -p 1,2 listuje informacje o wybranych identyfikatorach procesów
for wtmp in `ls -t /var/log/wtmp*`; do last reboot -f $wtmp; done wyśiwtla historię ostatniego restartu systemu
free -m Wyśiwtla informację o dostępnej pamięci (-m wyśiwtla w MB)
Inforacje o Systemie
hdparm -i /dev/hda wyświetla informacje o dysku hda
hdparm -tT /dev/hda Wykouje test prędkości odczytu z dysku hda
badblocks -s /dev/hda Szuka uszkodzonych bloków na dysku hda
mount | column -t Wyświetla zamontowane systemy plików (i wyrównuje wyjście)
cat /proc/partitions Wyświetla wszystkie partycje zarejstrowane w systemie
grep MemTotal /proc/meminfo Wyświetla całkowitą ilość RAM widoczną w systemie
grep "model name" /proc/cpuinfo Wyświetla informację o procesorze/procesorach
/sbin/lspci -tv Wyświetla informację o szynie PCI
/sbin/lsusb -tv Wyśiwetla informację o magistrali USB
xdpyinfo informacja o X Window
glxinfo informacja o OpenGL
ipcs -s informacja o semaforach IPC
ipcs -q informacja o kolejkach komunikatow IPC
ipcs -m informacja o pamieci dzielonej IPC
printenv drukowanie zmiennych srodowiskowych
env uruchomienie programu w zmienionym srodowisku
tty informacja o pliku terminala
stty zmiana ustawien termianla
recode zastępuje iconv, dos2unix, unix2dos
recode -l | less wyświetla dostępne konwersje (aliasy w każdej linii)
recode windows-1252.. file_to_change.txt konwerteruje windows "ansi" do lokalnej strony kodowej (automatycznie zamienia CRLF)
recode utf-8/CRLF.. file_to_change.txt konwerteruje windows utf8 do lokalnej strony kodowej
recode iso-8859-15..utf8 file_to_change.txt latin9 (zachodnia europa, latin15 środkowa) do utf8
recode ../b64 < file.txt > file.b64 kodowanie Base64
recode /qp.. < file.txt > file.qp dekoduje drukowalne znaki
recode ..HTML < file.txt > file.html text do HTML
recode -lf windows-1252 | grep euro przegląda tablice znaków
echo -n 0x80 | recode latin-9/x1..dump pokazuje jaki kod reprezentuje w latin-9 charmap
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
Pozostałe
lynx -dump -width=999 http://www.ummon.org/index.html >cmd.txt Tworzy kopię tekstową strony
apropos word wypisuje strony man odnoszące się do słowa word.
which command wyświetla pełną ścieżkę polecenia command
time command pokazuje jak długo wykonuje się polecenie command
time cat Startuje stoper. Ctrl-D zatrzymuje stoper.
nice command uruchamia polecenie z command z niższym priorytetem
renice 19 -p $$ ustawia najniższy priorytet dla shella (skryptu). Używaj dla nie interaktywnych zadań
look prefix szybkie szykanie (sortowane) w słowniku
grep --color expr /usr/share/dict/words podświetla wystąpienia wyrażenia regularnego exprw katalogu
gpg -c file koduje plik
gpg file.gpg dekoduje plik
echo 'wget url' | at 01:00 downloaduje url o 1 w nocy do aktualnego katalogu
echo "mail -s 'get the train' f@ummon.org < /dev/null" | at 17:45 wysyła email przypominający
watch -n1 'cat /proc/interrupts' ciągły podląd zmieniających się danych
alias hd='od -Ax -tx1z -v' wygodny hexdump. (przykładowo hd /proc/self/cmdline | less)
alias realpath='readlink -f' rozwija ścieżkę do postaci kononicznej. (przykładowo realpath ~/../$USER)
set | grep $USER przeszukuje aktualne środowisko
ls /usr/bin | pr -T9 -W$COLUMNS drukuje w 9 kolumnach o szerokości terminala
touch -c -t 0304050607 file ustawia znacznik czasu pliku (YYMMDDhhmm)
touch nowyplik tworzy nowy plik
> nowyplik tworzy nowy plik
mc (polecenia obowiązują dla klawiatury pl_PL latin2)
Esc+a wstawia aktualną ścieżkę do linii poleceń
Esc+c szybka zmiana katalogu
Esc+g przejscie na górę listy plików
Esc+h wywołuje historię poleceń
Esc+j przejscie na dół listy plików
Esc+o przełączenie drugiego okna na ten sam katalog
Esc+r odświerzenie zawartości katalog
Esc+t przełączenie pomiędzy jednym a dwoma widokami (również zmiana wyświetlanych kolumn)
Esc+v przejscie na górę listy plików
Esc+y wejście do zaznaczonego katalogu
Esc+1 wywołanie pomocy
Esc+2 wywołanie menu użytkownika
Esc+3 podgląd
Esc+4 edycja
Esc+5 kopiowanie pliku/katalogu
Esc+6 przeniesienie pliku/katalogu
Esc+7 utworzenie katalogu
Esc+8 skasowanie pliku/katalogu
Esc+9 wywołanie górnego menu
Esc+0 wyjście
Esc+A wstawia aktualną ścieżkę do linii poleceń z przeciwnego panelu
Esc+H wywołuje historię katalogów
Alt+g przejście do góry listy plików
Alt+h przywołanie historii poleceń
Alt+j przejście do dołu listy plików
Alt+p przywołuje poprzednie polecenie
Alt+t przełączenie pomiędzy jednym a dwoma widokami (również zmiana wyświetlanych kolumn)
Alt+u przełącza do następnego katalogu
Alt+y przełącza do poprzedniego katalogu
Alt+Tab wywołuje listę poleceń
Ctrl+i zmiana aktywej strony
Ctrl+l przerysowanie ekranu
Ctrl+m wstawia aktualny plik/katalog do linii poleceń
Ctrl+n przejscie o jedną pozycję w dół
Ctrl+o włącza/wyłącza panele
Ctrl+p przejscie o jedną pozycję w górę
Ctrl+t zaznacza pozycję
Ctrl+u zmiana aktywej strony
Ctrl+v przejscie na dół listy plików
Ctrl+z natychmiastowe zakończenie procesu
Ctrl+Enter wstawia aktualny plik/katalog do linii poleceń
Ctrl+PgUp przejście do katalogu nadrzędnego
Tab zmiana aktywnej strony
Insert przełączenie wyboru podświetlonego pliku/katalogu
Home prejście do początku listy
End przejście do końca listy
PgUp strona w górę
PgDown strona w dół
CursorUp przejscie o jedną pozycję w górę
CursorDown przejscie o jedną pozycję w dół
- odznaczenie wzorca z selekcji
+ dodanie wzorca selekcji
* przełączenie selekcji
F1 wywołanie pomocy
F2 wywołanie menu użytkownika
F3 podgląd
F4 edycja
F5 kopiowanie pliku/katalogu
F6 przeniesienie pliku/katalogu
F7 utworzenie katalogu
F8 skasowanie pliku/katalogu
F9 wywołanie górnego menu
F10 wyjście