OP/DIG/centraal/bash: verschil tussen versies

Uit FOK!wiki
Ga naar: navigatie, zoeken
Regel 70: Regel 70:
 
Mocht je meer vragen hebben over shell scripting, op eu.freenode.org heb je verschillende kanalen, waaronder #bash. #zsh en andere #shells zullen ook wel bestaan.
 
Mocht je meer vragen hebben over shell scripting, op eu.freenode.org heb je verschillende kanalen, waaronder #bash. #zsh en andere #shells zullen ook wel bestaan.
  
Deze OP en instructies voor nieuw topic: [url]http://wiki.fok.nl/index.php/OP/perl[/url]
+
Deze OP en instructies voor nieuw topic: [url]http://wiki.fok.nl/index.php/OP/DIG/centraal/bash[/url]
 
Mocht je een link vinden die zeker in de OP hoort, twijfel niet en zet hem erbij!
 
Mocht je een link vinden die zeker in de OP hoort, twijfel niet en zet hem erbij!
 
</pre>
 
</pre>

Versie van 14 jan 2008 om 12:20

Bij het openen van een nieuw topic plaatsen we voor het centrale bash topic een standaard openingspost.

Als titel gebruiken we altijd hetvolgende (tenzij je een leukere titel hebt :) ):

you@shellscripts$ enter() { echo "Shell scripting ftw!, deel 1" } 

Uiteraard niet vergeten het nummertje te verhogen ;) En voeg na het aanmaken van een nieuw topic even de link toe in de OP.

De inhoud zelf is de volgende:


Welkom in het centrale shell scripting topic.

Als je vragen hebt over shell scripting, dan zit je hier goed. Hier zitten idioten die verstand denken te hebben van shell scripting en je helpen om leuke nifty scriptjes te maken in de unix shell.

Mocht je een probleem hebben met je code, post deze dan even. We kunnen anders niet zien wat je precies aan het doen bent.

[b]Nieuw met shell scripting?[/b]
Voor mensen die nieuw zijn in shell scripting, die raad ik aan om de introductie te lezen en de bash tutorial eens door te lezen. Als je wilt beginnen maakt het eigenlijk niet uit welke shell je wilt gebruiken, bash, zsh, ksh, csh, etc, etc, ze doen allemaal hetzelfde namelijk, je interface op de commandline zijn. Als je begint is het handig om bash te leren, aangezien het zeer goede documentatie heeft. Maar de andere shells worden ook actief gebruikt. In het kort, pick any, en maak daarna de eventuele overstap naar een andere shell (altijd leuk om een andere shell te leren :)).

* [url=http://doc.nl.linux.org/HOWTO/Unix-Shell-Script-HOWTO-NL/article.html]Shell HOWTO in het Nederlands[/url]
* [url=http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html]Een intro in shell scripting (bash)[/url]

[b]Het portable maken van scripts[/b]
Als je een script portable maakt moet je rekening houden dat je niet altijd overal de GNU versies van verschillende applicaties hebt, dat betekend dus dat je bijvoorbeeld `sed -i' niet kan uitvoeren, en dus een andere manier hiervoor moet vinden. 
Ook kan het inhouden dat je code onder andere shell talen komt te draaien. Houd hier rekening mee in je code. Op Solaris bijvoorbeeld kan je in een script die /bin/sh aanroept geen bash specifieke functies aanroepen, of syntax gebruiken. Solaris gebruikt in tegenstelling tot Linux de echte born shell. Over Solaris gesproken (en andere distro's), implementaties van sommige functies heten anders (truss en strace, tcpdump en snoop bijvoorbeeld) of hebben een andere parameters. Maar voor vragen daarover kan je in [url=http://wiki.fok.nl/index.php/OP/Unix][Linux/Unix] [/Gurus/helpen/newbies]$ ./deel zoveel[/url] topic terecht (de link wijst overigens naar de wiki, daar staat namelijk de correcte URL naar het laatste topic).

[b]Welke shell gebruik ik nou?[/b]

Welke shell je gebruikt staat in het /etc/passwd bestand. Er is een omgevings variabele SHELL die aangeeft welke shell in het wachtwoordbestand staat. Om deze variabele op te vragen moet je hetvolgende doen.

[code]
echo $SHELL
# Of
env | grep SHELL
# en ter overbodigheid
grep username /etc/passwd | awk -F\/ '{print $NF}'
[/code]

Dit is echter geen garantie dat je ook daadwerkelijk de shell draait waar je op dat moment mee werkt. Kijk maar:

[code]
#zsh is mijn standaard shell
$ bash
$ echo $SHELL
/bin/zsh
[/code]

Om er dan achter te komen welke shell je echt draait, kan je dit uitvoeren:
[code]
echo `ps -p $$` 
[/code]

[b]Tips and tricks[/b]
Ergens verstopt (lees, op dit moment nog nergens te vinden) in wiki staat er een handige pagina met shell functies die jou kunnen helpen. Deze zijn afkomstig uit o.a. Het linux n00bs en guru's topic, of komen uit deze topicreeks. 

[b]Vorige delen:[/b]
* ADDME: link naar vorig deel.

[b]Meer over de shell(s)[/b]
* [url=http://www.gnu.org/software/bash/]GNU bash[/url]
* [url=http://tldp.org/LDP/abs/html/]Zeer uitgebreide bash tutorial, ook handig als referentiemateriaal[/url]
* [url=http://www.gnu.org/software/bash/manual/bashref.html]Bash reference manual[/url]
* [url=http://www.opensolaris.org/os/community/on/shellstyle/]Bourne/Korn Shell coding conventies (OpenSolaris)[/url]
* [url=http://zsh.sunsite.dk/Guide/zshguide.html]Zsh user guide[/url]
* [url=http://www.bashscripts.org]Alleen maar shell scripting.. (forum)[/url]

Mocht je meer vragen hebben over shell scripting, op eu.freenode.org heb je verschillende kanalen, waaronder #bash. #zsh en andere #shells zullen ook wel bestaan.

Deze OP en instructies voor nieuw topic: [url]http://wiki.fok.nl/index.php/OP/DIG/centraal/bash[/url]
Mocht je een link vinden die zeker in de OP hoort, twijfel niet en zet hem erbij!

Bash on!