Do každého skriptu přidávejte cestu k interpretu - nazývá se shebang\
Každý skript by měl nakonci vracet nějakou hodnotu, defaultně:\
exit 0
for (( a=0 ; $a<8 ; a=$a+1 )) do echo $a done
for file in *.sh; do # Název adresáře může být i skripty.sh! if [ -f "$file" ]; then echo $file fi done i = 0 for i in 1 2 3 4 5 6 7 8 9 10; do echo $i done
$i = 0 while [ "$i" -ne 100 ]; do # Konstrukci $(()) zavedl shell ksh a je rychlejší než příkaz expr i=$((i + 1)) echo $i done
$i = 0 until [ "$i" -eq 100 ]; do i=$((i + 1)) echo $i done
### Může být v rozsahu (0-255), návarová hodnota 266 je rovna 0, 267=1, atd... function ciselna_navratova_hodnota() { return $1 } ciselna_navratova_hodnota 276 hodnota=$? echo $hodnota
### Funkce neumí vracet řetezce, je nutno řešit přes globální proměnné function vrat_retezec() { retezec=$1 } vrat_retezec ahoj echo $retezec
Skript vygeneruje číselný řetězec, počet čísel se zadává argumentem. bash generator.sh 12
### generator.sh ### function random_number() { NUMBER=$[ ( $RANDOM % 9 ) ] return $NUMBER } function generate_number() { for (( a=0 ; $a<$1 ; a=$a+1 )) do random_number CISLO="$CISLO$?" done } generate_number $1 echo "$CISLO"
Jak vytvořit v QT Program Co instalovat:
apt-get install qt4-designer qt4-doc
Jak složit program v QT4 do „spustitelného“ tvaru:\ 1) V QT4 designeru vytvořit formulář (jakýkoliv)\ 2) Pojmenovat a uložit formulář „formular.ui“\ 3) V terminálu přejít do složky se souborem „formular.ui“\ 4) Vytvořit soubor, kde bude hlavní vlákno. V souboru je důležité upravit inkludování hlavickovy soubor formuláře, vzniklého při budoucí kompilaci, ve spravnem tvaru „ui_formular.h“
gedit main.cpp
#include "ui_formular.h" int main(int argv, char* argc[]) { QApplication app(argv, argc); CMainDlg* dlg = new CMainDlg; dlg->setupUi(); dlg ->show(); return app.exec(); }
5) Vytvoříme projekt, vytvoříme makefile a zkompilujeme
qmake -project qmake -makefile make
Output:
/usr/bin/uic-qt4 formular.ui -o ui_formular.h g++ -c -pipe -fpermissive -g -Wall -W -D_REENTRANT -DQT_SHARED -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o main.o main.cpp g++ -Wl,--no-undefined -o Program main.o -L/usr/lib -lQtGui -lQtCore -lpthread
6) Spustíme
./Program
Win) Kompilace qmake -project qmake mingw32-make
Konzoloví klienti
Posílat SMS přes Jabber (njs.netlab.cz „SMS transport“) na GSM telefon, přidat kontakt ve tvaru:
+420_cislo_@sms.netlab.cz
Pidgin: Nový řádek = Shift + Enter
Příkaz/kombinace příkazů | Specifický popis P/kp. | Odkazy na howto, návody |
sudo | Používá se k povýšení práva na roota pro konzolové aplikace. | |
gksudo | Používá se k povýšení práva na roota pro grafické aplikace (wireshark). | |
passwd karla | Nastaví heslo pro karla | |
aptitude remove | Odstraní balík | |
aptitude purge | Odstraní balík i s konfigurákama (neodstraní konfiguráky v home adresáři) | |
aptitude clean | ||
aptitude update | ||
aptitude install dnstracer | ||
aptitude dist-upgrade | Upgrade distra (Dapper → Edgy) | |
apt-get autoremove | ||
apt-get check | Zjistí zda nejsou poškozené závislosti | |
apt-get clean | Odstraní archivní stáhnuté soubory | |
apt-get autoclean | Odstraní staré archivní stáhnuté soubory | |
apt-get autoremove | Odstraní přebytečné balíky (kontroluje závislosti) | |
apt-get autoremove balík | Odstraní balík a jeho nepotřebné závislosti | |
apt-get update | Aktualizace databáze dostupných balíčků | |
apt-get upgrade | Provede upgrade balíčků | |
apt-get remove dnstracer | Odstrané balík | |
apt-get install –reinstall dnstracer | Reinstaluje balík | |
apt-get install | Instaluje balík včetně závislostí | |
apt-get -f install | Instaluje násilím balík | |
apt-cache showpkg dnstracer | ||
apt-cache search balik | Hledá zadaný balík. | |
apt-cache search balik –names-only | Hledá zadaný balík pouze podle názvu. | |
apt-cache show balik | Zobrazí informace o zadaném balíku. | |
update-manager -c | Vypíše novější verzi, pro upgrade | |
dpkg -i | Instaluje samotný balík bez závislostí | |
dpkg -r dnstracer | ||
dpkg-reconfigure xserver-xorg | Nastavit xorg.conf na default | |
Xorg -configure -config ~/Plocha/testXorg.conf | Nejdříve je nutné ukončit Xka | |
dpkg –get-selections | Seznam aktuálně nainstalovaných balíčků |
scp user@ip:/remote/file.txt /local/file.txt | Kopírovat soubor ze vzdáleného serveru ssh přes terminál |
scp /local/file.txt user@ip:/remote/file.txt | Kopírovat soubor do vzdáleného serveru ssh přes terminál |
ssh user@ip 'bash -s' < local_script.sh | Spustit na vzdáleném ssh serveru lokální skript |
Nainstalovat program
apt-get install bootchart
Po restartu mrknout do /var/log/bootchart/
Problémy Dlouhé bootování kvůli usplash:
apt-get --purge remove usplash
Dlouhé bootování při odpojeném internetu:\ Uprav soubor /etc/hostname\ pokud tam není řádka 127.0.0.1 název_tvého_stroje\ tak ji tam dopln, nazev tve masiny zjistis z prikazu uname -n
service lightdm restart | Restart grafického prostředí |
service apache2 restart | Restart webového serveru apache |
smb4k
curlftpfs -o allow_other ftp://login:password@site.cz /mnt/site.cz/
write, talk, mesg, wall - komunikace uživatelů přes terminál
Ctrl + R | Hledání příkazu v historii (velmi užitečné) |
export HISTSIZE=10000 | Nastavení délky historie na 10000 řádek (po překročení platí pravidlo FIFO) |
lynx | textový www prohlížeč |
links | textový www prohlížeč, může být spuštěn v grafickém režimu pro zobrazování obrázků |
centericq | IM komunikátor |
nano, vim | textové editory |
smbc | samba commander |
fbgrab | printscreen i v terminálu |
bittornado | bittorent klient |
screen | dokáže spustit programy a nechá je spuštěné i po odhlášení | Odkaz |
screen -ls | Vypíše spuštěné terminály | |
screen -r 12735.pts-0.ubuntu-srv | Připojí se ke spuštěnému terminálu | |
Ctrl + A; D | Nechá puštěné programy na pozadí a přepne se zpět do terminálu |
Posílání emailu přes program mailx (nedodelano):
echo "Dobry den, ..." | mailx dd@email.cz dd@centrum.cz dd@gmail.com cat zprava.txt |mailx -s "predmet" -a X-Mailer: "mailx (ver 0.xx)" dd@email.cz /etc/mailname
Několik způsobů jak se přihlásit jako root
su su root sudo su sudo -i sudo -s sudo bash
Stažení internetových stránek pro offline prohlížení:
wget -r -k -p http://www.stranky.com/index.php # -r rekurzivně (včetně odkazů) # -k odkazy budou nastaveny na soubory stažené na disku (odkaz není směrovanej na inet) # -p stažení všech věcí (obrázky, ...)
cp sites/default/default.settings.php sites/default/settings.php chmod go+w sites/default/settings.php mkdir sites/default/files chmod go+w sites/default/files/
Prestashop
* PHP settings (modify via your PHP admin software): * PHP 5.0 or later is installed * Allowed to upload files * Allowed to create new files and folders * GD Library is installed * MySQL support is on * Write permissions on files and folders: * /config * /tools/smarty/compile * /sitemap.xml * Write permissions on folders and subfolders/recursively: * /img * /mails * /modules * /themes/prestashop/lang * /translations * /upload * /download
apt-get install php5-gd /etc/init.d/apache2 restart chmod go+w -R img/ mails/ modules/ themes/prestashop/lang/ translations/ chmod 777 -R config/ upload/ download/ tools/smarty/compile/ sitemap.xml
Tucan manager | Okení manažer - ten jediný mě správně funguje |
Rapidshare Download | Konzolový klient |
Udělátko | doplněk do Firefoxu |
1) Stáhnout fonty (soubory *.tar.bz2) z ftp://ftp.gimp.org/pub/gimp/fonts/
2) Řídit se podle návodu http://maestric.com/doc/convert_pfb_pfm_font_to_otf
Instalovat fontforge
appt-get install fontforge
V adresáři s fonty (kde jsou soubory *.otf) vytvořit a editovat soubor: pfb2otf
Open($1); Reencode("unicode"); Generate($fontname+".otf"); Quit(0);
Vytvořit a editovat soubor: convert
PATH=/usr/local/bin:$PATH FONTFORGE_LANGUAGE=ff export PATH FONTFORGE_LANGUAGE if (test -f $1); then ./pfb2otf $1; fi
Nastavit spustitelný příznak souborů pfb2otf convert
chmod 755 pfb2otf convert
Začít konvertovat soubory *.pfb na *.otf
for i in *.[pP][fF][bB]; do ./convert $i; done
Zkopírovat soubory *.otf do adresáře ~/.fonts
mkdir ~/.fonts cp *.otf ~/.fonts/
Vytvořit informační cache fontů?
sudo fc-cache -f
Audacious
mplayer -dumpaudio soubor.avi -dumpfile soubor.wav | Extrahuje audio z filmu |
Pokud nejde Amarok spustit a píše následující chyby:
Configuration file "/home/user/.kde/share/config/knotifyrc" not writable. Please contact your system administrator. Will not save configuration. Configuration file "/home/user/.kde/share/config/kdeglobals" not writable. Please contact your system administrator.
V terminálu to lze opravit takto:
sudo chown -R `whoami` ~/.kde
mkisofs -dvd-video -o movie.iso /path/to/dvd/directory/ | Vytvoří DVD video ISO z uloženého DVDfilmu na disku (cestu směrujeme do adresáře kde je VIDEO_TS) | |
Mplayer, VLC | Nejpoužívanější programy pro přehrávání videa | |
mplayer -vo help | Vypíše drivery výstupu videa | |
mplayer -vo gl | Použije pro přehrání videa driver gl | |
mplayer -subcp cp1250 -sub tituly.sub film.avi | Nastaví typ titulku na cp1250 (trvale nastaveni v souboru mplayer.conf → subcp=cp1250) | |
echo „vf=expand=0:-100:0:0“ » ~/.mplayer/config | Titulky do černého pruhu | |
vlc -vvv test.mpg –sout rtp:192.168.1.10:8080 | Stream po síti | Odkaz |
mencoder -ovc xvid -xvidencopts bitrate=500:pass=2 -oac mp3lame -lameopts mode=1:q=3 soubor.rm -o soubor.avi | Převod stream formátu rm na avi | |
mencoder -oac mp3lame -ovc lavc -vf scale=0:0:0:0:0:0:qpal vstup.mov -o vystup.avi | Konverze mov na avi: | |
mencoder test.mpeg -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -o test.flv | Konverze avi na flv | |
mencoder input.mkv -ovc lavc -oac mp3lame -o output.avi | Konverze mkv na avi | |
flvtool2 -U test.flv | Pro posouvání videa | |
mencoder tv: -tv driver=v4l2:device=/dev/video0:width=640:height=480 -ovc lavc -nosound -o webcam-filename.avi|Nahrání videa z integrované kamery v notebooku bez zvuku(Lenovo S10e)| |mencoder tv: -tv driver=v4l2:width=640:height=480:device=/dev/video0:forceaudio:adevice=/dev/dsp -ovc lavc -oac mp3lame -lameopts cbr:br=64:mode=3 -o filename.avi | Nahrání videa z integrované kamery v notebooku se zvukem - zatim nefunguje(Lenovo S10e) | |
ffmpeg -i OUTPUT.avi -vcodec libx264 libx264.avi | Komprimace videa do kodeku libx264 | |
ffmpeg -i input.mts -vcodec libxvid -b 18000k -acodec libmp3lame -ac 2 -ab 320k -deinterlace -s 1440×1080 output.avi | Převede MTS do avi, nutno zjistit rozlišení videa (ffmpeg -i input.mts) a zda video používá „interlaced frames“ > nutno „deinterlace“. Odkaz na zdroj | |
avimerge -o OUTPUT.avi -i INPUT1.avi INPUT2.avi | Spojování Videa | |
mencoder -oac copy -ovc copy -o OUTPUT.wmv INPUT1.wmv INPUT2.wmv | Spojování Videa | |
DocumentRoot /var/www/ubuntu document root </VirtualHost> <VirtualHost *:80> ServerName www.domena2.com DocumentRoot /var/www/domena2.cz document root </VirtualHost> </code>
nano /etc/apache2/apache2.conf | Úprava konfiguračního souboru |
ServerSignature Off | Vypne podpis serveru |
ServerTokens Prod | Minimální informace o serveru |
Zakázání zobrazení obsahu adresáře „Index of“
nano /etc/apache2/sites-available/default
... <Directory /var/www/> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ...
Nezobrazí chybové hlášky „potenciální útočník neví na čem je“
nano /etc/php5/apache2/php.ini
... display_errors = Off ...
Restartujem službu
/etc/init.d/apache2 reload
a2enmod rewrite /etc/init.d/apache2 restart
Zkontrolujeme zda se zapnul přes příkaz apache2ctl -M
... rewrite_module (shared) ...
Editujeme konfigurační soubor Apache2:
nano /etc/apache2/apache2.conf
A vložíme na konec souboru text (upravime cestu!):
<Directory /var/www/domena.cz> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] </Directory>
Chyba apache2:
Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
pak upravte soubor
gedit /etc/apache2/apache2.conf
a přidejte na konec souboru
ServerName localhost
Pokud Apache2 odkazuje na špatný adresář, musíte zeditovat soubor
gedit /usr/share/apache2/default
a soubory v adresáři /usr/share/apache2/allowed-sites/
0) Edituj repozitář /etc/apt/sources.list a přidej do něj text (změň název distribuce)
deb http://ppa.launchpad.net/cherokee-webserver/ppa/ubuntu karmic main
0) Přidej klíč
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51BB8E83EBA7BD49
0) Updatni a aktualizuj zdroje
apt-get -y update && apt-get -y upgrade
0) Nainstalujeme potřebné balíky, mysql-server bude vyžadovat heslo pro uživatele root, phpmyadmin bude vyžadovat vytvoření databáze přes dbconfig-common (zvolme ano):
apt-get install cherokee php5-cgi php5-mysql mysql-server mysql-client
0) V terminálu zadat:
cherokee-admin -b
0) Ve webovém prohlížeči se přihlásit na administrační rozhraní Cherokee (přihlašovací údaje vemte z terminálu - předchozí krok):
http://localhost:9090/
0) Povolíme php překlad: Virtual servers → default → záložka Behaviour → PHP\ V levo na stránce klikneme na tlačítko Save
0) Vytvoříme testovací soubor a ve webovém prohlížeči otestujeme zda funguje php překlad:
echo "<? phpinfo(); ?>" > /var/www/test.php
Návod není dokončen
ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin chmod 0755 -R /usr/share/phpmyadmin/ chown -R www-data:www-data /var/www/
Jak rozběhat clean url pro drupal? http://svn.cherokee-project.com/browser/cherokee/trunk/doc/cookbook_drupal.txt?rev=2879\ http://lists.octality.com/pipermail/cherokee-dev/2009-August/002979.html\ http://www.cherokee-project.com/doc/modules_handlers_redir.html\ http://groups.google.com/group/cherokee-http/browse_thread/thread/e70cd846abdb1e19\ http://docs.huihoo.com/cherokee/0.98/cookbook_drupal.html\
Udělam upload (povolím ostatním uivatelům čtení/zápis), ale když tam něco nahraju, nelze to smazat → vlastník (nouser) skupina (nogroup)\ Řešení (přidat sebe „uživatele“ do skupiny nogroup) (edit.: asi nefunguje)\
adduser `whoami` nogroup
1) Nainstaluj balíček:
apt-get install dhcp3-server
2) Uprav konfigurační soubor /etc/default/dhcp3-server
INTERFACES="eth0" ### Zde napiš pro na jakém zařízení bude rozdávat DHCP server IP adresy
3) Uprav konfigurační soubor /etc/dhcp3/dhcpd.conf, můžeš všechno vymazat a zkopírovat a upravit toto:
ddns-update-style none; authoritative; log-facility local7; subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.100 192.168.2.200; ### Rozsah přidělovaných IP adres option domain-name-servers 192.168.1.1; option domain-name "domain.name"; option routers 192.168.2.1; ### Zde má být IP tvojí síťovky která rozdává IP adresy (v mém případě eth0) option broadcast-address 192.168.2.255; option nntp-server 192.168.2.1; ### pokud nemáš časový server (NTP) tuto řádku můžeš smazat default-lease-time 600; max-lease-time 7200; } # Nastaví statické IP adresy pro MAC adresu síťové karty uživatele host fix0 # DuckD { hardware ethernet 00:11:22:33:44:20; fixed-address 192.168.2.64; } host fix1 # Ondra { hardware ethernet 00:11:75:33:44:c2; fixed-address 192.168.2.91; }
i) Nezapomeň zadat do ip adresu síťového zařízení eth0
ip addr add 192.168.1.1/24 brd + dev eth0
jinak nastane:
No subnet declaration for eth0 (0.0.0.0). ** Ignoring requests on eth0. If this is not what you want, please write a subnet declaration in your dhcpd.conf file for the network segment to which interface eth0 is attached. **
|crontab -e|Editace crontabu|
crontab -l | Výpis crontabu | |
ps -ef | grep crond | Ověření zda běží CRON |
/etc/rc.d/init.d/crond restart | Restartovat službu |
minuty | hodiny | den v měsíci | měsíc | den v týdnu | akce |
1,2,3 | * | * | * | * | echo „Každá 1,2,3minuta |
*/2 | * | * | * | * | echo „Každá sudá minuta |
* | 10 | echo „Každá minuta od 10 hodiny |
Při editaci crontabu musí být ke konci prázdný řádek (za posledním záznamem od entrovat)! Jinak Cron nebude fungovat!
Package list Jak z Ubuntu udělat Ubuntustudio:
echo deb http://archive.ubuntustudio.org/ubuntustudio `lsb_release -c | awk '{print $2}'` main >> /tmp/sources.list wget -q http://archive.ubuntustudio.org/ubuntustudio.gpg -O- | sudo apt-key add - && sudo apt-get update apt-get install ubuntustudio-desktop ubuntustudio-audio ubuntustudio-audio-plugins ubuntustudio-graphics ubuntustudio-video linux-rt
Pro zvětšení plochy instalovat „Guest Extras“
set-uid a set-gid bit | funguje pouze na binárním souboru (nefunguje na skriptech) |
set-uid bit: chmod u+s soubor | přidá právo spuštění pro vlastníka souboru |
set-gid bit: chmod g+s soubor | přidá právo spuštění souboru pro skupinu |
sticky bit: chmod o+t soubor | ponechá soubor po doběhnutí v paměti pro rychlejší znovuspuštění |
chmod 7777 soubor | Maximální oprávnění - první číslo popisuje set-Xid bit a sticky bit |
socket | je speciální soubor, přes který si dva lokálně běžící procesy vyměňují data |
roura (pipe) | speciální soubor používaný pro výměnu dat mezi procesy, ale na rozdíl od soketu je výměna jednosměrná |
Notifikation area Pidgin (Jaunty) - vypnut odinstalováním pidgin-libnotify\
Trvalé povolení spuštění příkazu bez administrátorského práva (bez SUDO) [url=http://forum.ubuntu.cz/index.php?topic=13248.msg99039#msg99039]Odkaz[/url]
cp /etc/sudoers /etc/sudoers.backup | záloha nastavení |
zjisti kde je umisten skript | |
bezpecna editace sudoers souboru | |
login_name ALL = NOPASSWD: /sbin/shutdown | doplnit login_name a cestu ke skriptu |
příkaz
je to samé jako $(příkaz)
Zaznamenat komunikaci terminálu:
script cmd_history
… příkazy …
exit cat cmd_history
modprobe sk98lin
echo „brightness:4“ > /proc/acpi/toshiba/lcd | přidání brightnes na LCD |
ls -l /dev/disk/by-uuid/ | dostane UID partitionu disku které lze zadat do fstabu |
blkid | zobrazí uuid disku |
find ADRESAR_ODKUD_KOPIRUJES -type f -exec cp {} ADRESAR_KAM_KOPIRUJES \; | Zkopíruje vše z adresáře a podadresářů do jednoho adresáře (nezachovává strukturu podadresářů) |
ps aux | vypíše seznam spuštěných procesů a jejich PID (podobně jako top) |
echo $$ | zobrazení PID aktuálního shellu |
echo „Ahoj“ & | AND znamená že se spustí příkaz jako nový thread |
var=$! | do proměnné var se uloží PID předchozího spuštěného vlákna |
echo $var | vypíše se hodnota proměnné var |
Ctrl+Z | Ručně pozastaví skript |
fg | Opět skript spustí |
bg | Skript pošle na pozadí |
mknod | Vytvoří speciální soubor nebo pojmenovanou rouru |
$ (tar xzf archiv.tgz ; echo $? > exit_code_pro_rozbaleni ) & | Testuje zda se rozbaleni archivu provedlo korektně a návratovou hodnotu zapíše do souboru. |
cp ~/.{.bashrc,.bash_history} /tmp/test | Kopíruje z uvedene cesty (domovska slozka ~/) vsechny soubory uvedené v závorce {} do /tmp/test |
cat xorg.conf | grep -Ev '#|; | $' | vypise xorg.conf bez komentaru a prazdnych radku | |
---|---|---|---|---|
cat xorg.conf | grep -E '[#;]' | to same akorat opacnou metodou | ||
cat xorg.conf | sed -ne '/Section\ \“ServerLayout\“/,/EndSection/p' | vypise sekci z xorg.conf | ||
for x in ServerLayout Device; do cat xorg.conf | sed -ne “/Section\ \„$x\“/,/EndSection/p„; done | vypise nekolik sekci, v tomto pripade ServerLayout a Device ! | ||
cat test.txt | tr ' ' '\n' | sort | uniq -c | Vypíše ze souboru jednotlivá slova abecedně a jejich počet (opakování) |
find -name co_hledame -v | vypíše cesty k nalezeným položkam | |
find /etc -name '*.txt' | xargs grep -li text | Vyhledat všechny soubory co obsahují slovo text |
locate | Vypíše soubory k nainstalovanému programu (rm -i locate realplayer ) |
/ | Hledání v manuálové stránce |
Shift + N | Klávesová zkratka pro hledání dalšího řetězce |