Nastavení JAVA_HOME v Ubuntu

Proměnnou JAVA_HOME nastavíme tak, že si otevřeme soubor /etc/environment a do něj vložíme záznam:

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

Soubor environment znovu načteme:

source /etc/environment

To, že naše proměnná je funkční můžeme otestovat výpisem do konzole:

echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

Zdroj: askubuntu.com/…/how-to-set-java-home-for-java

Instalace Java 8 na Ubuntu

Nejdříve je nutné přidat repozitář do souboru /etc/apt/sources.list příkazem add-apt-repository:

vitfo@vitfo-VirtualBox:/etc/opt/hbase-1.2.6$ sudo add-apt-repository ppa:webupd8team/java
[sudo] password for vitfo: 
 Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK7 / JDK8 / JDK9). There are no actual Java files in this PPA.

Important -> Why Oracle Java 7 And 6 Installers No Longer Work: http://www.webupd8.org/2017/06/why-oracle-java-7-and-6-installers-no.html

Ubuntu 16.10 Yakkety Yak is no longer supported by Canonical (and thus, Launchpad and this PPA). The PPA supports Ubuntu 17.10, 17.04, 16.04, 14.04 and 12.04.

More info (and Ubuntu installation instructions):
- for Oracle Java 7: http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
- for Oracle Java 8: http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html

Debian installation instructions:
- Oracle Java 7: http://www.webupd8.org/2012/06/how-to-install-oracle-java-7-in-debian.html
- Oracle Java 8: http://www.webupd8.org/2014/03/how-to-install-oracle-java-8-in-debian.html

Oracle Java 9 (for both Ubuntu and Debian): http://www.webupd8.org/2015/02/install-oracle-java-9-in-ubuntu-linux.html

