Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

VN:F [1.9.22_1171]
Rating: 5.0/5 (45 votes cast)

Polecenia powłoki

Uwaga: Kolejne dodawane do listy paczki poleceń pojawiają się we wpisach bloga w kategorii bash. Tutaj prezentowany jest tekst jednolity.
Ostatnia zmiana: 11 XI 2012, wszystkich poleceń: 423.

Wstęp

Różne dystrybucje Linuksa oferują własne narzędzia GUI do zarządzania systemem, które z czasem zmieniają wygląd, wykorzystywaną technologię i funkcjonalność aby sprostać oczekiwaniom zmieniających się gustów estetycznych. Użytkownik który opanuje formatki administracyjne Fedory 4 z GNOME może już czuć się nieswojo w Fedorze 13 z KDE, nie mówiąc już o Mandrivie czy SUSE. Na wielu serwerach produkcyjnych w ogóle nie ma środowiska graficznego i pozostaje jedynie zdalny wiersz poleceń przez SSH. Nade wszystko jednak żadna formatka GUI nie dorówna elastyczności powłoki. W rezultacie dobra znajomość wiersza poleceń w Linuksie jest kluczem do opanowania tego systemu i pozwala radzić sobie w każdych warunkach.

Co jakiś czas na rynku wydawniczym odżywa pomysł opublikowania swoistej „Księgi Czarów” z praktycznymi przykładami użycia ciekawych poleceń shella. Wydany w 1995 roku Słownik poleceń systemów UNIX i X A.Southertona jest już bardzo przestarzały i skupia się na archaicznych odmianach UNIXa. Z kolei wydana w 2005 roku książka Linux. Najlepsze przepisy zmusza do czytania prozy, ma 800 stron i trąci myszką.

Tak więc dochodzimy do sedna: 20-30 treściwych stron A4 z pogrupowanymi przykładami poleceń dla średniozaawansowanych użytkowników Linuksa (powiedzmy takich którzy „mieli go na studiach”). Wymienione niżej zaklęcia są na ogół niezależne od używanej dystrybucji Linuksa. Niektóre z nich wymagają uprawnień administratora, a niektóre być może na Twojej dystrybucji wymagają zainstalowania dodatkowego pakietu oprogramowania.

W praktyce w 80% przypadków pracy pod Linuksem korzystamy z 20% spośród wszystkich dostępnych poleceń shella. Nawet jeśli jakieś polecenie ma kilkadziesiąt opcji, i tak rzadko kiedy używamy więcej niż małych kilku z nich! Zapraszam Cię do wzbogacania zawartej tu wiedzy w komentarzach lub mailu – wybrane polecenia spośród nadesłanych uzupełnią ten artykuł, wraz z podziękowaniami.

Użytkownicy/konta/grupy

last
pokazuje kiedy, na jakie konto i skąd miały miejsce logowania do systemu, jak również restarty maszyny
last reboot
czasy ostatnich restartów systemu
lastb
informacje o ostatnich nieudanych próbach logowań do systemu
w
kto jest aktualnie zalogowany w systemie, skąd się łączy i jakie polecenie shella aktualnie wykonuje
groups
wyświetla grupy do których należy bieżący użytkownik
id misio
wyświetla gid i uid użytkownika misio
chage -l misio
informacje o ważności hasła do konta misio
passwd -l piotrek
blokuje UNIXowe konto piotrek
passwd -S piotrek
status konta piotrek (czy zablokowane, kiedy ostatnio zmienione hasło, minimalny i maksymalny wiek hasła w dniach, itp.)
passwd -u piotrek
odblokowuje konto piotrek
passwd -e login
zmienia hasło użytkownikowi i nakazuje mu zmienić je przy pierwszym logowaniu
passwd -x 180 -w 5 -i 1 login
powoduje wygaśnięcie hasła wskazanego użytkownika po sześciu miesiącach z ostrzeżeniem 5 dni przed terminem
userdel -r login
usuwa konto wraz z katalogiem domowym użytkownika (opcja -r); o pliki użytkownika umieszczone gdzie indziej trzeba się zatroszczyć samemu
groupdel nazwa_grupy
usuwa grupę z pliku /etc/group
groupadd qtss
tworzy nową UNIXową grupę użytkowników; opcja -g dodaje nową grupę o podanym id (konieczne przy tworzeniu grupy systemowej)
groups
do jakich grup należy zalogowany użytkownik
pwck
program do analizy poprawności plików /etc/passwd, /etc/shadow
grpck
program do analizy poprawności pliki /etc/gshadow i /etc/group
finger login
wyświetlony w sposób przystępny dla człowieka skrót informacji zawartej w pliku /etc/passwd
useradd -c "Imie Nazwisko" -d /home/login -m -s /bin/bash login
tworzy nowe konto UNIXa o podanym loginie, katalogu domowym i shellu (hasło trzeba potem ustawić oddzielnie poleceniem passwd)
adduser gucio
tworzy nowe konto UNIXowe o loginie gucio
repquota -as
raport na temat limitów dyskowych dla poszczególnych użytkowników
sudo -l
pozwala bieżącemu użytkownikowi poznać zestaw poleceń jakie może wykonać za pomocą sudo
chsh login
pozwala zmienić domyślną powłokę użytkownika o podanym loginie

Programowanie

ldd /bin/ls
jakie biblioteki *.so są wykorzystywane przez program ls
statifier /bin/ls staticls
wykrywa biblioteki *.so wykorzystywane przez program i tworzy jeden plik binarny (staticls) ze statycznie linkowanymi bibliotekami
strace -c ls >/dev/null
wywołania systemowe wywołane i otrzymane przez proces
strace -f -e open ls >/dev/null
wywołania biblioteczne wykonane przez proces

Administracja

pwgen 10 3
generuje i wyświetla na stdout 3 hasła o długości 10 znaków
cat /etc/issue
informacje o używanej dystrybucji
cat /proc/meminfo
szczegółowy raport o wykorzystaniu pamięci
cat /proc/cpuinfo
szczegółowe informacje o procesorach maszyny
uname -a
nazwa komputera, wersja jądra, rodzaj procesora, używany system operacyjny
lspci -vv
informacje o urządzeniach na magistrali PCI (karta sieciowa, graficzna, itp.)
lspci -k
jakie moduły jądra są związane z poszczególnymi urządzeniami na magistrali PCI
lsusb
informacje o urządzeniach podłączonych do USB
free
bieżące zużycie pamięci RAM i swap
vmstat
statystyki pamięci wirtualnej
lsmod
aktualne użycie modułów jądra
dmesg
zapis wszystkiego na temat sprzętu, co zostało wykryte przez jądro; podaje zawsze aktualne informacje, nawet jeśli zmieniamy konfigurację sprzętu podłączając/odłączając urządzenia USB
less /var/log/messages
podgląd logów dziennika systemowego
uptime
czas działania systemu, średnie obciążenie z ostatnich 1, 5 i 15 minut
shutdown now
zamyka system (opcja -r restartowałaby system)
locale
wyświetla ustawienia narodowe dla systemu (porządek sortowania, formatowanie waluty, rozmiar papieru, kodowanie znaków itp.)
lsb_release -a
informacje o dystrybucji Linuksa (Linux Standard Base)
modprobe -l bluetooth
pełna ścieżka pliku modułu jądra
modprobe suni option1=value
instalowanie modułu jądra suni
modprobe -r suni
usuwanie modułu suni z jądra (można też użyć rmmod)
modinfo nazwa_modulu
informacje o module jądra
cat /proc/interrupts
jak przerwania są dystrybuowane pomiędzy procesami (przydatne przy diagnostyce konfliktów sprzętowych)
reboot -f
restart maszyny
watch -d iostat
wyświetla na pełnym ekranie wyniki polecenia iostat, powtarza operację co 2 sekundy a opcja -d pokazuje kolorem różnice wyników między kolejnymi wywołaniami
iwconfig
informacje o bezprzewodowych interfejsach sieciowych (WLAN)
dhclient eth0
ręczne wymuszenie przydzielenia adresu IP przez DHCP
iwlist scanning
informacje o sieciach bezprzewodowych dostępnych w pobliżu
who -r
bieżący poziom działania systemu i czas uruchomienia maszyny
echo "DISPLAY=:0 xclock" | at now + 15 minutes
kolejkuje wykonanie programu xclock za 15 minut
atq
lista zadań zaplanowanych poleceniem at
atrm 1
usuwa wskazane zadanie zaplanowane poleceniem at
sysctl -a
wyświetla bieżące ustawienia jądra
sysctl -w kernel.threads-max=16000
zmiana wartości parametru jądra (rozważ też edycję pliku /etc/sysctl.conf)
ipcs
w jaki sposób procesy używają pamięci współdzielonej
lshal
wypisuje zawartość bazy Hardware Abstraction Layer (HAL); żeby obejrzeć te same dane w okienku GUI można użyć hal-device-manager lub gnome-device-manager)
lshw -html > hardware.html
raport na temat sprzętu w formacie HTML
dmidecode -t bios
informacje o BIOSie
script mojelogi.log
od tej pory wszystko co jest wyświetlane na terminalu ląduje dodatkowo w pliku mojelogi.log (aż do użycia polecenia Ctrl+D, exit itp.)
swapon -s
informacje o bieżącej przestrzeni wymiany i stopniu jej użycia
gphoto2 --auto-detect
wyświetla listę aparatów cyfrowych podłączonych do USB
gphoto2 --abilities
informacje o możliwościach podłączonych do USB aparatów cyfrowych
hdparm -i /dev/hda
informacje o dysku twardym
hdparm -tT /dev/sda
test wydajności dysku (odczyt i zapis 1GB)
sane-find-scanner -q
wypisuje informacje o wykrytym skanerze
scanimage –format tiff > plik.tif
skanuje stronę do pliku w formacie TIFF
cdrecord --atip dev=/dev/hdc
wyświetla informację o możliwościach napędu CDROM
telinit q
zmusza proces init do ponownego wczytania pliku /etc/inittab
eject
wysuwa CD-ROM
mpstat -P ALL
statystyki rdzeni procesora
setleds -D +caps
włącza diodę CapsLock na klawiaturze
chsh
pozwala zmienić domyślną powłokę dla bieżącego konta; chsh --list-shells zwraca listę dostępnych powłok

Sieć

whois www.example.com
sprawdza domenę w bazie Whois (właściciel domeny i jego dane teleadresowe)
ethtool --change eth0 autoneg off speed 100 duplex full
Ręcznie ustawia prędkość urządzenia sieciowego
iwconfig eth1 rate 1Mb/s fixed
Ręcznie ustawia prędkość urządzenia bezprzewodowego
netstat -tanp
wyświetla informację o otwartych połączeniach TCP jak również portach na których serwery oczekują na połączenia od klientów
/sbin/ip addr
informacje o interfejsach, np. adres IP, adres fizyczny (MAC) (ew. można użyć /sbin/ifconfig)
/sbin/ip route
IP, maska sieci, domyślna brama
route
tabela rutingu
ping szatan
sprawdza czy host szatan w ogóle działa i jest podłączony do sieci
telnet szatan 1521
sprawdza czy na porcie 1521 szatana nasłuchuje jakiś proces (zapewne Oracle)
mtr merlin.pl
wyświetla hosty po drodze od lokalnego Linuxa do komputera merlin.pl (można też użyć traceroute merlin.pl)
nslookup 10.115.115.217
nazwa hosta dla wskazanego IP (zamiast nslookup można użyć dig)
dig tiger.com.pl xafr
wyciąga z serwera DNS całą listę znanych nazw i ich adresów
hping3 -S mojhost -c 2 -p 80
wysyła na port 80 komputera myhost 2 pakiety SYN protokołu TCP
hping3 -a 10.0.44.45 -S james -c 2 -p 80
jak wyżej, ale sfałszowany źródłowy IP
hostname
nazwa lokalnej maszyny
ip addr show dev eth0
szczegóły interfejsu eth0
ip link set up dev eth1
włącza (podnosi) interfejs eth1
ip route add 192.168.42.0/24 via 192.168.1.99
to samo co route add -net 192.168.42.0/24 gw 192.168.1.99 (konfiguracja bramy głównej rutingu)
ip neigh
nowszy odpowiednik polecenia arp (wyświetla tablicę ARP)
ss -a
informacje o wszystkich otworzonych gniazdach
nmap -sS -sV -0 -p 0-65535 hostname
skanowanie SYN (opcja -sS) wszystkich portów hosta hostname, próba wykrycia systemu operacyjnego (opcja -0), profilu usług (nazwa i wersja serwera) działających na wykrytych portach (opcja -sV)
nmap -sTUR -F -P0 -O
dość drobiazgowo skanuje komputer o podanym IP
whois merlin.pl
Informacje adresowe organizacji lub indywidualnej osoby, która zarejestrowała daną domenę internetową
mail -s "Pliczek" paradox@tiger.com.pl < file.txt
Wysyła plik tekstowy pod wskazany adres
watch netstat -i inet
natężenie ruchu na każdym interfejsie sieciowym
telnet towel.blinkenlights.nl
obejrzyj film Gwiezdne Wojny w trybie tekstowym
sudo python -m smtpd -n -c DebuggingServer localhost:25
stawia prosty serwer pocztowy na lokalnym hoście
tcpflow -i eth0 -c -e port 143
wyświetla na konsoli (-c) dane przesyłane po sieci na wskazanym interfejsie i porcie 143, odróżniając kolorem dane wejściowe od wyjściowych (opcja -e)
geoiplookup linuxfoundation.org
wyświetla skróconą i pełną nazwę kraju z którego pochodzi wskazane IP lub domena

XWindow

Xephyr -ac -screen 1200×675 -query 127.0.0.1 :1
uruchamia w okienku serwer X łącząc się przez XDMCP ze wskazanym hostem
X -broadcast
stawia serwer X komunikując się z dowolnym (pierwszym który się zgłosi) hostem przez XDMCP
X -query nazwa_hosta
stawia serwer X komunikując się przez XDMCP ze wskazanym hostem
xhost +
pozwala dowolnemu klientowi z dowolnego hosta połączyć się z serwerem X
ddcprobe -?
informacje o obsługiwanej rozdzielczości, karcie graficznej i monitorze
xrandr -q
informacja o dostępnych ekranach, w tym nazwa i rozdzielczości ekranu obsługiwane przez sterownik graficzny
xrandr -s 1024×768
ustawia rozdzielczość ekranu
xrandr --output VGA --mode 1024×768 --same-as LVDS --output LVDS --mode 1024×768
ustawia porty VGA (projektor) i LVDS (ekran laptopa) w trybie klonowania; nazwy ekranów trzeba podać zgodnie z wynikami polecenia xrandr -q
xrandr --output LVDS --auto --left-of VGA --output VGA --auto
łączy dwa ekrany z których każdy wyświetla optymalną dla siebie rozdzielczość, tworząc jeden duży wirtualny ekran; nazwy ekranów trzeba podać zgodnie z wynikami polecenia xrandr -q
showrgb
wyświetla nazwy kolorów rozpoznawane przez X Window
glxinfo
informacje o bieżącym stanie akceleracji sprzętowej; w szczególności najważniejszy jest komunikat direct rendering:
glxgears
klasyczny programik do testowania DRI
xlsfonts
lista czcionek zainstalowanych w systemie
xev
program wyświetlający szczegółowe informacje o zdarzeniach generowanych przez użytkownika (naciśnięcie/puszczenie klawisza, ruch myszką itp.)
notify-send 'Tytul' 'komunikat'
wyświetla GNOME'owy popup z komunikatem

Terminal

tty
nazwa bieżącego terminala
write paradox
wyświetla tekstową informację na terminalu wskazanego użytkownika
wall < fileToSend.txt
wyświetla tekstową informację na terminalu wszystkich użytkowników danego systemu
mesg n
nie pozwala na wyświetlanie informacji na konsoli
writevt --term=/dev/pts/3 --text=foo
wypisuje tekst na innej konsoli

Sztuczki Basha

cp filename{,.bak}
to samo co cp filename filename.bak
(cd /tmp && ls)
przejdź do katalogu, wykonaj polecenie i powróć do poprzedniego katalogu
echo {0..1}{0..1}{0..1}{0..1}
wypisuje wszystkie binarne liczby 4-cyfrowe
disown -a && exit
zamyka shella bez zabijania procesów potomnych
sudo !!
uruchom ostatnie polecenie jako root
export CDPATH=.:..:../..:~/:~/katalog_dowiazan
Zmienna $CDPATH przechowuje listę rozdzielanych znakami dwukropka nazw katalogów, które są przeszukiwane przez wbudowane polecenie cd. Pełni ona taką samą funkcję dla instrukcji cd, jak zmienna $PATH dla uruchamianych skryptów. W przykładzie często używane nazwy katalogów w wartości zmiennej; katalog_dowiązań oznacza katalog przechowujący jedynie dowiązania symboliczne do innych często wykonywanych katalogów
cd
przejście do katalogu domowego
cd ~piotrek
przechodzi do katalogu domowego użytkownika piotrek
cd –
przejście do poprzedniego katalogu (sprzed poprzedniego wykonania cd)
pushd nowy_katalog
zapisanie dotychczasowego katalogu na stosie i przejście do nowego katalogu
dirs -v
wyświetla aktualny stos katalogów
pushd +2
przeniesienie na szczyt stosu wpisu o numerze 2 i jednoczesna zmiana bieżącego katalogu na odpowiadający temu wpisowi
!-4
powtórz czwarte polecenie od końca
!string
powtórz najświeższe polecenie rozpoczynające się łańcuchem string
!?string?
powtórz najświeższe polecenie zawierające (gdziekolwiek) łańcuch string
^napis1^napis2^
powtórz ostatnie polecenie z podmienionym napis1 na napis2
!20:p
tylko wyświetla polecenie o nrze 20, bez wykonywania go
history -c
czyści całą historię
shopt -s histappend
wymusza dopisywanie historii użytych poleceń na końcu pliku historii przy kończeniu pracy interaktywnej sesji Basha
export HISTTIMEFORMAT='%Y-%m-%d_%H:%M:%S '
(od Basha 3.0) powoduje że wraz z poleceniem w historii będzie pamiętany (i zapisywany do pliku historii) czas jego wykonania; polecenie history wyświetli czas wydania każdego polecenia w podanym formacie
{ pwd; ls; cd ../gdzies; pwd; ls; } > /tmp/wszystko.txt
Nawiasy klamrowe muszą być otoczone znakami spacji, a na końcu ostatniego grupowanego polecenia musi być średnik. Opcjonalnie można wykorzystać znaki nawiasu okrągłego, nakazując interpreterowi wykonanie poleceń w podpowłoce.
echo opcja $OPTSTR >&5
wypisanie wyniku na 5ty deskryptor
skrypt 3>&1 1>&2 2>&3-
zamienia deskryptory 1 i 2 przy użyciu pomocniczego deskryptora 3 (usuwanego potem)
skrypt 3>&1 1>dziennik.stdout 2>&3- | tee -a dziennik.stderr
zamienia stderr i stdout tak aby można było kierować dane ze strumienia stdout do pliku dziennika, a informacje ze strumienia stderr zarówno na ekran jak i do pliku
diff <(ls /etc/rc2.d) <(ls /etc/rc3.d)
przykład na wstawienie wyników poleceń tam gdzie program oczekuje nazw plików; sprawdź z ciekawości wynik polecenia echo <(/bin/true)
type identyfikator
określa czy identyfikator jest poleceniem wbudowanym, funkcją, aliasem, czy zewnętrznym programem; pokazuje również czy polecenie jest zhaszowane (bash najpierw sięga do hasza, a dopiero w następnej kolejności szuka w katalogach określonych w zmiennej PATH)
builtin echo
uruchamia polecenie wbudowane (bez względu na to czy istnieje funkcja, alias lub polecenie zewnętrzne o tej samej nazwie)
command echo
uruchamia polecenie zewnętrzne ignorując aliasy i funkcje o tej samej nazwie
echo
uruchamia na pewno nie alias
shopt -s dirspell
tabulacja przy wprowadzaniu ścieżki do katalogu próbuje poprawiać pisownię katalogu jeśli użytkownik zrobił literówkę
shopt -q -s cdspell
automatyczna korekta prostych błędów w użyciu polecenia cd
shopt -s nocaseglob
podczas podmiany wartości ścieżek dostępu ignorowana jest wielkość liter
shopt -s globstar
od tej pory ** oznacza pełną listę plików i ścieżek poniżej bieżącego katalogu (począwszy od Bash 4)
set -e
kończy pracę powłoki po zwróceniu przez jakiekolwiek zwykłe polecenie niezerowego kodu zakończenia
set -o vi
edycja poleceń w trybie Vi (zamiast domyślnego trybu Emacs)
set +h
powoduje że polecenia shella nie będą haszowane
set -u
powoduje traktowanie odwołań do nieistniejących zmiennych jako błąd
set -v
powoduje wypisywanie poleceń na stdout w miarę ich wykonywania
unalias -a
usuwa wszystkie aliasy (nawet jeśli jakiś chitrusek zrobił alias dla polecenia unalias)
hash -r
usuwa wszystkie wpisy w tablicy odwzorowań plików wykonywalnych (aby przyspieszyć kolejne wywołania poleceń, powłoka zapamiętuje położenia plików wykonywalnych najczęściej wykonywanych instrukcji; jeden ze sposobów oszukania użytkowników polega na zatruciu tablicy)
ulimit -H -c 0 --
uniemożliwia tworzenie plików core'a (w których mogą być np. hasła)
stty/reset/tset
przywraca poprawne ustawienia terminala (po np. próbie wyświetlenia pliku binarnego); reset i tset mogą być zbyt drastyczne, zwykle stty działa poprawnie
chsh /bin/bash
powoduje że domyślną powłoką na bieżącym koncie UNIXowym będzie Bash; lista dopuszczalnych powłok jest podana w pliku /etc/shells
getopts
polecenie wbudowane shella do użycia przez skrypty do parsowania parametrów wywołania skryptu
mkdir -p ~/misio/pysio/{old,new,dist,bugs}
tworzy od razu wiele katalogów, opcja -p powoduje tworzenie katalogów misio i pysio jeśli jeszcze nie istnieją
getconf -a
wyświetla wartości różnych ograniczeń, np. max. długość polecenia w wierszu wprowadzania (ARG_MAX), max. długość loginu (LOGIN_NAME_MAX), itp.
find katalog -name '*z*' -print0 | xargs -0 program
rozwiązanie problemu ograniczenia długości wiersza wprowadzania; poszczególne argumenty będą rozdzielone znakiem NULL (nie może występować w nazwie pliku), polecenie program będzie wykonane raz lub więcej razy w zależności od ilości parametrów wygenerowanych przez find
logger -p local0.notice „moj komunikat”
pozwala zalogować komunikat do logu systemowego
nc
program NetCat pozwala logować komunikaty przez sieć
(cat tresc_wiadomosci; uuencode /plik_zalacznika nazwa_zalacznika) | mail -s „Temat” odbiorca1@host.pl odbiorca2@host.pl
wysyła maila z treścią i załącznikiem (działanie zależne dość mocno od konfiguracji)
date -d '+4 days' '+%a %Y-%m-%d %H:%M:%S %z'
wyświetla wskazaną datę w podanym formacie
nohup skrypt &
demonizowanie skryptu tak aby działał po wylogowaniu się użytkownika (patrz też screen)
source skrypt
wykonuje w tej samej powłoce polecenia zawarte we wskazanym skrypcie (zwykłe wywołanie skryptu uruchomiłoby go w podpowłoce)
time polecenie
wykonuje polecenie i dodatkowo wypisuje informacje o czasie jego wykonania
ulimit
pozwala odczytywać i ustawiać ograniczenia dla zasobów dostępnych dla procesów uruchamianych z Basha (np. max. rozmiar stosu, max. ilość czasu procesora, wątków, otwartych plików itp.); twardy limit po ustawieniu może być modyfikowany wyłącznie przez administratora; limit miękki może być co najwyżej tak wysoki jak twardy limit

