Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Úvod do skriptování v Linuxu II

V minulém díle jsme se seznámili s tím, co to programování je a seznámili jsme se s nejznámějšími skriptovacími jazyky. Dnešní díl bude praktičtější – povíme si, jak vlastně skript vzniká, v čem se edituje i jak jej spouštět. Vše zakončíme krátkým FAQ o skriptování.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

V čem se kód edituje?

Existují dvě hlavní možnosti editace zdrojového kódu – editace v IDE nebo v textovém editoru. Oba přístupy mají svá pro a proti – IDE je komplexní, obsahuje zpravidla všechny nástroje potřebné pro programování v daném jazyce, ale zase není zdaleka tolik univerzální, s rychlostí to v porovnání s editory také nebývá nikterak slavné a co se editačních schopností týče, tak za těmi nejlepšími editory zcela jasně snad jakékoliv IDE zaostává. IDE disponuje spoustou užitečných vlastností a určitě jej není vhodné opomínat, zejména v případě větších projektů. Na menší prográmky a běžné skripty se hodí spíše editor. Nejpopulárnější OSS editory jsou asi Vim, Emacs a Jedit, použít se však dají třeba defaultní editory Gnome a KDE, tedy Gedit a Kate.

IDE neboli integrované vývojové prostředí je komplexní nástroj určený pro editaci, sestavování a debugování (ladění) aplikace. IDE bývá úzce specializováno na konkrétní skupinu jazyků, programovací jazyk nebo dokonce pouze jen na některý jeho framework. Mezi nejznámnější OSS IDE patří bezesporu Eclipse, dále NetBeans, KDevelop, Anjuta a další.

Jak udělat kód spustitelný?

V nejjednodušší variantě lze použít prosté uložení do textového souboru a spuštění příkazem <binarka_interpretu> <cesta ke skriptu>, tedy například bash ~/scripts/gencontent.sh, perl ../player.pl a podobně. I to se však dá vylepšit:

#!/bin/bash

Toto zaklínadlo uvedené na první řádce našeho skriptu explicitně definuje, že skript chceme spustit zmíněným interpretem, jímž je v našem případě /bin/bash. Povšimněte si toho, že tato řádka je zakomentovaná, není tedy určena interpretu, který ji ignoruje, ale operačnímu systému. Kromě znaku komentáře se přidává ještě znak vykřičníku jako symbol pro spuštění.

Protože v unixových systémech jsou pečlivě rozdělena práva určující, co kdo s určitým souborem může dělat, je možno zvolit, kdo bude daný skript moci spouštět. Kdo nemá právo na spuštění, skript nespustí, což je třeba mít na paměti, když vytváříme nový skript, protože většina editorů zdrojový kód pouze uloží, ale spustitelnost souboru neřeší.

chmod a+x my_script.rb

Tento příkaz přidá všem, tedy vlastníkovi, členům skupiny i ostatním uživatelům právo na spuštění skriptu my_script.rb. Chcete-li přidat právo na spuštění pouze sobě, použijte raději chmod u+x <script>. Odhalovávání dalších možností nechám na vás, man chmod poví více.

Nyní jej můžete jednoduše spustit pouhým udáním jeho cesty:

./mujscript.sh

Bohužel nic není tak úplně lehké, jak se na první pohled zdá. Bash sice lze na Linuxu najít téměř vždy ve složce /bin, ale když se podíváme k našim dalším unixovým sousedům, zjistíme, že pravidlem to rozhodně není. A co třeba když si ještě ke všemu vybereme jiný interpret, třeba Python. Jeho umístění není jasné rozhodně ani v jednotlivých distribucích Linuxu, o jiných unixových systémech ani nemluvě.

Dobrou pomůckou může být prográmek env, který naleznete snad ve všech linuxových distribucích ve složce /usr/bin. Env umí nalézt cestu k interpretu, tedy alespoň pokud je v $PATH. Když jej zavoláme a dáme mu za parametr náš vysněný interpret, bude tento interpret nalezen a systémem okamžitě použit pro zpracování našeho souboru:

#!/usr/bin/env python

Bohužel však i použití utilitky env má svá úskalí. Tak především i když jej lze nalézt na značné části unixových systémů, pravidlem to není a spoléhat na něj tedy nelze. Může se klidně stát, že žádný env v /usr/bin nebude. Nechávají-li vás však ostatní unixové systémy chladnými, na Linuxu si můžete být téměř jisti, že env v očekávané cestě naleznete.

Je zde však ještě jeden problém spojený s prográmkem env  – parametry. Dejme tomu, že budeme chtít spustit Perl v režimu vypisujícím varování, tedy s parametrem -w:

#!/usr/bin/perl -w

Tento zápis nám bez potíží projde. Zkusme nyní použít env:

#!/usr/bin/env perl -w

Celý pokus ovšem skončí chybovým hlášením:

/usr/bin/env: perl -w: No such file or directory

GNU env si prostě s parametry neporadí. Když už ale zmatek, tak pořádný – například BSD env s parametry pracovat dokáže.

FAQ

Můj systém nemá Bash v /bin, jenže většina skriptů jej právě tam hledá. Co s tím?

Nejjednodušší je vytvořit symlink bashe do adresáře /bin:

sudo ln -s `which bash` /bin/

Mohu spustit skript, ke kterému nemám oprávnění spuštění?

TIB2012

       

Fakticky ano, v tom případě pouze nebude fungovat spuštění uvedením pouhé cesty ke skriptu, ale bude třeba uvést ještě interpret, jak jsme si již ukazovali výše. Lze to udělat například takto:

bash script.sh
cat script.sh | bash
bash < script.sh

Druhá věc ovšem je, zda budete mít oprávnění ke všem akcím prováděným ve skriptu.

Jakub Šťastný

Jakub Šťastný

Jakub Šťastný byl v letech 2007 až 2008 redaktorem serveru Root.cz. Mezi jeho zájmy patří Linux, programování a typografický systém TeX.

Školení: TCP/IP síť na Linuxu II

V tomto školení prohloubíte svoji znalost síťování na Linuxu a vyzkoušíte si pokročilejší techniky. Školení je určené mimojiné i pro správce poskytovatelských sítí.

  • Průřez technologiemi TCP/IP 
  • Stavba testovací sítě
  • Dynamický routing: OSPFv2 a OSPFv3
  • Bridging, proxy ARP, proxy NDP
  • Různé metody překladu adres
  • NAT traversal v praxi
  • Přepis paketů
  • Tunelování a VPN
  • Troubleshooting, situace z praxe

Podrobnější informace a přihláška 

Ohodnoťte jako ve škole:
Průměrná známka 3,58

Přehled názorů

Každý názor musí mít titulek.
anonymní uživatel 6. 9. 2007 07:41
Nový
└ 
Re: Každý názor musí mít titulek.
Jakub Šťastný 6. 9. 2007 08:35
Nový
bash?
roman 6. 9. 2007 08:52
Nový
├ 
Re: bash?
Ondrej 'SanTiago' Zajicek 6. 9. 2007 09:05
Nový
├ 
Re: bash?
Jakub Šťastný 6. 9. 2007 09:29
Nový
│
├ 
Re: bash?
dsada 6. 9. 2007 10:15
Nový
│
│
└ 
Re: bash?
JaR 6. 9. 2007 20:58
Nový
│
└ 
Re: bash?
me 8. 9. 2007 01:15
Nový
└ 
Re: bash?
deda.jabko 6. 9. 2007 11:04
Nový
Spustanie scriptu bez executable prav
Bashista 6. 9. 2007 11:18
Nový
└ 
Re: Spustanie scriptu bez executable prav
me 8. 9. 2007 01:18
Nový
Vychozi textovy editor KDE
Pavel Holica 6. 9. 2007 13:25
Nový
└ 
Re: Vychozi textovy editor KDE
Pavel Mlady 6. 9. 2007 18:23
Nový
 
├ 
Re: Vychozi textovy editor KDE
Pavel Holica 6. 9. 2007 18:31
Nový
 
└ 
Re: Vychozi textovy editor KDE
Achileus 6. 9. 2007 19:34
Nový
 
 
├ 
Re: Vychozi textovy editor KDE
Pavel Mlady 7. 9. 2007 08:26
Nový
 
 
│
├ 
Re: Vychozi textovy editor KDE
Zebrik 7. 9. 2007 09:23
Nový
 
 
│
├ 
Re: Vychozi textovy editor KDE
Tonic 7. 9. 2007 09:38
Nový
 
 
│
├ 
Re: Vychozi textovy editor KDE
salam 7. 9. 2007 12:19
Nový
 
 
│
│
└ 
Re: Vychozi textovy editor KDE
Pavel Tišnovský 7. 9. 2007 13:06
Nový
 
 
│
│
 
└ 
Re: Vychozi textovy editor KDE
Pavel Mlady 7. 9. 2007 17:44
Nový
 
 
│
│
 
 
├ 
Re: Vychozi textovy editor KDE
M.Helak 7. 9. 2007 17:56
Nový
 
 
│
│
 
 
├ 
Re: Vychozi textovy editor KDE
Pavel Holica 7. 9. 2007 21:34
Nový
 
 
│
│
 
 
├ 
Re: Vychozi textovy editor KDE
Martin Doucha 8. 9. 2007 01:21
Nový
 
 
│
│
 
 
├ 
Re: Vychozi textovy editor KDE
mys elf 8. 9. 2007 11:38
Nový
 
 
│
│
 
 
├ 
Re: Vychozi textovy editor KDE
anonymní uživatel 9. 9. 2007 19:31
Nový
 
 
│
│
 
 
├ 
Re: Vychozi textovy editor KDE
Pavel Tišnovský 10. 9. 2007 09:23
Nový
 
 
│
│
 
 
└ 
Re: Vychozi textovy editor KDE
salam 10. 9. 2007 11:42
Nový
 
 
│
└ 
Re: Vychozi textovy editor KDE
Petr 10. 9. 2007 09:13
Nový
 
 
└ 
Re: Vychozi textovy editor KDE
hrcprc 7. 9. 2007 15:16
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem