OP/DIG/centraal/bash: verschil tussen versies
Uit FOK!wiki
Regel 14: | Regel 14: | ||
Welkom in het centrale shell scripting topic. | 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 | + | 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. | + | 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] | [b]Nieuw met shell scripting?[/b] | ||
Regel 26: | Regel 26: | ||
[b]Het portable maken van scripts[/b] | [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. | 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 | + | 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] | [b]Welke shell gebruik ik nou?[/b] | ||
− | Welke shell je gebruikt staat in | + | 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] | [code] | ||
Regel 40: | Regel 40: | ||
[/code] | [/code] | ||
− | Dit is echter geen garantie dat je ook daadwerkelijk | + | Dit is echter geen garantie dat je ook daadwerkelijk de shell draait waar je op dat moment mee werkt. Kijk maar: |
[code] | [code] | ||
− | # zsh is mijn standaard shell | + | #zsh is mijn standaard shell |
− | + | $ bash | |
− | + | $ echo $SHELL | |
/bin/zsh | /bin/zsh | ||
[/code] | [/code] |
Versie van 1 jan 2008 om 02:38
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/perl[/url] Mocht je een link vinden die zeker in de OP hoort, twijfel niet en zet hem erbij!
Bash on!