Linuxové nástroje
Seriál o unixových nástrojích na AbcLinuxu
adduser
příkaz pro vytvoření uživatele
adduser -d <domácí adresář> -m -g <skupina> -s <shell> <jméno uživatele>
blkid
příkaz vypíše diskové oddíly jejich UUID a typ souborového systému
blkid
pro uživatele hezčí výpis i s mount adresáři
blkid -o list
cal
vytiskne na stdout kalendář aktuálního měsíce
cal
cat
spojí soubory do jednoho
cat soubor1.txt soubor2.txt soubor3.txt > soubory.txt
chmod
umožní vlastníkovi spouštět soubor
chmod u+x <soubor>
rekurzivně odebere veškerá práva skupině a ostatním
chmod -R go-rwx <adresář>
chown
změní vlastníka souboru
chown <uživatel> <soubor>
změní rekurzivně vlastníka a skupinu adresáře a všeho co obsahuje
chown -R <uživatel>:<skupina> <adresář>
date
vypíše aktuální datum ve formátu RRRR-MM-DD
date "+%F"
dd
vytvoří 100 bytový náhodný soubor myrandom
dd if=/dev/random of=myrandom bs=100 count=1 iflag=fullblock
kopíruje disk /dev/sdc do souboru clone_file po blokách velkých 512 bytů, přeskočí prvních 9440 bloků a zobrazí progress
dd if=/dev/sdc of=clone_file bs=512 skip=9440 status=progress
zobrazí text jednoho bloku, ve kterém se nachází byte číslo 12303962404
dd if=/dev/sda1 count=1 skip=$(expr 12303962404 / 512)
deluser
smaže uživatele ze skupiny (ze systému ne)
deluser <uživatel> <skupina>
udebere uživatele ze skupiny sudo
sudo deluser <uživatel> sudo
df
zobrazí volné a zaplněné místo na discích
df -h
diff
vytvoří patch pro dva adresáře
diff -ruN <adresar1> <adresar2> > patch
vytvoři patch souboru
cp <soubor> <soubor>.orig`\
# zmena souboru`\
diff -u <soubor>.orig <soubor> > <soubor>.patch
dmidecode
vytiskne informace o RAM
dmidecode --type 17
du
zobrazí velikost adresáře a všech jeho podadresářů v čitelné podobě
du -h <adresář>
zobrazí velikost adresáře (nezobrazuje rozepsané podadresáře) v čitelné podobě
du -sh <adresář>
zobrazí nakonec i součet velikostí adresářů
du -ch <adresář> <adresář>
e2label
zobrazí label disku
e2label /dev/sda1
enca
Program se pokouší detekovat kódování souboru podle znaků které obsahuje. Detekce může selhat.
vypíše ve kterém kódování je
enca <soubor>
převede na defaultní kódování systému
enca -c <soubor>
převede soubor na UTF-8 kódování
enca -x utf-8 <soubor>
fdisk
zobrazí všechny oddíly
su -c "fdisk -l"
vypíše nalezené disky
fdisk -l | grep '^Disk'
file
vypíše mime souboru
file --mime-type <soubor>
find
ve všech *.java souborech v aktuálním adresáři nebo podadresářích najde řádky, kde se vyskytuje backgroundColor (vypíše soubor a číslo řádku)
find . -name "*.java" -exec grep --color -Hn backgroundColor {} \;
pro každý soubor txt vypíše řádek soubor <nalezený soubor>
find . -name '*.txt' -printf "soubor %p\n"
nalezne soubory *.c a *.h
find . `$-name "*.c" -o -name "*.h"$
k názvu všech adresářů, které začínají 0 přidá na začátek 20
find . -maxdepth 1 -type d -name "0*" -exec sh -c 'mv "${0}" "20${0/.\/}"' {} \;
smaže soubory, které nalezne
find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;
najde soubory s příponou py (neřeší valikost písmen), který nemají v cestě adresář temp
find . -type f -iname '*.py' ! -path '*/temp/*'
najde všechny soubory s příponou py, krome těch, které končí .generated.py
find . -type f -iname '*.py' ! -iname '*.generated.py'
finger
vytiskne informace o uživateli
finger <uživatel>
free
vypíše stav použité a volné paměti
free -h
fsck
kontrola souborového systému (hledá špatné bloky, vynutí kontrolu a je upovídaný)
fsck -cfv <zarizeni>
grep
pro všechny soubory cpp v poadresáři vypíše řádky, ve kterých se nachází main; -n zobrazí čísla řádků
grep -n main */*.cpp
hledá rekurzivně ve všech souborech
grep -rn _date *
vypíše názvy souborů, které obsahují text Main
grep -l Main *.java
vypíše názvy souborů, které neobsahují text Main
grep -L Main *.java
vypíše řádky, které neobsahují slovo main
grep -v main *.java
hledá buď pattern1 nebo pattern2
grep -E 'pattern1|pattern2' <soubor>
hledá text v celém oddíle a při nálezu vypíše pozici - vhodné pro hledání obsahu smazaného souboru
sudo grep -a -b "# text" /dev/sda1
groupadd
přidá skupinu
groupadd <skupina>
groupdel
smaže skupinu
groupdel <skupina>
groupmod
změní identifikátor skupiny
groupmod -g 1000 <skupiny>
groups
vypíše skupiny do kterých uživatel patří
groups <uživatel>
gunzip
rozbalí a smaže soubor <soubor.gz>
gunzip <soubor.gz>
gzip
zabalí `
gzip <soubor>
head
ze soubor1.txt vezme 100 řádků a uloží je do soubor2.txt
head -100 soubor1.txt > soubor2.txt
id
zobrazí uid, gid, a skupiny uživatele
id <uživatel>
ip
addr
zobrazí adresy všech rozhraních
ip addr show
link
zobrazí informace o všech rozhraních
ip link show
route
zobrazí routovací tabulku
ip route
nastaví defultní bránu
ip route add default via 192.168.100.254
kill
zabije proces signálem SIGKILL (nelze odmítnout)
kill -9 <pid>
ldd
vypíše dynamické knihovny, které program používá
ldd </cesta/k/programu>
ln
vytvoří symbolický odkaz
ln -s <jméno_cíle> [<jméno_sym_odkazu>]
locale
vypíše aktuální nastavení lokalizace
locale
locate
Příkaz locate hledá soubory v databázi mlocate, kterou lze aktualizovat příkazem updatedb. Oproti příkazu find je locate hodně rychlý. Databáze je uložena v souboru /var/lib/mlocate/mlocate.db.
nalezne všechny soubory v jejichž cestě se nachází libudev
locate libudev
ls
vypíše soubory do jednoho sloupce
ls -w 1
# nebo
ls -1
lsb_releas
vypíše informace o distrubuci
lsb_release -a
lscpu
vypíše informace o procesoru
lscpu
lsusb
vypíše podrobné informace o USB zařízení s hodnotou `
lsusb -v -d <vendorId>:
man
sekce
- Obecné/uživatelské příkazy
- Systémová volání
- Funkce knihovny jazyka C
- Speciální soubory - (obvykle zařízení nacházející se v /dev) a ovladače
- Formáty konfiguračních souborů a obecné zásady
- Hry spořiče obrazovky
- Různé
- Příkazy systémové administrace a démoni
příklady
zobrazí manuálovou stránku pro printf ze sekce 3
man 3 printf
vypíše umístění souboru manuálové stránky
man -w 3 printf
vypíše manuálovou stránku uloženou v souboru
man -l /usr/share/man/man3/printf.3.gz
mkdir
vytvoří všechny rodičovské adresáře, které neexistují
mkdir -p "/cesta/k/adresari"
mkfs.
noformátuje /dev/sda1 na ext4
mkfs.ext4 /dev/sda1
mount
namountuje zařízení /dev/sdb1 do adresáře /media/flash/
mount /dev/sdb1 /media/flash/
namountuje sdílený dresář z Windows (pokud neuvedete heslo, tak na něj budete dotázáni)
su
mkdir /media/<mount adresář>
mount -t cifs -o user=<uživatel>,password=<heslo>,uid=1000,gid=1000 //<IP adresa>/<sdílený adresář> /media/<mount adresář>
namountuje souborový systém, který nemá zařízení
mount -t <typ> none <adresář>
namountuje iso soubor
mount -o loop <soubor iso> <adresář>
namountuje všechno z /etc/fstab
mount -a
netstat
vypíše služby na jakých portech poslouchají s jejich PID
netstat -tlpn
nohup
program běží i po ukončení terminálu
nohup wget <url>
passwd
dotáže se na nové heslo uživatele
passwd <uživatel>
patch
změní soubory v adresáři podle souboru patch
patch -p1 -N < ../patch
změni soubory v opačném pořadí (z novějšího na starší)
patch -p1 -N -R < ../patch
pgrep
vypíše pid procesů, které mají součástí názvu krusa
pgrep krusa
pkill
zabije procesy, které mají součástí názvu krusa
pkill krusa
pwd
vypíše aktuální adresář
pwd
rm
smaže rekurzivně celý adresář i s obsahem
rm -rf <adresář>
screen
otevře samostatnou obrazovku ze kterého je možné se odpojit a zase se k němu připojit.
screen
připojí se na běžící obrazovku
screen -r
vypíše existující obrazovky
screen -ls
zkratky
Ctrl + a d- odpojí se od obrazovkyCtrl + d- ukončí obrazovku
sed
vypíše padesátý řádek souboru
sed -n '50p' < file.txt
ve všech txt souborech přepíše stary za novy
sed -i 's/stary/novy/g' *.txt
sfdisk
nutné spuštět jako root
zazálohuje MBR
sfdisk -d /dev/sda > /tmp/sda.bak`\
obnoví MBR
sfdisk /dev/sda < /tmp/sda.bak
sleep
- s - sekundy
- m - minuty
- h - hodiny
- d - dny
po pěti hodinách se vypne
sleep 5h; poweroff
sort
seřadí soubor.csv podle druhého sloupce a pak podle třetího (sloupec je oddělen ;)
sort -t ";" -k2 -k3 soubor.csv
split
rozdělí soubor na 3 stejně velké části, které se jmenují prefixa prefixb a prefixc
split -n 3 soubor prefix
rozdělí soubor na soubory, které obsahují maximálně 10000 řádků
split -l 10000 soubor
sync
Vynutí zápis změněných bloků na disk, aktualizuje superblok.
sync
tail
zobrazí posledních deset řádků ze souboru
tail <soubor>
tar
spojí adresář a jeho podadresáře do tar souboru bez komprese
tar -cf soubor.tar <adresář>
spojení soborů včetně komprese pomocí gzip
tar -czf <soubor>.tar.gz <sobory pro kompresi>
extrakce souborů z archívu
tar -xf <soubor archívu>
záloha systému (ukecaná, bez jiných souborových systémů)
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system
extrahuje soubor etc/fstab z archívu backup.tar.gz
tar -zxvf backup.tar.gz etc/fstab
extrahuje všechny soubory z tar.gz archívu
tar -xzf <soubor tar.gz archívu>
tree
vytiskne strom souborů do hloubky 2 (unicode znaky se tisknou normálně)
tree -NL 2 <adresář>
umount
odmountuje zařízení
umount /media/flash/
uname
vytiskne všechny informace o systému
uname -a
update-alternatives
nastaví defalutní editor v příkazové řádce (symbolické odkazy /usr/bin/editor -> /etc/alternatives/editor -> editor)
update-alternatives --config editor
userdel
smaže uživatele
userdel <uživatel>
usermod
změní uid uživatele
usermod -u 1000 <uživatel>
přidá existujícího uživatele do doplňující skupiny a nezruší ho z jiné
usermod -a -G <skupina> <uživatel>
wc
vypíše délku nejdelšího řádku souboru
wc -L <soubor>
spočítá počet řádků všech souborů s příponou py
(find . -type f -iname '*.py' -print0 | xargs -0 cat) | wc -l
which
vypíše úplnou cestu k programu mail
which mail
whoami
zobrazí moje uživatelské jméno
whoami
xargs
pošle standardní vstup (seznam souborů) jako argumenty programu wc -l
ls | xargs wc -l
xrandr
vypíše informace o připojených monitorech
xrandr
zip
zkomprimuje všechny *.JPG obrázky do souboru fotky.zip; zeptá se na heslo
zip -e fotky.zip *.JPG
rekurzivně zabalí adresáře
zip -r <zip soubor> <adresář1> <adresář2>