237. Podstawowe komendy Linuxa.

 

 

Ten spis zawiera polecenia wykonywane z linii komend w Linuxie, które są użyteczne w codziennej pracy.
Przykłady zaznaczone gwiazdką są poprawne/bezpiecznie, zatem można je od razu wykonać w terminalu.
Wszystkie komendy zostały przetestowane zarówno na Fedora i jaki Ubuntu.

Na innych dystrybucjach Linuxa komendy mogą nie działać, czasami można je doinstalować ręcznie.

 

Niżej podane polecenia, to tylko namiastka tego, co oferuje nam Linux. Wszystko jednak zależy od zainstalowanego oprogramowanie w naszym systemie.

 

Informacje na temat użycia danego programu znajdziesz bezpośrednio w podręczniku systemowym man. Wystarczy wpisać man mount, a na ekranie pojawi się opis, składnia i informacje na temat tego programu. Oczywiście mamy możliwość wyświetlenia "streszczenia" opcji po dodaniu argumentu --help lub (niekoniecznie występujący w każdym programie) -h. Niekiedy wystarczy wpisać samą nazwę programu, a program sam wyświetli sposób użycia i ewentualnie, jak możemy uzyskać informacje o nim!

 

Wielką zaletą systemowego Basha jest łączenie poszczególnych poleceń. Jest to bardzo pożyteczne, gdy np. chcemy wyświetlić zawartość dużego katalogu - np. /usr/bin. Nazwy plików nie zmieściły by się na ekranie, więc nie ujrzelibyśmy ich wszystkich. Tu z pomocą idzie na chociażby wyżej wymieniony 'less':

 

imoteph@debian:~$ ls /usr/bin | less

 

Pionowa kreska "łączy" dane polecenia, dzięki czemu możemy w tym przypadku przewijać listę plików.

 

Aby ujrzeć wszystkie globalne programy, wystarczy, że wciśniemy dwa razy tabulator. Bash tylko spyta czy je wyświetlić. Poda oczywiście ile tych plików będzie, dzięki czemu łatwo możemy sprawdzić ile ich mamy w systemie!

Komenda

Opis

apropos whatis

Pokazuje komendy odpowiadające danemu wyrazowi. Zobacz też threadsafe

man -t man | ps2pdf - > man.pdf

Tworzy dokument .pdf z podręcznika man

 

which command

Pokazuje pełną ścieżkę dla komendy

 

time command

Pokazuje czas trwania komendy

time cat

Uruchamia stoper. Nacisnięcie CTRL-d przerywa wykonywanie. Zobacz też sw

nice info

Uruchamia komendę z niższym priorytetem (W tym wypadku czytnik “info”)

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 dir && command)

Przechodzi do katalogu, wykonuje komendę i wraca z powrotem

pushd .

Put current dir on stack so you can popd back to it

Szukanie plików

alias l='ls -l --color=auto'

Pokazuje zawartość katalogu

ls -lrt

Pokazuje zawartość katalogu według daty. Zobacz też newest oraz find_mm_yyyy

ls /usr/bin | pr -T9 -W$COLUMNS

Pokazuje zawartość katalogu w dziewięciu kolumnach

 

find -name '*.[ch]' | xargs grep -E 'expr'

Szuka wyrazu 'expr' w obecnym katalogu i poniżej. Zobacz też findrepo

 

find -type f -print0 | xargs -r0 grep -F 'example'

Szuka danego wyrazu tylko w nazwie pliku w obecnym katalogu i poniżej

 

find -maxdepth 1 -type f | xargs grep -F 'example'

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 file

Szyfruje plik

 

gpg file.gpg

Odszyfrowuje plik

 

tar -c dir/ | bzip2 > dir.tar.bz2

Tworzy skompresowaną kopię katalogu dir/

 

bzip2 -dc dir.tar.bz2 | tar -x

Odtwarza zawartość kopii (dla plików tar.gz użyj gzip zamiast bzip2)

 

tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'

Tworzy skompresowaną i zaszyfrowana kopię katalogu /dir a następnie kopiuje go na inny komputer

 

find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2

