# Links



### soft link (symbolic link):

- ln -s
- contient le chemin du fichier original
- link des répertoires

```bash
~ mkdir link

~ touch link/hello.txt

~ ln -s link/hello.txt

~ ls
hello.txt		link
```



#### Créer un lien symbolic

```bash
~ ln -s link/hello.txt hello_you.txt

~
$ ls
hello.txt		link		hello_you.txt
```

```bash
~/.local/bin                                                                                                                                        
$ ln -s ~/Documents/Scripts/pihole/sync_pihole_lan.sh sync_pihole
```

```bash
~/.local/bin                                                                                                                                        
$ ln -s ~/Documents/Scripts/bashbirds/bashbirds.sh bashbird
```



### hard link:

- ln
- contient le contenu du fichier original (le hardlink et le fichier original partagent le même inode)
- ne link pas des répertoires



#### Inode number

```bash
~ touch file_1 file_2

~ ls -i
43767553  file_1		43767554  file_2
```

```bash
~ ls -l
-rw-r--r--    1 bruno staff         0 mai  6 18:29  file_1
-rw-r--r--    1 bruno staff         0 mai  6 18:29  file_2
```



#### Créer un hard-link

```bash
~ ln file_1 hard_ln
```

```bash
~ ls -li
43767553 -rw-r--r--    2 bruno staff         0 mai  6 18:29  file_1
43767554 -rw-r--r--    1 bruno staff         0 mai  6 18:29  file_2
43767553 -rw-r--r--    2 bruno staff         0 mai  6 18:29  hard_ln
43768356 lrwxr-xr-x    1 bruno staff        14 mai  6 18:46  hello.txt -> link/hello.txt
43768828 lrwxr-xr-x    1 bruno staff        14 mai  6 18:50  hello_you.txt -> link/hello.txt
43768326 drwxr-xr-x    3 bruno staff        96 mai  6 18:46  link
```

file_1 et hard_ln ont le même inode.

Si on supprime `file_1`, `hard_ln` conserve le même contenu.



#### Origine d'un lien

```bash
/opt/homebrew/share/zsh/site-functions stable                                                 

❯ readlink -f _yq
/opt/homebrew/Cellar/yq/4.40.5/share/zsh/site-functions/_yq

```