Więcej na temat Basha (skróty klawiaturowe, pisanie skryptów) w osobnym artykule.

Data i czas

cal -m
kalendarz na bieżący miesiąc (-m żeby tydzień zaczynał się od poniedziałku)
cal -y
kalendarz na bieżący rok
date
bieżąca data i czas
date -d '+5 days -2 hours'
pokaż czas przesunięty o określony przedział
date +%d_%m_%Y
wyświetla datę w formacie 15_07_2010
ntpdate tempus1.gum.gov.pl
korekcja bieżącego czasu systemowego w oparciu o wskazany serwer NTP (tutaj: atomowy zegar z Głównego Urzędu Miar)

System plików

rename .cxx .cpp *.cxx
zamienia nazwy plików z .cxx na cpp
rename 'y/A-Z/a-z/' *
konwersja nazw plików w bieżącym katalogu na małe litery
mkdir -p work/{d1,d2}/{src,bin,bak}
tworzy całe drzewo katalogów
tar –exclude-vcs -cfz src.tgz src/
pakuje katalog src ale bez katalogów systemów kontroli wersji (.svn, .git itp.)
stat file
wyświetla metadane wskazanego pliku
stat -f /
informacje o systemie plików wskazanego pliku (typ, max. długość nazwy pliku, liczba bloków/inode'ów, itp.)
fdisk -l
wyświetla informację o dyskach i ich partycjach
chown -R user.grupa katalog
ustawia właściciela (użytkownika i grupę) dla wszystkich katalogów i plików we wskazanym drzewie katalogów
chmod g+rw,o-rwx file
do pliku file dodaje uprawnienia odczytu i zapisu dla grupy oraz zabiera uprawnienia odczytu/zapisu/wykonania dla pozostałych użytkowników
chmod go= file
usuwa uprawnienia dla grupy i świata
chmod g=u file
nadaje grupie takie same uprawnienia jakie ma właściciel
chgrp group file
przypisuje plik file do grupy group
df -HT
pokazuje ilość miejsca wolnego na każdej podmontowanej partycji oraz typy systemów plików (opcja -T)
mount | column -t
wyświetla ładnie sformatowaną w kolumny listę podmontowanych partycji (urządzenie, katalog podmontowania itp.)
ls -altr
wyświetla szczegółową zawartość katalogu sortując pliki tak aby ostatnio modyfikowane znalazły się na końcu
mc
Midnight Commander – manager plików, tekstowy odpowiednik znanego z Windows Norton Commandera
chown -R user.grupa katalog
ustawia nazwę użytkownika i grupy dla wszystkich plików i katalogów w drzewie katalogów zakorzenionym w katalog
grep -ri wzorzec katalog
przeszukuje pliki drzewa katalogów o korzeniu w katalog w poszukiwaniu wzorca (wyrażenie regularne); opcja i ignoruje wielkość liter
find katalog -name '*z*' -print0 | xargs -0 grep wzorzec
podobnie jak poprzednio, ale polecenie find pozwala dużo bardziej selektywnie wybierać pliki do przeszukania (np. pliki o nazwach pasujących do określonego wzorca, pliki modyfikowane nie później niż itp.)
locate fragment_nazwy_pliku
wyszukuje pliki zawierające w nazwach podaną frazę; działa ZNACZNIE szybciej niż find, ale nie ma takich możliwości i tylu opcji
shred -n -2 -z -v /dev/hda1
skutecznie zamazuje dysk lub partycję (w 2 przebiegach) tak aby nie dało się jej odczytać nawet przy użyciu specjalistycznych narzędzi
grave-robber -c /mnt/hda1 -o LINUX2 -d /mnt/hdb1/dane -v
analizuje linuxową partycję hda1 umieszczając wyniki analizy (baza danych o wszystkich plikach, wyjście poleceń df, dpkg, rpm, lsof itp.), kopia wrażliwych plików systemowych, historie poleceń powłok użytkowników, klucze SSH użytkowników itp.) we wskazanym katalogu
gpart /dev/hda
skanuje cały dysk w poszukiwaniu sygnatur systemów plików i w ten sposób wykrywając położenia początków i końców systemów plików, co pozwala odtworzyć tablicę partycji; najlepiej radzi sobie z partycjami podstawowymi, a mniej z rozszerzonymi; czasem trzeba ręcznie poprawić wykryte ustawienia; można użyć opcji: -f wymusza dokładniejsze skanowanie, -i interaktywne pytanie użytkownika czy się zgadza z ustaleniem programu
gpart -b file -W /dev/hda /dev/hda
zapisuje zrekonstruowaną tablicę partycji na wskazanym urządzeniu, archiwizując poprzednią zawartość tablicy partycji w pliku file
testdisk /dev/sda
skanuje i naprawia partycje dyskowe (testdisk pozwala odzyskać utracone partycje, np. gdy tablica partycji uległa zniszczeniu)
ntfsfix /dev/sda1
naprawia system plików NTFS (tylko podstawowe czynności naprawcze)
foremost -a -o /media/disk -i /dev/sda2
skanuje partycję /dev/sda2 pod kątem znanych typów plików (obrazki, video, niektóre typy dokumentów ale NIE pliki tekstowe) i odtwarza je na partycji /media/disk; opcja -a powoduje poszukiwanie częściowo zachowanych plików i próbuje odtworzyć co tylko się da
growisofs -Z /dev/scd0 DVD-image.iso
wypala obraz płyty na płytce DVD
cdrecord dev=/dev/hdc blank=fast mini.iso
wypala na płytce CD plik mini.iso
mkdosfs -F 16 /dev/sda1
formatowanie napędu w FAT16
mount /dev/sda1 /mnt/sda1
ręczne montowanie partycji /dev/sda1 w katalogu /mnt/sda1 (aby montować automatycznie, trzeba dodać wpis w pliku /etc/fstab)
mount -t tmpfs -o size=60m tmpfs /media/ramdisk/
tworzenie RAM-dysku
mount -a
montuje wszystkie systemy plików wymienione w /etc/fstab
fuser -km /mnt/hda2
wymusza umount na zajętym urządzeniu
umount /dev/sda1
odmontowuje partycję /dev/sda1
genisoimage -J -R -m *.html -x tmp -V "Backup" -o myfile.iso /directory/data
Tworzy plik myfile.iso z etykietą „Backup” zawierający drzewo katalogów /directory/data, z wyjątkiem plików *.html i katalogu tmp; włączony jest styl Joliet (opcja -J, bardziej UNIXowy Rockridge osiągamy opcją -r) z zachowaniem uprawnień i właścicieli plików (opcja -R); genisoimage z powodów licencyjnych zastępuje stary program mkisofs
mkfs -t ext3 /dev/sda1
tworzy system plików ext3 na partycji /dev/sda1
fsck /dev/sda1
sprawdzanie integralności systemu plików na wskazanej partycji
mount -o remount,ro /media/usb
odmontowuje dany system plików i podmontowuje ponownie, ale ze zmienionymi parametrami (np. żeby zmienić rw na ro)
mount -o loop myfile.iso /mnt/tmp
pozwala przetestować obraz ISO podłączając go jako system plików (odmontowujemy poleceniem umount /mnt/tmp)
du -sk /usr
ilość pamięci dyskowej w KB zajmowanych przez poddrzewo plików o korzeniu /usr
du -s * | sort -rn | head
wyświetl 10 największych podkatalogów bieżącego katalogu
whereis program
pełna ścieżka do programu
dnotify -C $HOME/dokumenty -e mojprogram '{}'
uruchamia mojprogram z odpowiednim argumentem gdy w katalogu $HOME/dokumenty pojawi się jakiś plik
savelog plik.log
rotacja pliku z logami (przeniesienie plik.log do plik.log.0, plik.log.0 do plik.log.1.gz itd.)
dd if=/dev/hdc of=myimage.iso bs=1M
kopia płytki CD (nie trzeba jej montować, opcja bs=1M przyspiesza operację)
dd if=/dev/hda of=bootsector bs=512 count=1
kopiuje bootsector dysku do pliku
dd bs=512 conv=noerror,sync if=/dev/hda of=/dev/hdb
tworzy kopię zapasową uszkodzonego dysku; ignoruje błędne sektory (w kopii wypełnia je zerami)
rsync -a --exclude=*.wav --delete -z from/dir/ szatan.tiger.com.pl:/home/gucio/backup
za pomocą SSH tworzy w katalogu /home/gucio/backup komputera szatan.tiger.com.pl kopię lokalnego drzewa katalogów from/dir/, ew. aktualizuje tą kopię uzupełniając różnice; opcja -a nakazuje zachowanie łączy symbolicznych i uprawnień do plików, --delete nakazuje usuwać w kopii docelowej pliki nieistniejące już na lokalnym komputerze; opcja -z wymusza kompresję przesyłanych danych aby oszczędzać łącze (grsync jest graficzną nakładką do rsync'a)
file nazwa_pliku
informacje o pliku (jakiego jest typu)
file – < /dev/hda1
wyświetla informacje o typie systemu plików na wskazanej partycji/urządzeniu
mkdir -m 755 dir
tworzy nowy katalog nadając mu jednocześnie uprawnienia
mkdir -p photos/scanned/jpgs/thumbs
tworzy katalog wraz z podkatalogami
rm -r katalog
usuwa drzewo katalogów
cp -r fromdir todir
kopiuje całe drzewo katalogów
mount -t tmpfs -osize=64m tmpfs /memdisk
tworzy wirtualny dysk w pamięci RAM
lsattr myfile
atrybuty specjalne pliku
chattr +a file1
pozwala na otwarcie pliku do zapisu tylko w trybie „append”
chattr +c file1
pozwala na automatyczną kompresję/dekompresję pliku przez jądro systemu
chattr +d file1
pozwala ignorować plik podczas wykonywania backupu
chattr +i file1
uniemożliwia modyfikację/usunięcie/zmianę nazwy pliku
chattr +S file1
wymusza natychmiastową synchronizację pliku przy każdym zapisie
chattr +u file1
pozwala odtworzyć zawartość pliku
sync; sync
opróżnienie wszystkich buforów wejścia/wyjścia; dopiero zakończenie drugiego polecenia sync gwarantuje że wszystkie zbuforowane dane znajdują się już na dyskach

Potoki i przekierowania

polecenie | less
pozwala przeglądać tekst wypisany przez polecenie na stdout (np. klawiszami pgup/pgdown); klawisz Q powraca do wiersza poleceń
polecenie | tee plik.txt | polecenie2
program tee kopiuje tekst otrzymany na standardowym wejściu na standardowe wyjście oraz do wskazanego pliku (opcja -a powoduje dopisywanie do pliku zamiast tworzenia nowego za każdym razem)
script out.txt
powoduje że od tej pory wszystko co idzie na ekran będzie również zapisywane do wskazanego pliku – aż do czasu użycia kombinacji klawiszy Ctrl+D

Operacje na zawartości plików

comm -3 a.txt b.txt
wypisuje zmerge'owaną i posortowaną wierszami zawartość obu plików z pominięciem tych wierszy które występują w obydwu plikach; pliki muszą być posortowane wierszami
recode ..HTML < page.txt > page.html
konwertuje plik tekstowy do formatu HTML (znaki poza ASCII zostaną zakodowane jako encje)
xmlwf file.xml
czy plik XML jest poprawny (ang. well formed)
zcat/zless/zgrep
odpowiedniki cat, less i grep działające na zawartości plików *.gz
> file.txt
tworzy nowy pusty plik (to samo co touch file.txt) lub czyści go jeśli istnieje
bzcat plik.bz2, bzless plik.bz2
wersje poleceń cat i less dla plików spakowanych algorytmem Burrowsa-Wheelera
expand myfile.txt
przekształca znaki tabulatora w spacje
unexpand myfile.txt
przekształca znaki spacji w tabulatory
tac myfile.txt
odwraca wiersze tekstu
rev myfile.txt
odwraca kolejność znaków w wierszu
nl myfile.txt
numeruje wiersze tekstu
pr -o 5 -w 85 -l 66 -f myfile.txt
dodaje margines 5 znaków, formatuje do szpalty o szerokości 80 znaków, dzieli na strony, dodaje nagłówki i stopki, wysokość strony 66 wierszy
od -Ax -tx1z /usr/bin/who
wyświetla zawartość wskazanego pliku szesnastkowo i ASCII
xxd /usr/bin/who, xxd -b /usr/bin/who
wyświetla zawartość wskazanego pliku szesnastkowo/binarnie i ASCII
xxd -i /usr/bin/who
wyświetla zawartość wskazanego pliku jako struktura danych (tablica danych typu unsigned char) języka C
tr 'a-z' 'A-Z' < test.txt
zamiana wszystkich małych liter na duże w wypisanej na stdout zawartości pliku test.txt
tr -d '0-9' < test.txt
usuwanie wszystkich cyfr w wypisanej na stdout zawartości pliku test.txt
tr -c -d 'A-Z a-z' < test.txt
usuwanie wszystkich znaków z wyjątkiem liter i spacji w wypisanej na stdout zawartości pliku test.txt
tr -d 'r' < wintext.txt
konwersja końców wiersza Windows na Linux w wypisanej na stdout zawartości pliku wintext.txt
tr 0 \n < /proc/self/environ
dane w systemie /proc sa rozdzielane zwykle znakiem ASCII o kodzie 0; warto je zamienić na EOLe przy wyświetlaniu na terminalu
dos2unix wintext.txt
konwersja końców wiersza Windows -> Linux w pliku wintext.txt
unix2dos linuxtext.txt
konwersja końców wiersza Linux -> Windows w pliku linuxtext.txt
paste imiona.txt nazwiska.txt
skleja wiersze pierwszego pliku z wierszami drugiego
join -t, -1 2 -2 1 imiona.txt nazwiska.txt
skleja wiersze plików według wspólnych wartości kolumny (nr 2 w pierwszym pliku i nr 1 w drugim pliku); kolumny rozdzielamy przecinkiem
split -d -l 1000 dictionary.txt dictionary.
rozbija plik tekstowy na mniejsze pliki po 1000 wierszy (z wyj. być może ostatniego), nazwom kolejnych plików po podziale nadając sufiksy 00, 01, itd. (opcja -d)
antiword plik.doc > text.txt
konwersja MSWord -> ASCII
dd if=/dev/sda bs=1M | gzip -1c > /media/sdc1/sda1.img.gz
archiwizuje dysk; później można odtworzyć poleceniem gzip -dc /media/sdc1/sda1.img.gz > /dev/sda
base64 plik
konwersja zawartości pliku do BASE64
catdoc -a file.doc
konwersja pliku MS Windows na ASCII
diff -u file1.txt file2.txt > patch
zapisuje różnice pomiędzy plikami tekstowymi do pliku tekstowego w formacie diff
bsdiff oldfile newfile patchfile
porównuje dwa pliki binarne i zapisuje różnice w pliku patchfile, tak aby można było zaaplikować je do polecenia bspatch
patch -b -p0 < patch
w kontekście poprzedniego polecenia, wprowadza do pliku file2.txt zmiany dokonane w pliku file1.txt; opcja -b tworzy kopię oryginalnego pliku, a opcja -p0 oznacza że poprawki mają być wprowadzane w aktualnym katalogu
file plik
wyświetla informacje o pliku na podstawie jego zawartości (typ pliku, rozmiar w pikselach dla obrazków, częstotliwość próbkowania dla plików muzycznych itp.)
tail +2 plik
wyświetla cały plik z pominięciem pierwszej linijki
ls -l | tail +2 | tr -s ' ' | cut -d ' ' -f 6-8
wyświetla kolumny 6-8 wyniku polecenia ls -l; polecenie tr zamienia ciągi spacji na pojedyncze spacje; opcja -d powoduje że separatorem kolumn jest spacja (zamiast domyślnej tabulacji)
strings binary-file
wyświetla łańcuchy (min. 4 występujące obok siebie znaki drukowalne) zawarte wewnątrz pliku binarnego; przydatne żeby np. poznać nazwy plików konfiguracyjnych z jakich korzysta program; strings /dev/mem przeczesuje pamięć RAM
sort -u -k 3 -t';' -n -r /etc/passwd
sortuje plik /etc/passwd numerycznie (opcja -n) według 3ej kolumny (id użytkownika), w odwrotnej kolejności (opcja -r), traktując znak dwukropka jako separator kolumn i pomijając powtarzające się wiersze (opcja -u)
sort -c file.txt
zwraca kod błędu 0 gdy plik jest posortowany i większy od zera w przeciwnym wypadku
md5sum file
oblicza skrót MD5 dla zawartości pliku; do skrótu SHA-1 jest polecenie sha1sum
grep -winr gucio katalog
przeszukuje wszystkie pliki w drzewie katalogów o korzeniu w katalog (opcja -r) w poszukiwaniu słowa „gucio” niezawartego w innym słowie (opcja -w) ignorując wielkość liter (opcja -i) i dodatkowo podaje numery wierszy (opcja -n)
grep -c gucio pliki…
wypisuje liczbę wierszy we wskazanych plikach, które zawierają podciąg „gucio”
grep -v gucio plik
wypisuje te wiersze pliku, które nie zawierają podciągu „gucio”
grep -F napis plik
wzorzec traktowany jest jak zwykły napis a nie wyrażenie regularne, przez co polecenie działa szybciej
grep -P regexp plik
wyrażenie regularne może być wyrażeniem Perla (eksperymentalne, ale daje najszerszą znaną klasę wyrażeń regularnych)
zgrep regexp plik.gz
wyszukuje w pliku skompresowanym programem gzip, dekompresując go w locie na użytek przeszukiwania
bzgrep regexp plik.bz2
wyszukuje w pliku skompresowanym programem gzip, dekompresując go w locie na użytek przeszukiwania
steghide --embed -ef sekretny-plik.txt -cf niewinny.jpg -p haslo123 -e rijndael-256 -sf wynik.jpg
używa steganografii do zakodowania w obrazku (może być JPG, BMP, WAV, AU) zaszyfrowanej hasłem wiadomości z pliku tekstowego; program SteGUI jest nakładką GUI na steghide
steghide --extract -sf wynik.jpg
wyciąga zaszyfrowaną wiadomość utworzoną poprzednim poleceniem
shuf -n 20 plik.txt
wybiera losowych 20 wierszy z pliku
iconv -f ISO8859-2 -t UTF-8 plik.txt
konwersja kodowania znaków w pliku tekstowym; polecenie iconv --list wyświetla obsługiwane kodowania
indent -kr hello.c
sformatuj plik źródłowy C według zaleceń Kernighana i Ritchiego
grep –color=always | less -R
kolorowany grep w less
tidy -xml -i -m file.xml
wypisuje na stdout ladnie polamany/sformatowany XML

PDF

pdfinfo plik.pdf
informacje o pliku PDF (tytuł, data utworzenia, rozmiar strony, wersja PDF itp.)
pdfinfo -opw mojehaslo plik
zabezpiecza dokument hasłem właściciela (opcja -upw zakłada hasło użytkownika)
pdffonts plik.pdf
lista czcionek wykorzystywanych w dokumencie i informacja czy są zagnieżdżone
pdfimages -j plik.pdf katalog_docelowy
wydobywa z pliku PDF obrazy i zapisuje je w formacie JPG w podanym katalogu
pdfjam mydoc.pdf –a4paper –outfile myA4doc.pdf
zmiana formatu strony dokumentu na A4 (np. z US letter)
pdftk form.pdf attach_files form.tex new.pdf
tworzy new.pdf poprzez dodanie załącznika form.pdf do form.pdf
pdftk new.pdf unpack_files output Source
wyodrębnia załączniki z PDFa i zapisuje je w katalogu Source
pdftk example.pdf burst output Pages/Page03%d.pdf
rozbija PDFa na osobne dokumenty po 1 stronie na dokument i zapisuje je w katalogu Pages; pliki będą miały nazwy Page000.pdf, Page001.pdf itd.
pdftk example.pdf form.pdf attachment.pdf cat output concat.pdf
scala wskazane pliki w jeden plik concat.pdf
pdftk file.pdf output new.pdf user_pw haslo allow printing copycontents
szyfruje i zabezpiecza dokument hasłem użytkownika nadając mu uprawnienia do drukowania dokumentu i kopiowania do schowka zawartości dokumentu
convert *.jpeg images.pdf
Tworzy prosty PDF ze wszystkimi obrazkami
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
Redukuje rozmiar pliku PDF; zmienna PDFSETTINGS może przyjmować wartości /screen, /ebook, /printer, /prepress, oraz /default.

PostScript

a2ps –output=result.ps –portrait jakis_plik
konwertuje dowolny w zasadzie plik (graficzny, tekstowy) do PostScriptu; później można użyć ps2pdf – ponieważ PDF jest zasadniczo podzbiorem PS, więc konwersja jest zwykle szybka i dokładna
psselect -p2,4-10 newsletter.ps selection.ps
wybiera z pliku newsletter.ps wskazane strony (odpowiednio 2,4-10) i zapisuje je w pliku selection.ps; opcja -o oznacza nieparzyste, -e parzyste
psnup -8 -d single.ps octo.ps
umieszcza 8 stron na jednej, dodaje obramowanie i umieszcza wynik w octo.ps
psresize -pa5 myps.ps newps.ps
zmienia rozmiar strony na A5
psmerge -oslideshow.ps slide1.ps slide2.ps slide3.ps
łączy pliki slideX.ps w plik slideshow.ps
ps2ascii file.ps file.txt
konwersja PostScript -> ASCII
enscript -f Courier7 -Ecpp -G -j connection_state.h > temp.ps
elegancka konwersja kodu źródłowego do PostScripta (z podświetlaniem składni):
man -t psbook > psbook.ps
konwersja strony manuala do PostScriptu
gv --watch file.ps
wyświetla plik PostScriptu reagując na zmianę pliku z zewnątrz

Sed

Edytor strumieniowy sed przetwarza pliki podane na wejściu i generuje wynik na stdout.

sed -n '2p' file.txt
wyświetla drugi wiersz pliku
sed '5,7d' file.txt
wyświetla wszystkie wiersze pliku z wyjątkiem wierszy 5-7
sed -e '/^#.*/d' -e 's/misio/pysio/g' file.txt
pomija wiersze zaczynające się od '#' a w pozostałych podmienia słowo „misio” na „pysio” (flaga g oznacza zamianę wszystkich wystąpień słowa w wierszu)
sed '3r extras.txt' file.txt
dołącza zawartość pliku extras.txt po 3cim wierszu pliku file.txt
sed '5,$w out.txt' file.txt
zapisuje wszystkie wiersze pliku out.txt począwszy od 5 do końca, do pliku out.txt

Archiwa

tar cfz plik.tgz katalog
pakuje drzewo katalogów o korzeniu w katalog do pliku plik.tgz
tar xfz plik.tgz
rozpakowuje plik archiwum *.tgz w bieżącym katalogu
zip -r plik.zip katalog
pakuje drzewo katalogów o korzeniu w katalog do pliku plik.zip
unzip plik.zip
rozpakowuje plik archiwum *.zip w bieżącym katalogu
unzip -a plik.zip
podczas rozpakowywania wstawia linuksowe znaki powrotu karetki we wszystkich plikach tekstowych
unzip -l plik.zip
listuje zawartość archiwum
rar a file1.rar mydir
pakowanie katalogu do pliku *.rar
rar x file1.rar
rozpakowanie archiwum *.rar (to samo robi polecenie unrar file1.rar)

Procesy

ps ax
wyświetla listę wszystkich procesów systemu; jeśli używasz KDE, spróbuj [Ctrl+Esc])
ps axfww
widok leśny (jeszcze ładniej wygląda wynik polecenia pstree)
ps U 1007
wyświetla wszystkie procesy użytkownika o podanym id
ps -C someprogram || { someprogram & }
sprawdza czy program o podanej nazwie działa i jeśli nie, to uruchamia go w tle (przydatne jako polecenie crona w przypadku demona który zawsze powinien chodzić)
fuser -v /dev/dsp
wyświetla listę procesów korzystających ze wskazanego pliku/urządzenia/gniazda
top
monitorowanie na bieżąco zużycia zasobów przez procesy ([h] – opcje)
atop
jak top, ale śledzi trendy w czasie i ostrzega z wyprzedzeniem o możliwości przekroczenia zasobów,
htop
jak top, ale pozwala przewijać wszystkie procesy ([F5] – drzewko procesów, [F3] – szukaj)
iotop
pokazuje statystyki I/O z rozbiciem na procesy
pstree -apu
pokazuje dziedziczenie procesów i parametry wywołania (opcja -a), PID (opcja -p) i właściciela procesu (opcja -u)
renice -n 10 3494
zmienia priorytet działającego procesu o podanym PIDzie (tylko administrator może podnieść priorytet)
pgrep -lf gnome
to samo co ps ax | grep gnome
pkill gnome
kończy pracę wszystkich procesów które w nazwie mają słowo „gnome”
pkill -u user
kończy pracę wszystkich procesów wskazanego użytkownika
killall -r 'evolution.*'
kończy wszystkie procesy aplikacji Evolution
kill -9 -1
ubicie wszystkich procesów do których użytkownik ma prawa dostępu
kill -9 `lsof -t file`
zabija wszystkie procesy korzystające aktualnie z pliku file
kill -l
pełna lista sygnałów
lsof /
jakie procesy korzystają z pliku/katalogu
lsof -i -n
który proces używa sieci w jaki sposób (na jakim porcie itp.); zamiennie można użyć socklist
lsof /dev/hdc
jakie procesy korzystają z dysku
pidof emacs21
wyświetla PIDy procesów o podanej nazwie
nice
domyślny priorytet procesów w systemie
taskset -cp 0 PID
zmienia przydział rdzenia procesora dla działającego procesu
taskset -c 0 polecenie
uruchom polecenie na wskazanym rdzeniu procesora
lsof -c dhcpd
pliki otwarte przez podane polecenie
pwdx PID
katalog domowy wskazanego procesu
strace -ff -e trace=write -e write=1,2 -p JAKIS_PID
przechwytuje stout i stderr wskazanego procesu
ss -p | grep STA | cut -f2 -d"
nazwy procesów używających aktualnie sieci

Harmonogram zadań

crontab -e
edycja pliku crontab zalogowanego użytkownika
crontab -l
lista zdefiniowanych zadań użytkownika
at now +5 hours
pozwala na wprowadzenie poleceń shella do wykonania (kończymy Ctrl+D); polecenie wykona je po określonym czasie w tym samym katalogu roboczym, z tymi samymi zmiennymi środowiskowymi i tej samej powłoce w których wykonano polecenie at
batch now +5 hours
jak at, ale polecenie zostanie uruchomione tylko wtedy, gdy system nie będzie zanadto obciążony (domyślnie 0.8)

WWW

wget -nv --spider --force-html -i bookmarks.html
Sprawdza linki w pliku
wget --mirror http://www.example.com/
Efektywnie uaktualnia lokalna kopię strony
wget -i uniqURLs.txt
pobiera z sieci wszystkie URLe wymienione w pliku tekstowym
wget -r -k -b --random-wait --user=USER --password=PASSWORD http://onet.pl
Rekurencyjnie (r) pobiera witrynę zamieniając wszystkie linki w odnośniki relatywne (k), przenosi proces w tle tak aby działał nawet wtedy gdy użytkownik się wyloguje (b), wprowadza nieregularność i w ten sposób przekonuje serwer, że ma do czynienia z człowiekiem, a nie programem (rantom-wait)
curl -L -e ';auto' merlin.pl
ściąga stronę HTML i wyrzuca ją na stdout; w razie przekierowań podąża za nimi
curl -k -o witryna.html https://mojawitryna.pl
wyciąga stronę po HTTPSie (ignorując być może nieprawidłowy certyfikat – opcja -k) i zapisuje ją w pliku witryna.html
curl -o '#1-#2-#2-#4.html' "http://www.example.com/cgi-bin/item.cgi?prod=[0001-9999]&cat=[0-9]&color={red,yellow,blue,green}&size={s,m,l,xl}"
pobiera strony dla wszystkich możliwych kombinacji parametrów (1599840 możliwości).
curl -A 'Mozilla 5.0' -I merlin.pl
wypisuje same nagłówki odpowiedzi HTTP (opcja -I; opcja -i wyświetla stronę razem z nagłówkami, opcja -D file zapisuje nagłówki w pliku), opcja -A pozwala ustawić nagłówek User-Agent
curl -d "userid=root" -d @passwd.txt http://www.example.com/servlet/login.do
wykonuje zapytanie POST i przesyła wskazane parametry, np. żeby się zalogować do serwisu (trzeba samemu zadbać o kodowanie niedozwolonych znaków takich jak spacja); plik passwd.txt ma zawartość passwd=fluffy
curl -b cookies.txt -c cookies.txt http://www.example.com/servlets/login.do
pobieranie URLa w kontekście sesji (opcja -b określa skąd będą czytane pliki cookie na początku, opcja -c gdzie będą zapisywane pliki coookie odebrane w wyniku wykonania zlecenia)
curl -b session-id-time=-1 http://www.amazon.com
ustawia pojedyncze ciasteczko na czas wykonania zlecenia
curl -F file='photo1.jpg;filetype=image/jpeg' -F param=value http://www.example.com/photos/upload.do
wysyła zleceniem POST multipart/form-data plik i jeden parametr; określanie filetype zwykle nie jest potrzebne