Tworzy kopię z części plików zawartych w katalogu dir/ oraz innych w nim zawartych

 

find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents

Kopiuje część plików zawartych w katalogu dir/ oraz innych w nim zawartych do katalogu dir_txt

 

( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p )

Kopiuje (wraz z prawami) katalog copy/ do katalogu /where/to

 

( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p )

Kopiuje (wraz z prawami) zawartość katalogu copy/ do katalogu /where/to

 

( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p'

Kopije (wraz z prawami) katalog copy/ na inny komputer remote:/where/to/

 

dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'

Tworzy kopię dysku na innym komputerze

rsync (Network efficient file copier: do testów służy opcja --dry-run)

 

rsync -P rsync://rsync.server.com/path/to/file file

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:/dir/ . && rsync -auz -e ssh . remote:/dir/

Synchronizuje aktualny katalog z katalogiem na serwerze

ssh (Secure SHell)

 

ssh $USER@$HOST command

Wykonuje command na $HOST jako $USER (standardowo commend to shell)

ssh -f -Y $USER@$HOSTNAME xeyes

Wykonuj GUI command na $HOST jako $USER

 

scp -p -r $USER@$HOST: file dir/

Kopiuje wraz z prawami na $HOST do katalogu domowego użytkownika $USER

 

ssh -g -L 8080:localhost:80 root@$HOST

Przekazuje połączenia do $HOSTNAME:8080 na $HOST:80

 

ssh -R 1434:imap:143 root@$HOST

Przekazuje połączenie z $HOST:1413 na imap:143

wget (multi purpose download tool)

(cd cli && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html)

Tworzy kopię strony internetowej w lokalnym katalogu

 

wget -c http://www.example.com/large.file

Kontynuuje pobieranie częściowo ściągniętego pliku

 

wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/dir/

Kopiuje zbiór plików do lokalnego katalogu

 

wget ftp://remote/file[1-9].iso/

FTP wspiera bezpośrednio wyrażenia regularne (globbing)

wget -q -O- http://www.pixelbeat.org/timeline.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.example.com/

Efektywnie uaktualnia lokalna kopię strony (można użyć w programie cron)

sieć (Uwaga komendy ifconfig, route, mii-tool, nslookup są przestarzałe)

 

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 (lub wyłacza) 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 pixelbeat.org

Pokazuje informacje IP dla nazwy DNS albo na odwrót

hostname -i

Pokazuje lokalny adres ip (równoważne z host `hostname`)

whois pixelbeat.org

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ć w systemie Windows (uwaga: pakiet samba udostępnia w całości narzędzia związane z usługami sieciowymi systemu Windows)

smbtree

Pokaż komputery z Windowsem. Zobacz też polecenie findsmb

 

nmblookup -A 1.2.3.4

Pokaż windowsową nazwę (netbios) dla danego adresu ip

 

smbclient -L windows_box

Pokaz katalogi współdzielone na komputerze z Windowsem lub serwerze samby

 

mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share

Podłącz katalog współdzielony

 

echo 'message' | smbclient -M windows_box

Wyślij wiadomość popup do komputera z windowsem (w XP SP2 standardowo wyłączone)

text manipulation (uwaga: sed używa stdin i stdout, zatem jeśli chcesz zmienić plik dodaj <oldfile >newfile)

 

sed 's/string1/string2/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 metaznaki powłoki aktywne wewnątrz cudzysłowia

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

 

sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q'

Pokazuje tytuł stron internetowej napisanej w HTML

 

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 linie

operacje na zbiorach (uwaga: Aby przyśpieszyć działanie można ustawić następującą zmienną export LANG=C. Tym samym zakłada się brak identycznych linii w pliku)

 

sort file1 file2 | uniq

Połączenie nieposortowane plików

 

sort file1 file2 | uniq -d

Część wspólna nieposortowane plików

 

sort file1 file1 file2 | uniq -u

Różnica nieposortowane plików

 

sort file1 file2 | uniq -u

Symetryczna różnica nieposortowane plików

 

join -t'\0' -a1 -a2 file1 file2

Połączenie posortowane plików

 

join -t'\0' file1 file2

Część wspólna posortowane plików

 

join -t'\0' -v2 file1 file2

Różnica posortowane plików

 

join -t'\0' -v1 -v2 file1 file2

Symetryczna różnica posortowane plików

metematyka

echo '(1 + sqrt(5))/2' | bc -l

Proste obliczenia (obliczenie φ). Zobacz też bc

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.58s' '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 kolumne z cyframi. Zobacz też add i funcpy

kalendarz

cal -3

Pokazuje kalendarz

cal 9 1752

Pokazuje kalendarz dla danego miesiąca i roku

date -d fri

Pokazuję datę najbliższego piątku. Zobacz też day

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 'get the train' P@draigBrady.com < /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 "%'d\n" 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`"

Pokazuje informacje o ustawieniach lokalnych

LANG=en_IE.utf8 locale int_prefix

Pokazuje lokalne informacje dla danego kraju. Zobacz też ccodes

locale | cut -d= -f1 | xargs locale -kc | less

Pokazuje pola dostępne w lokalnej bazie

recode (Polecenia iconv, dos2unix, unix2dos są przestarzałe)

recode -l | less

Pokazuje dostępne konwersje (aliasy na każdej linii)

 

recode windows-1252.. file_to_change.txt

Windows "ansi" do lokalnego kodowania (automatyczna konwersja CRLF )

 

recode utf-8/CRLF.. file_to_change.txt

Windows utf8 do lokalnego kodowania

 

recode iso-8859-15..utf8 file_to_change.txt

Latin9 (europa zachodnia) to utf8

 

recode ../b64 < file.txt > file.b64

Kodowanie Base64

 

recode /qp.. < file.txt > file.qp

Quoted printable decode

 

recode ..HTML < file.txt > file.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

CDs

 

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 (użyj dev=ATAPI -scanbus aby upewnić się co do urządzenia)

 

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 (Zobacz też cdrdao)

 

oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'

Tworzy pliki ogg z plików wav

disk space (Zobacz też FSlint)

ls -lSr

Pokazuje pliki według wielkości, największe na końcu

du -s * | sort -k1,1rn | head

Pokazuje katalogii zajmujących największą ilość miejsca w bieżącym katalogu. Zobacz też dutop

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). Zobacz też truncate

monitorownie/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. Zobacz też tcpdump_not_me

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. Zobacz też ps_mem.py

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 (zobacz też sysinfo) ('#' znaczy, że musi być wykonane z prawami root)

uname -a

Pokazuje wersje jądra i architekturę systemu

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

interactive (zobacz też linux keyboard shortcuts)

readline

Edytor linowy używany przez bash, python, bc, gnuplot, ...

screen

Wirtualne terminale z możliwością odłączania oi podłączania

mc

Manager plików który może przeglądać rpm, tar, ftp, ssh, ...

gnuplot

Interaktywny i obsługujący skrypty program do rysowania

links

Przeglądarka internetowa

różne

alias hd='od -Ax -tx1z -v'

Podręczna zmiana hexdump. (zastosowanie np: • hd /proc/self/cmdline | less)

alias realpath='readlink -f'

Pokazuje ścieżkę w postaci kanonicznej. (usage e.g.: • realpath ~/../$USER)

set | grep $USER

Przeszukuje aktualne ustawienia środowiska

 

touch -c -t 0304050607 file

Zmienia datę pliku (YYMMDDhhmm)

python -m SimpleHTTPServer

Uruchamia prosty serwer HTTP i tworzy drzewo plików w aktualnym katalogu na http://$HOSTNAME:8000

  Żródło :http://www.pixelbeat.org/cmdline_pl_PL.html

 

Podstawowe komendy i polecenia w Linux

http://www.pz2.edu.pl/strony/przewodnik/tekst/6-kurs_linuxa.html 

http://newbie.linux.pl/wydruk.php?wydruk=15&show=artykul

http://www.gabo.hi.pl/linux/polecenia.htm

http://newbie.linux.pl/?id=article&show=199

 

Linux - struktura katalogów - czyli co, gdzie szukać.

 

www.hal.trzepak.net