# Bash





#### Beep:

Jouer un beep:

```bash
echo -en "\007"
echo -en '\a'
```



#### [Chaine de caractères:](strings.md)

##### Concaténer une chaine:

```bash
upd+="$name "
```



#### Chemins:

Répertoire courant (pwd) , nom du script (basename), répertoire du script (dirname)

```bash
~/Documents/go $ nano chemins.sh

#!/usr/local/bin/bash
echo "Le script exécuté a comme basename `basename "$0"`, dirname `dirname "$0"`"
echo "Le répertoire courant est `pwd`"

~/Documents/go $ ./chemins.sh
Le script exécuté a comme basename chemins.sh, dirname .
Le répertoire courant est /Users/bruno/Documents/go

cd ..
~/Documentsr $ go/chemins.sh
Le script exécuté a comme basename chemins.sh, dirname go
Le répertoire courant est /Users/bruno/Documents

cd ~
~ $ /Users/bruno/Documents/go/chemins.sh
Le script exécuté a comme basename chemins.sh, dirname /Users/bruno/Documents/go
Le répertoire courant est /Users/bruno
```



#### Supprimer les lignes vides:

```bash
$ echo "$l"
    1: Amazing Blues

    2: France Inter 95.9 (Émissions-débats France)
    3: K6 FM 101.6 (Musique Locale)
    4: RTL 104.2 (Monde)

    5: Radio Classique 105.8 (Classique)
    6: Rire et Chansons 91.8 (Comédie)


$ echo "$l" | awk 'NF'
$ echo "$l" | sed '/^$/d'
$ echo "$l" | grep .
$ echo "$l" | grep -v '^$'
    1: Amazing Blues
    2: France Inter 95.9 (Émissions-débats France)
    3: K6 FM 101.6 (Musique Locale)
    4: RTL 104.2 (Monde)
    5: Radio Classique 105.8 (Classique)
    6: Rire et Chansons 91.8 (Comédie)
```



#### [Tableaux:](tableaux.md)

Déclarer un tableau associatif:

```bash
declare -a do_not_update=('')
```



#### Commandes:

##### Test si une commande existe:

```bash
if [ -x "$(command -v jq)" ]; then
```

Tester l'argument d'une commande:

```bash
if [[ $1 == "--nodistract" ]]; then
```

Test du code de retour d'une commande:

```bash
brew missing
status=$?
if [ $status -ne 0 ]; then
```



#### Nombres de lignes:

```bash
# grep
nb=$(echo -n "$albums" | grep -c '^')

#awk
nb=$(awk 'END { print NR }' <<< "$albums")
```



#### Convertir un script bash en application macOS:

[mac-appify](https://pypi.org/project/mac-appify/)

```bash
$ appify script.sh name.app
$ appify script.sh name.app Icon.png
```