SVN

svn checkout https
//svn.tiger.com.pl/paradox/coralreef : wyciąga z SVNa z repozytorium paradox drzewo katalogów o korzeniu w coralreef
svn up
update'uje z repozytorium drzewo katalogów wyznaczonym przez bieżący katalog
svn commit -m"Komentarz"
commituje (z komentarzem) do repozytorium zmiany w drzewie katalogów wyznaczone przez bieżący katalog
svn status
wyświetla status poszczególnych plików drzewa katalogów wyznaczonych przez bieżący katalog, np. „M” oznacza że plik jest lokalnie zmodyfikowany i czeka na commit, „A” że został utworzony ale jeszcze nie wrzucony do repozytorium itp.
svn add plik
dodaje plik do systemu zarządzania wersjami (ale nie umieszcza go jeszcze w repozytorium, zrobi to najbliższy commit)
svn log plik
wyświetla historię pliku (kto commitował, kiedy, z jakim komentarzem)

Grafika

identify -verbose image_file
szczegółowe informacje o obrazku (m.in. adnotacje)
mogrify -border 2×4 -comment "Moj komentarz" file.jpg
dodaje obramowanie oraz adnotację do pliku JPEG
convert start.png -colorspace Gray -resize 800×600 start.jpg
konwersja obrazka do innego formatu (można przekonwertować m.in. do PDF), a przy okazji zamiana kolorów na odcienie szarości i zmiana rozmiaru z zachowaniem proporcji (wykrzyknik po „600” kazałby zignorować proporcje)
montage *.jpg mojeobrazki.png
tworzy jeden obrazek z miniaturkami wszystkich plików JPEG w bieżącym katalogu
display image_file
wyświetla obrazek w osobnym okienku
convert image.jpg -gravity Southwest -fill red -draw "text 0,0 'Nad morzem'" result.jpg
dodaje podpis do obrazka czerwoną czcionką w lewym dolnym rogu

Wideo i dźwięk

ffmpeg2theora --videoquality 5 --audioquality 1 --max_size 320×240 pr6.dv
konwersja plików wideo do kontenera Ogg (plik *.ogv)
HandBrakeCLI --preset "iPhone & iPod Touch" --width 320 --vb 600 --two-pass --turbo --input pr6.dv --output pr6.mp4
konwersja pliku *.dv na *.mp4; opcja vb oznacza średnią prędkość transmisji
mpg321 file.mp3
wyświetla informacje o utworze ze znaczników ID3 i odtwarza utwór
mpg321 -w file.wav file.mp3
konwertuje plik MP3 do WAV (żeby np. zapisać utwór na zwykłej płycie audio)
oggdec sunrise.ogg
konwersja pliku OGG do WAV
vorbis-tools
pakiet z poleceniami wiersza poleceń do obróbki plików w formacie OGG (odtwarzacz, konwerter, edycja znaczników, dzielenie plików itp.)
sox plik.mp3 plik.wav
konwersja plików dźwiękowych
lame plik.wav plik.mp3
konwersja plików dźwiękowych do mp3
play plik.wav
odtwarzanie pliku dźwiękowego
echo "Incoming mail from" | festival --tts –
wypowiada wskazany tekst za pomocą syntezatora mowy
dd if=/dev/dsp | ssh username@host dd of=/dev/dsp
lokalny mikrofon rejestruje dźwięk odgrywany na zdalnym komputerze
movgrab 'http://www.youtube.com/watch?v=oG6pEolAKm8'
ściąga wskazany film z serwisu takiego jak YouTube czy Vimeo; opcja -T wyświetla dostępne formaty i pozwala później za pomocą opcji -n ściągnąć ten o wskazanym numerze; opcja --help wyświetla obsługiwane przez program formaty i witryny z filmami; -x wyłącza ewentualne filtry rodzinne

