Chapitre 7: Scripts shell Flashcards

1
Q

Programme
Ensemble d’instructions destinées à être exécutées par un ordinateur, 2 programmes?

A

Programmes binaires

Programmes scripts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Programmes binaires

Programmes scripts

A

Programmes binaires
* Programme en langage machine
* Spécifique à une architecture (famille de processeurs)
* Nécessite souvent un environnement d’exécution spécifique
(bibliothèques, système d’exploitation)

Programmes scripts
* Programme en langage de script
* Sous forme textuelle
* Exécutés par un interpréteur (un autre programme)
Script shell → Programme destiné à être interprété par le shell

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Langages de script
Spectre large

A

Spectre large
* Spécifique à un domaine (DSL)
* Généraliste
* Langage glue / langage d’extension

Rapide à apprendre et à utiliser
* Concis (moins de verbosité)
* Typage dynamique (moins de structures et de contraintes)

Environnement inclus
* Interprétés plutôt que compilés
* L’efficacité n’est pas un objectif

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Programmes sous Unix

Un programme = un fichier exécutable

$ file /bin/bash /usr/bin/vimtutor
/bin/bash: ELF 64-bit LSB pie executable
/usr/bin/vimtutor: POSIX shell script

Droits nécessaires
* x pour les programmes binaires
* x et r pour les programmes scripts

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Fichiers accessoires
La plupart des programmes ont besoin de fichiers supplémentaires

A
  • Bibliothèques partagées binaires (.so) et/ou script
  • Ressources (images, son, configuration, etc.)
  • Autre programmes supplémentaires

Un programme échouera si ces fichiers manquent

Les gestionnaires de paquets assurent la disponibilité et la cohérence
ce ces fichiers

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Exécuter un programme ⋆
Chemin absolu ou relatif

A

Avec au moins un slash « / »
* /opt/INF1070/hello
* script/hello
* ./hello → exécute un programme du répertoire courant

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Nom simple
Le nom d’un fichier d’un des répertoires d’exécutables
Habituellement au moins /bin, /usr/bin et /usr/local/bin

A
  • type affiche des informations sur le type de commande (POSIX)
  • which localise une commande dans l’environnement courant
  • whereis recherche une commande à d’autres endroits habituels
  • echo “$PATH” pour voir les répertoires d’exécutables (les détails
    plus tard)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Script ou binaire ?
* /usr/bin/ts (timestamp) horodate l’entrée standard (extra)
* /usr/bin/chromium navigateur web de Google (extra)
* /usr/bin/ldd lister les bibliothèques partagées nécessaires (extra)
Tester avec file ou ouvrir avec vim

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Shebang
Tout fichier texte lisible et exécutable (r-x) peut être exécuté

A
  • Les premiers caractères sont « #! » (shebang)
  • Ça indique le chemin absolu de l’interpréteur à utiliser
  • Sans shebang, le défaut est souvent /bin/sh

$ cat hello
#!/bin/sh
echo Heeeeeellllloooooo!!!!!!
$ ./hello
Heeeeeellllloooooo!!!!!!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Autres exécution de scripts 
Script en ligne

A

Option sh -c exécute les instructions passées en argument

$ dash -c “echo hello | rev”
Utile pour profiter des fonctionnalités du shell quand une simple
commande est attendue

Sourçage
La commande interne « . » (point) exécute un script dans le
processus courant

$ . ./niceprompt
Utile pour importer des bibliothèques et fichiers de configuration

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Pourquoi programmer en shell ?

A
  • Universel: C’est toujours disponible et utilisé un peu partout
  • Glue: Ça permet de facilement faire coopérer des programmes
  • Efficace: Car la syntaxe est très concise et expressive
  • Neutre: Ça fâche tout le monde pareil

Mais
* Ça requiert une connaissance spécialisée
* C’est risqué: le naïf fait facilement des bogues (voir INF600C)
* C’est bizarrement portable (POSIX vs. bash vs. utilitaires)
* Les structures de données et de contrôle sont très pauvres
* C’est lent

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Commandements

A
  • Tu feras seulement des petits scripts
  • Tu respecteras les bonnes pratiques
  • Tu protégeras tous tes développements de chaînes
  • Tu chercheras la simplicité et éviteras les commandes superflues
  • Tu maintiendras ton code clair et lisible
  • Tu éviteras la programmation shell si ce n’est pas adapté
  • Tu garderas tes oneliners fragiles pour la ligne de commande
  • Tu ne regretteras pas de devenir bon en shell
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Exécution de scripts
* Un script shell s’exécute ligne par ligne

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Attention à l’échec
Quand une commande échoue le script continue (par défaut)

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Séquences de commandes
Le point virgule « ; » enchaîne les commandes

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Groupes de commandes
Les accolades « {} » et parenthèses « () » groupent des commandes
Cela permet de combiner les redirections et les conduites

A
17
Q

Redirections de base (rappel)
* « > fichier » redirige la sortie standard en tronquant
* «&raquo_space; fichier » redirige la sortie standard en ajoutant
* « < fichier » utilise fichier comme entrée standard
* « 2> fichier » redirige la sortie d’erreur

A

Le shell s’occupe
* D’ouvrir les fichiers
* De rapporter les problèmes d’ouverture
* En cas de problème, la commande n’est pas exécutée

18
Q

Redirections de base (rappel) 
La position des redirections n’est pas importante
Habituellement, on les met à la fin

A
19
Q

« [n]opérateur mot » est la forme générale des redirections où

A
  • n est un nombre optionnel
  • opérateur est un opérateur de redirection comme <, >,&raquo_space;, etc.
  • mot est un nom de fichier ou &m pour une duplication
20
Q

Les descripteurs 0, 1 et 2 ont une signification spéciale

A
  • 0 = entrée standard
  • 1 = sortie standard
  • 2 = sortie standard d’erreur