Oracle JDK 9 is now considered stable. There are currently only 64bit builds (no other builds are available for download: http://www.oracle.com/technetwork/java/javase/downloads/index.html )
 More info: https://launchpad.net/~webupd8team/+archive/ubuntu/java
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmpcs1we49p/secring.gpg' created
gpg: keyring `/tmp/tmpcs1we49p/pubring.gpg' created
gpg: requesting key EEA14886 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpcs1we49p/trustdb.gpg: trustdb created
gpg: key EEA14886: public key "Launchpad VLC" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

Aktualizovat (update) informace o balíčcích příkazem apt update:

Číst dálInstalace Java 8 na Ubuntu

Ubuntu Unity – zakázání přichytávání kurzoru na liště pro spouštění programů

Pokud používáte dva monitory, je možné, že vás obtěžuje přichytávání kurzoru myši na listě pro spouštění programů (launchbar). Projevuje se to tak, že pokud přejíždíte na druhý monitor, kurzor zůstane přichycen na liště a neobjeví se na druhém monitoru. Toto chování lze změnit v Nastavení systému -> Displeje -> a vypnout volbu Přichytávat na hranách (Obecné volby):

ubuntu-unity-prichytavani-kursoru-na-launchbar

Bash a magie uvozovek

Bash nemá datové typy, nebo spíše má, ale jen jeden a tím je textový řetězec. Čeho má ale nadbytek, je uvozovek a apostrofů. Nejlepší bude příklad

p=whoami
echo $p
echo '$p'
echo "$p"
echo `$p`

Výsledek

whoami
$p
whoami
vitfo

Příkazem p=whoami vytvoříme proměnnou s hodnotou whoami. Následně se ji pokoušíme vypsat. K hodnotě proměnné se přistupuje pomocí znaku dolar a názvu proměnné ($p). Při obrácených apostrofech Basch chápe řetězec jako příkaz (výsledkem je vitfo). V případě jednoduchých uvozovek je text chápán doslovně a je v něm zamezeno nahrazování proměnných jejich hodnotou (u dvojitých uvozovek se proměnná nahradí hodnotou) což ilustruje další příklad:

w=World
echo "Hello $w!"
echo 'Hello $w!'

Výsledek

Hello World!
Hello $w!

A ještě jedna drobnost. Pokud chceme vytvořit proměnnou obsahující delší text, musíme použít dvojité závorky.

sentence=Toto je věta.
echo $sentence
./script.sh: řádek 12: je: příkaz nenalezen

sentence="Toto je věta."
echo $sentence 
Toto je věta.

Zdroj: www.root.cz/clanky/programovani-v-bash-shellu/

Získání náhodného čísla v Bashi

Náhodné číslo v Bashi získáme voláním interní funkce bashe $RANDOM (pozor, nejedná se o proměnnou, ale o funkci). Tato funkce vrací pseudonáhodné číslo v rozsahu 0 až 32767.

echo $RANDOM

nebo

randomNumber=$RANDOM
echo $randomNumber

Vygenerování náhodného čísla v rozsahu 1 – 10 provedeme pomocí operátoru modulo (zbytek po dělení)

echo $(( ($RANDOM % 10) + 1 ))

Příkaz tar a jeho podivnosti

Příkaz tar se používá k uložení souborů do jediného archivačního souboru (z několika souborů se vytvoří jeden).

Původně pomáhal při archivaci souborů na páskových jednotkách, ale později se jeho užívání rozšířilo a dnes je používán zkrátka tam, kde je vhodné pro účely distribuce či archivace sloučit více souborů do jednoho tak, aby se zachovaly informace o adresářové struktuře, přístupových právech a dalších atributech, které běžně souborový systém obsahuje.

Zdroj: https://cs.wikipedia.org/wiki/Tar_(informatika)

A jaké podivnosti? Většině příkazů je jedno, v jakém pořadí se uvádějí přepínače. Zda uvedete -cfv nebo -cvf je většinou jedno. Zde tomu ale tak není. Přepínač -c znamená create (vytvořit archív). Přepínač -f znamená file (vytvoř soubor) a očekává název souboru, který má vytvořit. Přepínač -v znamená verbose (vypisuje informace o průběhu). Pokud zadáte přepínače v pořadí -cfv nazev_souboru adresar_se_soubory, skončí to chybou případně vytvořením archivu s názvem v (c vytvoř archiv, f jako soubor, v s tímto názvem). Při googlení jsem narazil na tuto větu, která příkaz tar pěkně vystihuje:

tar’s command line is one of Unix’s little mysteries

Zdroj: https://docstore.mik.ua/orelly/unix3/upt/ch38_12.htm

Nejjednodušším řešení je používat přepínače bez znaku -.

tar cfv mujarchiv.tar adresar

Získání data a času v bashi

Pro získání data a času v bashi můžeme využít příkaz date.

#!/bin/bash

now=$(date)
echo $now

Výsledek

So říj 14 17:12:03 CEST 2017

Tento příkaz nabízí celou řadu formátování viz man date. Zde jsou příklady:

actualDate=$(date +%Y-%m-%d) # stejné jako +%F
echo $actualDate

dateTime=$(date '+%Y-%m-%d %H:%M:%S')
echo $dateTime

dateOfYear=$(date +%j)
echo $dateOfYear

Výsledek

2017-10-14
2017-10-14 17:26:04
287

Zdroj: stackoverflow.com/…-format-date-in-shell-script

Volné místo na disku v Linuxu

Pro zjištění volného místa na disky slouží příkaz df -h (human readable)

Souborový systém Velikost Užito Volno Uži% Připojeno do
/dev/sda1            6,8G  6,3G  169M  98% /
none                 4,0K     0  4,0K   0% /sys/fs/cgroup
udev                 487M  4,0K  487M   1% /dev
tmpfs                100M  916K   99M   1% /run
none                 5,0M     0  5,0M   0% /run/lock
none                 497M     0  497M   0% /run/shm
none                 100M   20K  100M   1% /run/user
Sdílené              215G  189G   26G  89% /media/sf_Sdílené

Velikost RAM v Linuxu

Informace o operační paměti se nacházejí v souboru /proc/meminfo.

less /proc/meminfo
MemTotal:        1017048 kB
MemFree:          338264 kB
MemAvailable:     628572 kB
Buffers:           81348 kB
...

K zobrazení informací o paměti ve zjednodušené a čitelné podobě slouží příkaz free s přepínačem -h (zobrazí výstup s příponami označující velikost: K – kilo, M – mega, G – giga, …)

             total       used       free     shared    buffers     cached
Mem:          993M       662M       330M       2,6M        79M       307M
-/+ buffers/cache:       275M       717M
Swap:         1,0G         0B       1,0G

Zdroj: cyberciti.biz/faq/ram-size-linux/

Alias v Linuxu

Pokud se potřebujete často přepínat do určitého adresáře (například s logy) je vhodné si vytvořit alias. Vhodným umístěním je soubor .bashrc tak, aby byl alias k dispozici po spuštění bashe.

alias plog='cd /var/log/postgresql'

Pokud nyní v bashi napíši plog (funguje doplňování pomocí tabulátoru) a stisknu enter, přepnu se do složky /var/log/postgresql. Příkazy lze řetězit, takže tento alias

alias plog='cd /var/log/postgresql; ls -al'

provede nejen přepnutí do adresáře /var/log/postgresql, ale rovnou i vypíše jeho obsah.