Difference between revisions of "Bash"

From HackerNet
Jump to: navigation, search
 
Line 25: Line 25:
 
==Shebang==
 
==Shebang==
 
Man öppnar alltid alla script med en så kallad shebang. Detta för att systemet ska veta av hur den ska köra filen.
 
Man öppnar alltid alla script med en så kallad shebang. Detta för att systemet ska veta av hur den ska köra filen.
<syntaxhighlight lang=bash>
+
<syntaxhighlight lang=bash line>
 
  #!/usr/bin/env bash
 
  #!/usr/bin/env bash
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==Variabler==
 
==Variabler==
 
Variabler i bash skrivs på följande sätt <code>'''variable-name='''''<value>''</code>
 
Variabler i bash skrivs på följande sätt <code>'''variable-name='''''<value>''</code>
<source lang=bash>
+
<source lang=bash line highlight=2>
 
#!/usr/bin/env bash
 
#!/usr/bin/env bash
 
HW="Hello World"
 
HW="Hello World"
Line 41: Line 41:
 
==Argument==
 
==Argument==
 
Att kunna skicka in argument i sitt bash script för att göra det mer dynamiskt kan vara bra ibland. Första argumentet mappas mot <code>$1</code> medans resten bara fortsätter enligt <code>$2,$3,$4...</code>.
 
Att kunna skicka in argument i sitt bash script för att göra det mer dynamiskt kan vara bra ibland. Första argumentet mappas mot <code>$1</code> medans resten bara fortsätter enligt <code>$2,$3,$4...</code>.
<source lang=bash>
+
<source lang=bash line>
 
#!/usr/bin/env bash
 
#!/usr/bin/env bash
 
echo $1 $2
 
echo $1 $2
Line 58: Line 58:
 
</source>
 
</source>
 
Ett annat sätt om man vill debuga delar av ett script istället för allt kan man använda sig av följande sätt:
 
Ett annat sätt om man vill debuga delar av ett script istället för allt kan man använda sig av följande sätt:
<source lang=bash>
+
<source lang=bash line start="30">
 
set -x
 
set -x
 
......
 
......

Latest revision as of 20:12, 25 March 2019

Bash är den allra vanligaste kommandotolken man möts av i Linux.

Bash sensible

Bash sensible är ett script som försöker sätta bättre bash default inställningar. Precis som Vim sensible försöker göra åt vim.

Sensible fixar bla hur bash hanterar history

  • Adderar till historiken istället för att skriva över.
  • Sparar multi-line kommandon som ett kommando.
  • Större historik.
  • Tar bort dubbletter.
  • Sparar inte onödiga kommandon som exit, ls, bg, fg och history.
git clone https://github.com/mrzool/bash-sensible/blob/master/sensible.bash

För att installera kan man kopiera hela sensible.bash eller delar av filen in i sin bashrc fil eller source in filen i sin bashrc fil:

if [ -f ~/bash-sensible/sensible.bash ]; then
   source ~/bash-sensible/sensible.bash
fi

Awesome bash

Awesome bash är en lista med massa länkar till olika bash saker. Allt från böcker, custom environment, frameworks, spel.

https://github.com/awesome-lists/awesome-bash

Bash scripting

Att skriva bash script kan vara väldigt enkelt och kan spara mycket tid, här under kommer en del tips som kan vara bra att känna till.

Shebang

Man öppnar alltid alla script med en så kallad shebang. Detta för att systemet ska veta av hur den ska köra filen.

1  #!/usr/bin/env bash

Variabler

Variabler i bash skrivs på följande sätt variable-name=<value>

1 #!/usr/bin/env bash
2 HW="Hello World"
3 echo $HW
sparco@jumpgate:~$ ./script
Hello World

Argument

Att kunna skicka in argument i sitt bash script för att göra det mer dynamiskt kan vara bra ibland. Första argumentet mappas mot $1 medans resten bara fortsätter enligt $2,$3,$4....

1 #!/usr/bin/env bash
2 echo $1 $2
sparco@jumpgate:~$ ./script Hello World
Hello World

Debuga scripts

Att kunna debuga scripts kan göras på olika sätt genom att köra echo på variabler eller sätta på en växel i bash som gör att den printar allt i sdout. Att köra scriptet med bash -x

sparco@jumpgate:~$ bash -x ./script Hello world
+ echo Hello world
Hello world

Ett annat sätt om man vill debuga delar av ett script istället för allt kan man använda sig av följande sätt:

30 set -x
31 ......
32 set +x