Inne

python -m SimpleHTTPServer 8080
udostępnia bieżący katalog w sieci WWW na porcie 8080 (brak numeru portu oznacza 8000)
factor 1234
Rozkłada liczbę 1234 na czynniki pierwsze
seq 2 6
Wypisuje sekwencję liczb od 2 do 6
:(){ :|:& };:
zabija maszynę (ang. bash fork bomb)
groff -man -Tascii printf.1 > wynik.txt
konwertuje stronę man na plik tekstowy (opcja -T może również przyjmować wartość html oraz ps)
perl -MCPAN -e 'install Bundle::LWP'
instaluje pakiet Perla o nazwie Bundle::LWP
pydoc -p 8888
stawia na porcie 8888 serwer udostępniający dokumentację Pythona
easy_install nazwa_pakietu
instalacja pakietu Pythona; inny sposób to ściągnięcie i rozpakowanie archiwum, po czym sudo python setup.py install
man ascii
tabela ASCII
man hier
objaśnienie hierarchii systemu plików
rlwrap polecenie
dodaje funkcjonalność biblioteki Readline (w tym historia poleceń pod klawiszami strzałek) do wskazanego polecenia które jest typu shell, tzn. w pętli oczekuje na polecenia z stdin,
vim scp://username@host//sciezka/do/pliku
edycja zdalnego pliku
wtf imho
wyjaśnia (rozwija) wskazany akronim, spotkany np. w rozmowie IRCa lub na grupie dyskusyjnej

Zakończenie

  • Dziękuję Ci za czas poświęcony na przeczytanie artykułu.
  • Będę bardzo wdzięczny za konstruktywne i merytoryczne uwagi (inne ciekawe polecenia, znalezione błędy).
    Polecenie:
      history | cut -c8- | sort | uniq -c | sort -nr | head -n 50
    zagląda do historii Twojego shella i zwraca listę unikatowych poleceń posortowaną wedle częstości użycia.
  • Możesz ocenić przydatność artykułu jednym kliknięciem na wybranej liczbie gwiazdek na początku strony.
  • Treść będzie z czasem ewoluować, więc zapraszam ponownie za jakiś czas.
  • Jeśli jeszcze nie jesteś znużony, zajrzyj na stronę główną bloga.

Podziękowania

To miejsce czeka na Ciebie.

Literatura

Książki i czasopisma:

Artykuły w internecie:

Polecenia powłoki, 5.0 out of 5 based on 45 ratings
Share and Enjoy:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • LinkedIn
  • MySpace
  • Wykop

6 Komentarzy do “Polecenia powłoki”

  1. karol napisał(a):


    xdd plik
    podgląd szesnastkowy pliku

    Chyba miało być ‚xxd’ – o tym programie już Pan wspomniał kilka linijek wyżej.


    [karol@black ~]$ echo „Incoming mail from” | festival -tts -
    festival: Unknown option "-tts"
    Type -h for help on options.

    Chyba powinno być ‚--tts’.

  2. Piotr Karpiuk napisał(a):

    Usunąłem nadmiarowy i błędny wpis xxd, poprawiłem kreseczki – dziękuję!

  3. ylk napisał(a):

    Brak wersji do druku 🙁

  4. Piecia napisał(a):

    Ciekawe zestawienie. Warto wspomnieć o getent. Szybkim wyciąganiu informacji z systemu(passwd, groups, protocol itd)

  5. Maciej napisał(a):

    Bardzo dobra robota.
    Zostawić dla potomnych !

  6. Kuba napisał(a):

    Przygode z Linuksem zacząłem 3 miesiące temu,zestawienie było mi bardzo pomocne.Dzięki za poświęcony czas.

Zostaw komentarz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>