La ligne de commande permet de contrôler un ordinateur sans interface utilisateur graphique (IUG). Dans cette unité, nous allons apprendre les commandes de base pour interagir avec notre ordinateur.
Points clés à retenir
- Les élèves se déplaceront sur leur ordinateur à l'aide de commandes.
- Les élèves vont créer, déplacer, copier et supprimer des fichiers et des dossiers.
Qu'est-ce que la ligne de commande ?
La plupart des utilisateurs utilisent une interface utilisateur graphique (GUI) pour interagir avec l'ordinateur. Les interfaces utilisateur graphiques s'appuient généralement sur une souris ou un écran tactile pour manipuler des fenêtres avec des icônes, des boutons, des barres de défilement, etc.
La ligne de commande est une autre façon d'accéder à l'ordinateur. Parfois appelée "shell", "terminal", "bash" ou "interface de texte", la ligne de commande est :
- Moyen d'interagir avec un programme informatique où l'utilisateur saisit des commandes. Par exemple :
open README.txt
- Moyen de naviguer et d'utiliser votre ordinateur sans souris.
- Il s'agit d'une méthode non graphique permettant de créer, lire, mettre à jour, utiliser et supprimer vos fichiers et répertoires. Par exemple :
mv README.txt readme.txt
L'interface utilisateur graphique et la ligne de commande affichent les mêmes informations. Il s'agit de différentes façons d'interagir avec l'ordinateur.
Quand utiliser la ligne de commande ?
Les développeurs préfèrent souvent les interfaces de ligne de commande :
- Elles permettent de contrôler un programme ou un système d'exploitation de manière plus concise. Pourquoi ? En effet, tout se passe dans la même fenêtre, et avec de la pratique, cela demande moins d'efforts que de trouver et de manipuler des éléments avec une souris.
- Ils permettent d'exposer facilement les options de contrôle d'une commande. Pourquoi ? Les menus des interfaces utilisateur graphiques ne proposent qu'un nombre très limité d'options. Dans la ligne de commande, il existe des centaines de commandes. Quelques caractères ajoutés à une commande peuvent lui faire faire de nombreuses choses différentes. Par exemple :
ls
Fichiers de listes de basels -a
Lister tous les fichiers, y compris ceux qui sont normalement masquésls -l
Longue liste affichant des informations sur chaque fichierls -R
Récursif, liste le contenu des répertoiresls -la
Lister tous les fichiers au format long- Ils permettent d'agir facilement sur de nombreux fichiers à la fois de manière complexe.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
- Ils permettent de programmer le système d'exploitation (programmes shell). Par exemple, l'exemple ci-dessus est un programme shell très simple conçu pour modifier les images dont le nom de fichier se termine par
.png
.
La ligne de commande en action
Éléments d'une commande de ligne de commande
Toutes les commandes se composent de trois parties :
- La commande (ou l'utilitaire) est toujours placée en premier.
- Les indicateurs sont facultatifs et dépendent de l'utilitaire que vous utilisez. Les indicateurs commencent toujours par un signe moins (-).
- Les arguments sont les éléments sur lesquels la commande doit agir ou les informations nécessaires. Il s'agit souvent de noms de fichiers.
Encadrement
Contexte et objectif
La ligne de commande permet de contrôler un ordinateur sans souris ni interface utilisateur graphique (IUG). Avant qu'Apple Computer ne commence à concevoir des machines avec des icônes et des dossiers sur lesquels vous pouviez cliquer, la seule façon d'interagir avec votre ordinateur était d'utiliser la ligne de commande.
En tant que développeurs, nous utilisons la ligne de commande, car elle est beaucoup plus rapide et plus puissante que l'interface graphique. Nous n'avons pas besoin de perdre du temps à cliquer partout. La ligne de commande vous permet d'effectuer pratiquement toutes les interactions avec votre ordinateur.
Comme le terminal est une interface beaucoup plus simple, il présente un grand avantage par rapport à l'interface utilisateur graphique lorsque vous devez vous connecter à distance à un ordinateur via une liaison réseau. Les développeurs le font très souvent, par exemple lorsqu'ils voyagent.
Dans cette leçon, nous allons apprendre les commandes de base pour interagir avec notre ordinateur : créer des fichiers et des répertoires, déplacer des dossiers, changer de répertoire et lister le contenu d'un dossier.
Objectifs de la formation
Les élèves pourront :
- Utiliser le terminal pour parcourir les fichiers et les dossiers
- Lister le contenu d'un dossier
- Créer des fichiers et des dossiers sur la ligne de commande
- Déplacer des fichiers et des dossiers
- Copier des fichiers et des dossiers
- Supprimer des fichiers et des dossiers
Premiers pas
Accéder au terminal
Cadrage et objectif de la section
Le terminal fournit une interface de ligne de commande (CLI) au système d'exploitation. Il vous permet de donner des instructions textuelles directes à votre ordinateur.
Pour ce faire, nous devons lancer votre terminal en fonction du système que vous utilisez.
Lorsque le terminal se lance, il démarre dans le répertoire personnel de votre ordinateur (quel que soit le nom que vous lui avez donné). Votre répertoire personnel est indiqué par le tilde~
.
Lorsque nous parlons de notre monde dans le terminal, les répertoires sont identiques aux dossiers (nous pouvons parfois les appeler répertoires).
Changer de répertoire
Cadrage et objectif de la section
Pour parler à notre ordinateur dans le terminal et lui dire ce que nous voulons faire, nous devons parler une langue commune. La ligne de commande comprend les commandes écrites dans le langage de script bash. Les commandes sont des acronymes ou des abréviations de mots anglais.
Afficher le répertoire de travail (pwd
)
Lorsque vous naviguez dans votre terminal, il est important de savoir où vous vous trouvez (cela se traduit directement dans la vie réelle : si vous voulez aller quelque part, vous devez d'abord connaître votre position actuelle).
# See your current location - abbreviation for 'print working directory'
pwd
Lister les fichiers et répertoires disponibles
Votre répertoire de travail contient probablement plusieurs fichiers auxquels vous pouvez accéder. Normalement, nous nous appuyons sur des repères visuels comme des icônes pour savoir ce qui est disponible. Mais il serait difficile de naviguer sur notre ordinateur si nous devions deviner où se trouvent les fichiers et les dossiers. Dans la ligne de commande, nous allons utiliser une commande spécifique pour lister ce à quoi nous pouvons accéder à partir d'un répertoire de travail ou d'un emplacement donné.
Pour afficher les fichiers ou dossiers qui se trouvent dans notre répertoire actuel, utilisez la commande ls
(abréviation de "list", qui signifie "liste") pour afficher le contenu sous forme de liste.
# See files and folders in current location - abbreviation for 'list'
ls
Changer de répertoire de travail
Si vous avez besoin d'accéder à un fichier ou à un répertoire qui ne figure pas dans la liste, vous pouvez modifier votre répertoire de travail pour y accéder plus facilement.
La syntaxe permettant d'indiquer à la ligne de commande de vous déplacer vers un nouveau répertoire (également appelé dossier) est cd
, suivie (sur la même ligne) du chemin d'accès au nouveau dossier.
Si vous accédez à un répertoire qui se trouve dans le répertoire dans lequel vous êtes actuellement (c'est-à-dire un sous-dossier de votre répertoire de travail), utilisez la commande cd
suivie du nom du dossier.
# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents
Vous pouvez également accéder à la page de navigation à partir du répertoire ~.
# Add a `~/` to begin from the home directory.
cd ~/Downloads
Si vous avez changé de répertoire, mais que vous devez revenir au répertoire d'accueil, faites-le en revenant directement à l'accueil à l'aide de ~
ou en utilisant ..
pour remonter d'un niveau.
# Option 1: navigate directly to the home directory
cd ~
# Option 2: navigate back one level
cd ..
Notez que cd ..
ne remonte qu'un niveau. Par conséquent, si vous avez changé de répertoire trois fois (trois niveaux plus bas), vous devrez utiliser cd ..
trois fois pour revenir au répertoire de base, mais vous n'aurez besoin d'utiliser cd ~
qu'une seule fois.
Mini-défis
- Utilisez
ls
pour afficher le contenu de votre répertoire actuel. - Revenez à votre répertoire d'accueil et utilisez
ls
pour afficher le contenu de votre dossier d'accueil. - Choisissez le nom de l'un des dossiers qui se trouvent dans le répertoire personnel et accédez à ce nouveau dossier.
- Utilisez la commande list pour voir ce qu'il contient.
Conseil : Saisie semi-automatique avec tab
Lorsque vous changez de répertoire avec la commande cd
, une seule faute de frappe empêche la commande de s'exécuter correctement. Toutefois, l'utilisation de la touche tab
permet de compléter automatiquement le nom de tous les répertoires disponibles dans votre répertoire actuel. Au lieu de saisir cd Documents
, saisissez simplement cd Do
, puis appuyez sur la touche tab
. Le terminal complétera automatiquement la commande cd Documents/
(le /
à la fin est facultatif, mais vous indique que la destination est un répertoire).
Cette saisie semi-automatique permet non seulement de gagner du temps lorsqu'elle fonctionne, mais elle fournit également des informations précieuses lorsqu'elle ne fonctionne pas. Si le bouton d'onglet ne se complète pas automatiquement, vous avez probablement rencontré l'un des trois problèmes très courants suivants :
- Le répertoire vers lequel vous souhaitez accéder n'est pas accessible depuis votre répertoire de travail actuel.
- Il existe deux répertoires dont les noms commencent de la même manière (par exemple,
Documents
etDownloads
). Vous n'avez pas fourni suffisamment d'informations pour que la saisie semi-automatique puisse déterminer celui que vous souhaitez. Appuyez de nouveau surtab
pour afficher la liste des répertoires qui pourraient correspondre à ce que vous avez saisi. Saisissez ensuite quelques caractères supplémentaires (suffisamment pour qu'il n'y ait qu'un seul résultat), puis appuyez de nouveau surtab
. - Vous avez déjà inclus une faute de frappe dans la première moitié du mot.
Plus tôt vous prendrez l'habitude d'utiliser la touche Tabulation pour compléter automatiquement vos commandes, plus vous serez en mesure de gérer les situations frustrantes où vos commandes semblent ne pas fonctionner.
Répertoires parents et enfants
Les répertoires et les fichiers peuvent avoir des relations enfant et parent les uns avec les autres. Si directory_b
est à l'intérieur de directory_a
, directory_b
est appelé enfant de directory_a
. directory_a
est alors appelé parent de directory_b
. Si un troisième élément, my_file
, se trouve dans un directory_b
, il est considéré comme un enfant de directory_b
et un petit-enfant de directory_a
.
Ces relations sont souvent illustrées sur les forums à l'aide d'un diagramme textuel, comme celui-ci :
directory_a/ directory_b/ my_file
Notez que les noms de répertoire se terminent par un /
, contrairement aux noms de fichiers. Cette organisation hiérarchique est généralement appelée arborescence d'un système de fichiers.
Frères et sœurs
Si plusieurs fichiers ou dossiers se trouvent au même niveau, ils sont appelés frères et sœurs. Par exemple, si file_b
et file_c
se trouvent dans directory_a
, ils sont frères et sœurs.
Ce diagramme textuel ressemblerait à ceci :
directory_a/ file_b file_c
Notez que, comme file_b
et file_c sont des éléments frères, ils sont indentés de la même manière.
Chemins des fichiers
Voici un diagramme textuel plus complexe qui présente à la fois des relations parent-enfant et des relations entre frères et sœurs.
north_america/ united_states/ new_york/ new_york_city/ manhattan queens staten_island bronx brooklyn california/ mountain_view los_angeles illinois/ chicago mexico/ mexico_city
Dans cet exemple, new_york_city/
est un nom de répertoire, mais il possède également un chemin d'accès qui indique comment y accéder : ~/north_america/united_states/new_york/new_york_city/
.
Pour accéder à new_york_city/,
, vous pouvez le faire par étapes en utilisant les noms, ou en une seule commande en utilisant le chemin d'accès.
# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/
# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/
Récapitulatif des commandes de navigation
# See your current location - abbreviation for 'print working directory'
pwd
# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads
# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory
# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..
# Will take you back home
cd
Mini-défis
- Utilisez
pwd
pour connaître le dossier dans lequel vous vous trouvez actuellement. - Passez à un autre répertoire et confirmez votre nouvel emplacement.
- Réessayez et accédez à un autre dossier. Utilisez vos nouvelles commandes pour afficher votre position et les fichiers de ce répertoire.
Créer des fichiers et des répertoires
Cadrage et objectif de la section
En tant que développeurs, nous devrons créer des fichiers avec du code. Pour organiser ces fichiers, nous devons créer des dossiers / répertoires dans lesquels nous pouvons stocker nos fichiers.
Avant de créer vos fichiers et dossiers, vérifiez votre emplacement dans le terminal.
# See your current location.
pwd
Pour créer un fichier, utilisez la commande touch
suivie du nom du fichier.
# `touch` creates a new file.
touch style.css
Lorsque vous créez des fichiers, ajoutez une extension de fichier pour spécifier le type. Exemples de types de fichiers :
.js
make as a JavaScript file.html
créer un fichier HTML.css
crée un fichier CSS..md
crée un fichier Markdown
Les noms de fichiers ne doivent pas contenir d'espaces.
# make a file - this will create a file in the current folder
touch my_text_file.txt
# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css
Créer plusieurs fichiers
Vous pouvez créer plusieurs fichiers à la fois en insérant des espaces entre chaque nom.
# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
Créer des répertoires
Pour créer un répertoire ou un dossier, utilisez la commande mkdir
(abréviation de "make directory", c'est-à-dire "créer un répertoire"), suivie du nom du dossier.
# make a folder - this will create a directory in the current folder
mkdir my_new_folder
# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder
Créer plusieurs répertoires
Vous pouvez créer plusieurs dossiers à la fois en insérant des espaces entre chaque nom.
# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three
Mini-défis
- Créer un fichier.
- Créez plusieurs fichiers en une seule commande.
- Créez un répertoire.
- Créez d'autres répertoires. Essayez d'utiliser une seule commande pour ce faire.
- En vous appuyant sur vos connaissances en matière de navigation dans les répertoires et de création de fichiers et de dossiers, créez un "arbre généalogique" sur votre bureau à l'aide de fichiers et de dossiers.
Déplacer et copier
Déplacer des fichiers et des répertoires
Cadrage et objectif de la section
Nous pouvons déplacer un fichier ou un dossier sur la ligne de commande, mais nous devons toujours spécifier trois éléments :
- Nous utilisons la commande
mv
, abréviation de déplacer. - Faites suivre la commande de déplacement du nom du fichier ou du dossier que vous souhaitez déplacer.
- Faites suivre le nom du fichier par la destination vers laquelle vous souhaitez le déplacer.
Par exemple, si votre structure de fichiers est la suivante :
my_child_folder/ my_parent_folder/
Vous pouvez constater qu'il n'est pas organisé comme il le devrait : ils sont frères et sœurs alors qu'ils devraient être parent et enfant. Utilisez cette commande :
# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/
La structure obtenue se présentera comme suit.
my_parent_folder/ my_child_folder/
Voici d'autres variantes de la commande mv
:
# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder
Avertissement : mv
est également la commande permettant de renommer un fichier à l'aide de la syntaxe mv old_name new_name
. Cela signifie que si vous déplacez un fichier vers un répertoire qui n'existe pas ou si vous faites une faute d'orthographe dans la destination, le fichier lui-même sera renommé au lieu d'être déplacé.
Mini-défis
- Créez cinq fichiers texte (.txt).
- Créez un répertoire.
- Déplacez les cinq fichiers que vous avez créés dans le dossier.
- Créez un dossier et déplacez-le dans un autre dossier.
Copier des fichiers et des répertoires
Cadrage et objectif de la section
Lorsque nous créons nos applications Web, nous pouvons souhaiter dupliquer un fichier (si nous créons deux pages Web similaires, nous ne voulons peut-être pas repartir de zéro). La syntaxe de la commande cp
(copier) est très similaire à celle de mv
.
Copier un fichier
La commande de copie se compose de trois parties :
- La commande
cp
, abréviation de copy - Nom du fichier à copier
- Le nom de la copie (si elle reste dans le même dossier) ou l'emplacement et le nom (si elle est déplacée vers un autre dossier).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt
Si vous souhaitez que la copie conserve le même nom que l'original, vous pouvez spécifier l'emplacement de la copie sans nom de fichier.
# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/
Il peut être déroutant d'avoir de nombreux fichiers portant le même nom. N'utilisez donc cette méthode que si vous êtes sûr que c'est ce dont vous avez besoin.
Copier un répertoire
La copie d'un dossier ou d'un répertoire est un peu plus compliquée, car vous souhaitez probablement copier non seulement le dossier, mais aussi tout ce qu'il contient.
- La commande
cp -R
(abréviation de copy recursive) permet de copier les dossiers vides et non vides. - Nom de la source (dossier ou fichier à déplacer)
- Le nom de la copie (si elle reste dans le même dossier) ou l'emplacement et le nom (si elle est déplacée vers un autre dossier).
Avertissement : Lorsque vous spécifiez le nom de la copie, si le fichier ou le dossier n'a pas été créé précédemment, il le sera lorsque vous effectuerez la copie. Si le fichier a été créé avant l'exécution de la commande de copie, il écrasera tout ce qui se trouvait précédemment dans le fichier. Soyez donc prudent !
# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy
# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy
Remarque : Le composant -R
de cp -R
est appelé indicateur. Les indicateurs commencent toujours par un tiret et sont utilisés en combinaison avec des commandes pour donner des instructions plus spécifiques sur la façon dont cette commande doit être exécutée.
Mini-défis
- Créez un fichier appelé
my_original.txt
. - Créez une copie de
my_original.txt
en lui donnant un nouveau nom dans le même dossier. - Créez un répertoire.
- Créez une copie de ce répertoire, mais donnez-lui un autre nom.
- Créez une copie du fichier copié (à l'étape 2), mais placez-la dans le répertoire copié (à l'étape 4).
Supprimer des fichiers et des dossiers
Cadrage et objectif de la section
Nous pouvons supprimer des fichiers et des dossiers sur la ligne de commande, mais cette action est définitive.
Supprimer un fichier
Pour supprimer un fichier, nous pouvons utiliser la commande rm
(abréviation de remove) suivie du nom du fichier.
# delete a file in the working directory
rm unwanted_file.txt
# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt
Supprimer un répertoire vide
Pour supprimer un répertoire vide, nous pouvons utiliser la commande rmdir
(abréviation de remove directory, c'-à-d. "supprimer le répertoire"), suivie du nom du dossier.
# delete an empty folder
rmdir empty_directory
# delete an empty folder
rmdir ~/Documents/my_files/empty_directory
Supprimer un répertoire non vide
Pour supprimer un dossier non vide, nous devons ajouter l'indicateur -R
(abréviation de récursif) après la commande rm
, qui indique à l'ordinateur de supprimer le contenu du dossier. Par mesure de simplification, certains développeurs utilisent l'indicateur -Rf
, qui supprime de force tous les éléments (sinon, vous pouvez recevoir des invites à supprimer certains fichiers ou dossiers enfants).
# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty
# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty
Avertissement : L'utilisation de la commande rm
n'est pas comparable à la corbeille ou à la section "Supprimés" de votre messagerie. Ces fichiers ne peuvent pas être récupérés facilement. Soyez EXTRÊMEMENT PRUDENT lorsque vous supprimez des fichiers de cette manière.
Mini-défis
- Créez quatre fichiers.
- Supprimez deux des fichiers.
- Créer un dossier
- Créez un autre dossier et un fichier à l'intérieur.
- Supprimez les deux répertoires.
Vous trouverez le code de cet atelier dans le dossier suivant du dépôt des élèves que vous avez téléchargé depuis GitHub : command-line/labs/around-the-world
Arrière-plan
Votre semestre à l'étranger approche à grands pas et il est temps de commencer à planifier vos voyages en Europe…
Vous avez trois mois devant vous pour vivre pleinement. Vous voulez donc profiter au maximum de chaque week-end.
Heureusement, vous ne partez pas de zéro. Vos amis vous ont fourni certaines de leurs activités préférées de leur semestre à l'étranger. Malheureusement, certains fichiers ont été mélangés…
Ne vous inquiétez pas, grâce à la magie de la ligne de commande, vous pourrez les corriger en un rien de temps !
Tâche
Assurez-vous que chaque ville se trouve dans le bon pays et que chaque dossier de ville contient les monuments appropriés. Faites attention, sinon vous risquez de vous retrouver à Amsterdam à la recherche de la tour Eiffel !
Si vous êtes VRAIMENT sûr de vous, masquez votre interface utilisateur graphique et relevez ce défi directement depuis la ligne de commande. Vous devez rester dans le dossier général "around-the-world" pendant toute cette procédure, ce qui signifie que vous devez utiliser des chemins absolus lorsque vous faites référence à des dossiers et des fichiers.
Une fois que vous êtes sûr que tout est en ordre, c'est à votre tour de prendre le contrôle de vos prochains mois. Trouvez de nouvelles villes, de nouveaux pays et de nouveaux monuments que vous DEVEZ voir et ajoutez-les à votre arborescence de fichiers.
Félicitations ! Vous avez officiellement appris à parler le langage informatique. Prêt à aller plus loin ? Parlons des extensions…
Extensions
- Mélangez à nouveau tous vos fichiers, puis rendez-vous dans la ville de votre choix. Réorganisez à nouveau les fichiers, en restant dans cette ville.
- Essayez l'un des jeux en ligne de commande amusants ci-dessous :
Terminus Game
Advanced Game (préparez-vous à faire des recherches sur Google) - Vous êtes un grand fan de Star Wars ? Essayez d'exécuter
telnet towel.blinkenlights.nl
dans votre ligne de commande, puis appuyez sur Entrée… (Notez que dans les versions récentes de macOS, la commandetelnet
n'est plus installée par défaut. Dans ce cas, vous pouvez utiliser la commandenc towel.blinkenlights.nl 23
à la place.)
Vous trouverez le code de cet atelier dans le dossier suivant du dépôt des élèves que vous avez téléchargé depuis GitHub : command-line/labs/bashing-away-repetition
Vous en avez assez de répéter les mêmes commandes dans votre utilisation quotidienne de la ligne de commande ? Super, moi aussi !
Arrière-plan
S'il y a bien une chose que les programmeurs détestent, c'est la répétition. En tant qu'informaticiens, notre travail consiste à faire faire à l'ordinateur le maximum de travail possible. Écrire des scripts Bash nous aidera à utiliser plus efficacement la ligne de commande.
Tout d'abord, qu'est-ce qu'un script bash ?
EXCELLENTE question. Heureusement, notre ami Ryan Chadwick, qui tient ce site génial pour trouver des tutoriels sur la ligne de commande, a la réponse.
Un script Bash nous permet de définir une série d'actions que l'ordinateur exécutera ensuite sans que nous ayons à saisir les commandes nous-mêmes. Si une tâche particulière est effectuée souvent ou est répétitive, un script peut être un outil utile.
Pas de répétition ? C'est ce dont je parle.
Tutoriel
Pour commencer, vous devez autoriser votre ordinateur à exécuter votre script. Pour ce faire, exécutez la commande ci-dessous.
chmod 755 myScript.sh
Il est temps d'écrire votre premier programme. Accédez à votre fichier myScript.sh
(essayez de l'ouvrir à partir de la ligne de commande). À la fin du fichier, ajoutez :
echo "Hello World"
Exécutez maintenant la commande suivante :
./myScript.sh
dans votre terminal. ** TA DA ** Le message "Hello World" doit s'afficher dans votre terminal.
Tout ce que vous écrivez dans votre script Bash s'exécutera comme si vous l'aviez saisi dans votre terminal. Prenons un autre exemple avant de passer aux extensions. Commencez par créer un fichier pour votre script. Vous pouvez lui donner le nom de votre choix, mais il doit avoir l'extension .sh
. Ensuite, assurez-vous d'autoriser l'exécution de votre script en saisissant chmod 755
, puis le nom de votre script dans votre terminal et en appuyant sur Entrée. Chaque fois que vous démarrez un nouveau script Bash, veillez à effectuer ces deux étapes.
Défi d'introduction
Maintenant, essayons d'écrire un script qui crée un dossier. Quelle commande permet de créer un dossier ? Si vous pensez à un mot qui commence par m
et se termine par kdir
, vous êtes sur la bonne voie. Écrivez la commande qui créera votre nouveau dossier et donnez-lui un nom original dans votre nouveau fichier .sh
, puis exécutez-la dans votre terminal.
Si cela fonctionne, passez aux autres problèmes listés ci-dessous. Si vous êtes encore un peu perdu, essayez de revenir à l'atelier "Le monde entier" et réfléchissez à la façon dont vous avez créé des dossiers pour les pays et les villes.
N'hésitez pas à utiliser le tutoriel dont le lien est fourni ci-dessus et préparez-vous à faire preuve de vos meilleures compétences en recherche Google. Écrivez et exécutez des scripts qui effectuent les opérations suivantes :
Tâches principales
- Ajoutez une commande au fichier que vous avez créé ci-dessus pour accéder au dossier que vous êtes en train de créer. (Quelle commande utilisons-nous pour changer de répertoire ?)
- Ajoutez la date au nom de votre nouveau dossier. Par exemple, votre programme doit créer un dossier nommé "
2017-12-07my_super_cool_folder
".
- Affiche "Mon répertoire actuel est : " suivi de votre répertoire de travail, puis "Voici la liste de tous les éléments de ce répertoire ! " suivi du contenu de votre répertoire actuel.
- Déterminez comment fournir une entrée à votre script bash et créez un fichier basé sur cette chaîne d'entrée. Le tutoriel dont le lien figure plus haut dans l'atelier contient d'excellents exemples dans la section sur les variables.
- Demandez à l'utilisateur de vous fournir son nom, puis affichez "Bonjour, ravi de vous rencontrer insérer le nom ici".
- Essayez de demander plus d'informations à votre utilisateur et de créer un message personnalisé pour lui.
CONTEXTE
La ligne de commande (ou le terminal) permet d'interagir directement avec le système d'exploitation de l'ordinateur. Elle permet d'effectuer toutes les actions de l'interface utilisateur graphique (IUG), mais à l'aide de commandes textuelles : navigation, création de fichiers, exécution de scripts, etc. La ligne de commande sera utilisée pour ouvrir des fichiers et pour lancer l'environnement de développement lorsque vous utilisez Google App Engine.
La ligne de commande en action
Accéder au terminal
Raccourci Mac :
- Ouvrez Spotlight en appuyant sur Commande+Espace.
- Saisissez Terminal dans la recherche Spotlight.
Parcourir le terminal
# See your current location - abbreviation for 'print working directory'.
pwd
# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads
# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory
# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..
# Return home.
cd
# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```
#### File Path Shorthand `~`
The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.
This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.
### <a id="view"></a>Viewing the Contents of Folders
```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls
Créer des fichiers et des dossiers
Créer des fichiers
# Make a file - this will create a file in the current folder.
touch my_text_file.txt
# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css
# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
Création de dossiers
# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder
# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder
# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three
Déplacer des fichiers et des dossiers
Déplacer des fichiers
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist. Read below for more details on renaming.
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder
Déplacer des dossiers
# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder
# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder
Déplacer, c'est renommer
N'oubliez pas que mv
est également la commande utilisée pour renommer des fichiers ou des dossiers.
# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt
Copier des fichiers et des dossiers
Copier des fichiers
# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt
Copier des dossiers
# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy
# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy
Supprimer des fichiers et des dossiers
Supprimer des fichiers
# Delete a file in the current working directory.
rm unwanted_file.txt
# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt
Supprimer des dossiers
# Delete an empty folder.
rmdir empty_directory
# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty
Conseils et astuces
- Entraînez-vous à utiliser la ligne de commande, même lorsque vous pensez ne pas en avoir besoin. Vous vous améliorerez avec le temps.
- La touche
tab
complète automatiquement le nom de votre fichier ou dossier (il peut être sensible à la casse). - S'il ne reste qu'un seul fichier ou dossier correspondant, il sera complété automatiquement.
- S'il existe plusieurs fichiers ou dossiers correspondants, appuyez deux fois sur la touche de tabulation pour afficher la liste des correspondances restantes.
- Les flèches vers le haut et vers le bas vous permettent de parcourir l'historique des commandes pour éviter de les ressaisir.
- Utilisez la commande
clear
pour effacer la fenêtre du terminal. Cela permet de conserver tout votre travail précédent. Faites défiler l'écran vers le haut pour le voir. - Utilisez
reset
pour redémarrer le terminal. Cela ne conservera pas votre travail précédent à l'écran, mais peut résoudre plusieurs problèmes si le terminal commence à se comporter de manière imprévisible. - Appuyer sur
option
+arrow
pour déplacer le curseur d'un mot
Récapitulatif des bonnes pratiques
- Parcourez le terminal à l'aide de
cd
,cd ..
oucd <folder name>
. - Affichez le contenu des dossiers à l'aide de
ls
. - Créez des fichiers à l'aide de
touch
et des dossiers à l'aide demkdir
. - Déplacez des fichiers et des dossiers à l'aide de
mv <item to move> <destination>
. - Copiez des fichiers et des dossiers à l'aide de
cp <item to copy> <destination>
. - Supprimez des fichiers et des dossiers à l'aide de
rm <item to remove>
.
Question 1
Quelle commande utiliseriez-vous pour identifier votre répertoire de travail actuel ?
pwd
ls
cd
mkdir
touch
Question 2
Comment remonter de deux niveaux à partir de votre répertoire de travail actuel ?
mv ~
cd ../..
mv up/up
cd ^(2)
Question 3
Quelle commande utiliseriez-vous pour renommer un fichier ?
mv
cd
ls
python
rename
Question 4
Pourquoi la commande mv script.py
génère-t-elle une erreur ?
- Car "
script.py
" n'est pas un nom de fichier valide. - Car la commande
mv
ne peut être suivie d'aucune autre information. - Il s'agit d'une question piège. Aucune erreur ne sera générée.
- Car le déplacement d'un fichier nécessite au moins deux arguments : une cible et une destination
Question 5
Que ferait la commande cd ~
?
- Remplacez votre répertoire de travail par votre répertoire d'accueil.
- Répétez la commande précédente.
- Utiliser un algorithme pour déterminer la commande la plus utile à ce moment-là.
- Générer une erreur.
Question 6
Parmi les raisons suivantes, laquelle ne justifie PAS l'utilisation de la touche de tabulation pour compléter automatiquement les noms de fichiers ?
- Parce que cela vous fait gagner du temps.
- car elle permet d'éliminer les fautes d'orthographe.
- car elle nécessite moins de puissance de traitement.
Question 7
Si un nouveau développeur tente de créer un fichier nommé "my script.py
", pourquoi la commande touch my script.py
ne fonctionnera-t-elle pas ?
- Car
touch
ne peut pas créer de fichiers. - Car
.py
n'est pas une extension de fichier valide. - En effet, il créera deux fichiers, l'un appelé "
my
" et l'autre "script.py
", au lieu d'un seul. - Car il est impossible de créer des fichiers à partir de la ligne de commande.
Question 1
Quelle commande utiliseriez-vous pour identifier votre répertoire de travail actuel ?
pwd
Question 2
Comment remonter de deux niveaux à partir de votre répertoire de travail actuel ?
Avec cd ../..
, vous montez de deux niveaux (chaque ..
représente un niveau au-dessus).
Question 3
Quelle commande utiliseriez-vous pour renommer un fichier ?
mv
permet de déplacer un fichier d'un emplacement à un autre et peut également être utilisé pour modifier le nom du fichier.
Question 4
Pourquoi la commande mv script.py
génère-t-elle une erreur ?
La commande mv
nécessite deux arguments : un fichier source et un fichier de destination.
Question 5
Que ferait la commande cd ~
?
Elle remplace votre répertoire de travail par votre répertoire d'accueil. Le caractère spécial ~ est utilisé pour identifier le répertoire personnel de l'utilisateur actuel. Il peut également être utilisé en combinaison avec un nom d'utilisateur différent : ~user2 pour pointer vers son dossier personnel.
Question 6
Parmi les raisons suivantes, laquelle ne justifie PAS l'utilisation de la touche de tabulation pour compléter automatiquement les noms de fichiers ?
Parce qu'il nécessite moins de puissance de traitement est incorrect. tab
nécessite une puissance de traitement (souvent négligeable) pour analyser les dossiers à la recherche de noms de fichiers à compléter automatiquement, mais cela permet de gagner du temps et d'éviter les fautes d'orthographe.
Question 7
Si un nouveau développeur tente de créer un fichier nommé "my script.py
", pourquoi la commande touch my script.py
ne fonctionnera-t-elle pas ?
Deux fichiers seront créés au lieu d'un seul. La commande touch
crée des fichiers. Dans le terminal, les espaces sont des séparateurs et non des caractères à inclure dans le nom du fichier. Il est préférable de les éviter complètement, mais si vous devez les utiliser, le nom de fichier doit être placé entre guillemets doubles :
touch "my script.py"
Question 1
La commande de terminal permettant de changer de répertoire est la suivante :
move
mkdir
pwd
cd
Question 2
Quelle commande exécuteriez-vous si vous souhaitiez accéder au dossier parent de votre répertoire de travail actuel ?
cd up
cd .
cd ..
cd ~
Question 3
Quelle commande permet de créer des fichiers ?
touch
mkdir
create
pwd
Question 4
Parmi les commandes suivantes, laquelle créera deux fichiers appelés index.html
et style.css
?
touch index.html, touch style.css
touch index.html, style.css
touch index.html style.css
touch index.html + style.css
Question 5
Quelle commande utilisez-vous pour renommer un fichier ou un dossier ?
rename
move
mv
rm
Question 6
Quelle option les commandes rm
et cp
doivent-elles utiliser pour fonctionner sur les dossiers ?
-f
-r
-x
-d
Question 7
Pour déplacer projects
vers ~/Documents
et le renommer Projects
, quelle commande doit être insérée dans l'espace vide ?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
Question 8
Que fera la commande suivante ?
rm -r projects
- Supprimer un fichier appelé
projects
- Supprimer un dossier nommé
projects
- Renommer un fichier appelé
projects
- Rechercher
projects
dans le contenu du répertoire actuel
Question 1
La commande de terminal permettant de changer de répertoire est la suivante :
La commande de terminal permettant de changer de répertoire est cd
. La commande elle-même est l'abréviation de "change directory" (changer de répertoire).
Question 2
Quelle commande exécuteriez-vous si vous souhaitiez accéder au dossier parent de votre répertoire de travail actuel ?
La commande permettant d'accéder au dossier parent est cd ..
Question 3
Quelle commande permet de créer des fichiers ?
La commande permettant de créer des fichiers est touch
.
Question 4
Parmi les commandes suivantes, laquelle créera deux fichiers appelés index.html
et style.css
?
La commande touch index.html style.css
créera les deux fichiers. Aucune virgule n'est nécessaire. Vous pouvez créer autant de fichiers que vous le souhaitez de cette manière, en les séparant par des espaces.
Question 5
Quelle commande utilisez-vous pour renommer un fichier ou un dossier ?
Bien que mv
signifie "déplacer" et puisse être utilisé pour déplacer des fichiers ou des dossiers, il peut également servir à renommer des fichiers et des dossiers.
Question 6
Quelle option les commandes rm
et cp
doivent-elles utiliser pour fonctionner sur les dossiers ?
Les commandes rm
et cp
nécessitent l'option -r
pour fonctionner sur les dossiers, car l'option -r
signifie "récursif" et réexécute la commande pour tous les fichiers et dossiers contenus.
Question 7
Pour déplacer projects
vers ~/Documents
et le renommer Projects
, quelle commande doit être insérée dans l'espace vide ?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
Comme nous commençons dans le répertoire d'accueil, nous devons exécuter cd ~/Documents
pour que la commande finale soit exécutée dans le bon répertoire.
Question 8
Que fera la commande suivante ?
rm -r projects
La commande supprimera un fichier OU un dossier nommé projects
, car elle est appelée avec l'option -r
ou l'option récursive. Sans cette option, cette commande ne fonctionnerait que pour supprimer un fichier portant ce nom.