Změna shellu v Linuxu

To jaký shell, který uživatel používá, můžete vidět v souboru /etc/passwd. Je to poslední záznam v každém řádku. Pokud vám daný shell nevyhovuje, můžete jej změnit.

Změna uživatelem

chsh
Password:
Changing the login shell for email
Enter the new value, or press ENTER for the default
        Login Shell [/bin/bash]:

Vyberte nový shell, nebo potvrďte stávající stisknutím klávesy enter.

Změna administrátorem

Pokud jste administrátor, můžete uživatelům měnit shell pomocí příkazu chmod a přepínače -s.

usermod -s /bin/bash user

Uveďte nový shell a uživatele, kterému jej chcete nastavit.

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 ))

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

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.

Gedit jako vývojové prostředí

Gedit je jednoduchý textový editor.

gedit

V tomto příspěvku ukážu, jak se dá nastavit pro psaní skriptů v bashi.

  • zobrazení čísel řádků: Úpravy -> Předvolby -> záložka Zobrazit -> zaškrtnout Zobrazovat čísla řádků
  • zvýraznění aktuálního řádku: Úpravy -> Předvolby -> záložka Zobrazit -> zaškrtnout Zvýrazňovat aktuální řádek
  • vkládání mezer místo tabulátoru: Úpravy -> Předvolby -> záložka Editor -> zaškrtnout Vkládat mezery místo tabulátorů
  • automatické odsazování: Úpravy -> Předvolby -> záložka Editor -> zaškrtnout Povolit automatické odsazování

Gedit podporuje zásuvné moduly, které rozšiřují jeho možnosti. Zásuvné moduly nainstalujete následovně:

sudo apt-get install gedit-plugins

Užitečná rozšíření lze nalézt Úpravy -> Předvolby -> záložka Zásuvné moduly:

  • doplňování slov: nabídne doplnění slova, pokud se už v dokumentu vyskytuje
  • doplňování závorek: pokud napíšete levou závorku, pravou vám automaticky doplní
  • komentování kódu: pomocí Ctrl + M provede zakomentování označených řádků, Ctrl + Shift + M odkomentuje označené řádky
  • velikost textu: pomocí Ctrl a otáčením kolečka myši zvětšuje nebo zmenšuje text

Zdroj: ubuntuforums.org/…=2255481

Práce s historií v Bash

Velikost historie (počet uchovávaných příkazů) se nastavuje v souboru .bashrc v home adresáři (proměnné HISTSIZE a HISTFILESIZE). Historie v Bash se dá procházet pomocí šipek. Celou historii zobrazíme příkazem history. Výpis historie můžeme omezit přepínačem, pomocí kterého určíme, kolik příkazů z historie chceme zobrazit.

history 10 (zobrazí posledních 10 záznamů)

Pokud chceme provést nějaký příkaz z historie a nechce se nám dlouho listovat, stačí si historii zobrazit (u každého příkazu je číslo) a napsat !číslo_příkazu.

$ history
1 ls /etc
2 nano host
3 ls
4 ls -al
5 nano /etc/host
6 cd apt
7 pwd
8 cd /etc/apt
9 ls
10 nano sources.list
11 exit
12 history

V příkladu výše mám v historii celkem 12 příkazů. Pokud chci rychle provést příkaz nano /etc/host stačí mi napsat !5. Pokud chci vykonat poslední příkaz stačí napsat !!. Pro příkaz nano /etc/host jsem zapomněl uvést sudo. Stačí mi tedy napsat sudo !!.

Zdroj: digitalocean.com/community/tutorials/…

File mode bits

V Linuxu je vše soubor a tím pádem vše má nastaveno i oprávnění (permission). Oprávnění určuje kdo má právo číst (read), zapisovat (write) a spustit (execute) daný soubor. Výpis oprávnění souborů lze získat pomocí příkazu ls s volbou -l.

Ukázka:

drwxr-xr-x   6 root root     4096 říj 12 19:30 apt
drwxr-xr-x   2 root root     4096 srp  5 07:18 at-spi2
-rw-r--r--   1 root root     2177 dub  9  2014 bash.bashrc
-rw-r--r--   1 root root       45 bře 22  2014 bash_completion
drwxr-xr-x   2 root root     4096 říj 24 20:43 bash_completion.d
-rw-r--r--   1 root root      356 led  1  2012 bindresvport.blacklist
-rw-r--r--   1 root root      321 dub 16  2014 blkid.conf
lrwxrwxrwx   1 root root       15 zář  2 20:35 blkid.tab -> /dev/.blkid.tab

1 2-4 5-7 8-10
 typ souboru oprávnění uživatele oprávnění skupiny oprávnění ostatních uživatelů

Typ souboru

běžný soubor
d adresář
l link
s socket (slouží pro komunikaci mezi procesy)
p pojmenovaná roura (named pipe)
b blokové zařízení
c znakové zařízení

K určení typu souboru slouží příkaz file.

vitfo@vitfo-VirtualBox:~$ file Pictures/
Pictures/: directory 

vitfo@vitfo-VirtualBox:~$ file .profile 
.profile: ASCII text

Oprávnění

Oprávnění je určeno trojicí čísel. První znamená oprávnění pro čtení (r), druhé pro psaní (w) a třetí pro vykonání/spuštění (x). V případě, že dané oprávnění není, používá se -. Zde je ukázka souboru bez oprávnění ---------- (10 krát pomlčka). Pro změnu „file mode bits“ slouží příkaz chmod.

Zdroje: