Nastavení velikosti teminálového okna v Ubuntu

Pokud otevíráte terminál v Ubuntu, otevře se ve standardní velikosti 80 sloupců 24 řádků. To není moc a pokud s terminálem pracujete, často si jej musíte zvětšit. Výchozí velikosti s můžete změnit takto. Otevřete si terminál a zvětšete jej na maximum (jinak se vám v horní liště nezobrazí volby) -> Upravit -> Předvolby profilu -> nastavit velikost tak, jak vám vyhovuje.

ubuntu-nastaveni-velikosti-terminalu

ubuntu-nastaveni-velikosti-terminalu_2

Generování názvů kontejnerů v Dockeru

Když vytvoříte nový kontejner v dockeru pomocí docker run a nezadáte parametr --name, docker vytvoří kontejner a pojmenuje ho podle sebe. Vznikají tak zajímavé názvy jako: dazzling_swanson, loving_shockley, wonderful_curran či suspicious_knuth. Jedná se o jména vědců + přídavné jméno. Například Shockley se odkazuje na William Shockley co-invented the transistor – https://en.wikipedia.org/wiki/William_Shockley, Curran na Samuel Curran was an Irish physicist who worked alongside his wife during WWII and invented the proximity fuse čí Knuth na Donald Knuth – American computer scientist, author of „The Art of Computer Programming“ and creator of the TeX typesetting system. https://en.wikipedia.org/wiki/Donald_Knuth.

Nikdy ale kontejner nebude pojmenován boring_wozniak. Proč? Protože Steve Wozniak is not boring:

if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
	goto begin
}

Zde je celý kód metody generující názvy:

func GetRandomName(retry int) string {
begin:
	name := fmt.Sprintf("%s_%s", left[rand.Intn(len(left))], right[rand.Intn(len(right))])
	if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
		goto begin
	}

	if retry > 0 {
		name = fmt.Sprintf("%s%d", name, rand.Intn(10))
	}
	return name
}

Zdroj: frightanic.com/…-default-container-names/

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ál

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