La ligne de commande permet de contrôler un ordinateur sans IUG. Dans ce module, nous allons découvrir les commandes de base pour interagir avec notre ordinateur.
Points clés à retenir
- Les élèves se déplacent 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 généralement l'interface utilisateur graphique (IUG) pour interagir avec l'ordinateur. Les IUG s'appuient généralement sur une souris ou un pavé 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 vue de l'ordinateur. L'interface système, parfois appelée "interface", "Terminal" ou "interface" ou "interface" de texte, est la ligne de commande suivante:
- Moyen d'interagir avec un programme informatique dans lequel l'utilisateur saisit des commandes, par exemple:
open README.txt
- Un moyen de naviguer et de faire fonctionner votre ordinateur sans souris.
- Une façon non graphique de créer, lire, mettre à jour, utiliser et supprimer des fichiers et des répertoires. Exemples :
mv README.txt readme.txt
L'IUG et la ligne de commande ont le même aspect. Il existe différentes manières d'interagir avec l'ordinateur.
Quand utiliser la ligne de commande ?
Les interfaces de ligne de commande sont souvent privilégiées par les développeurs:
- Elles offrent un moyen plus concis de contrôler un programme ou un système d'exploitation. Pourquoi ? Tout se passe dans la même fenêtre, et, en pratique, cela représente moins d'efforts que de rechercher et de manipuler des objets avec une souris.
- Ils proposent facilement des options permettant de contrôler une commande. Pourquoi ? Les menus des IUG permettent très peu d'options. Dans la ligne de commande, vous pouvez utiliser des centaines de commandes pour effectuer de nombreuses opérations. Par exemple, quelques caractères peuvent être ajoutés.
ls
fichiers de liste de basels -a
Répertorier tous les fichiers, y compris ceux qui sont normalement masquésls -l
Longue liste contenant des informations sur chaque fichierls -R
Récursif : répertoriez le contenu des répertoires.ls -la
: liste longue de tous les fichiers- Ils facilitent la gestion 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
.
Ligne de commande en action
Composantes de la commande d'une ligne de commande
Toutes les commandes comportent trois parties:
- La commande (ou l'utilitaire) est toujours la première.
- Les options sont facultatives selon l'utilitaire que vous utilisez. Les options commencent toujours par un signe - (moins).
- Les arguments sont les éléments permettant à la commande d'agir ou les informations nécessaires. Souvent, les noms de fichiers.
Trames
Contexte et but
La ligne de commande permet de contrôler un ordinateur sans souris ni IUG (interface utilisateur graphique). Avant de commencer à créer des machines avec des icônes et des dossiers, le seul moyen d'interagir avec votre ordinateur était de cliquer sur la ligne de commande.
En tant que développeur, nous utilisons la ligne de commande, car elle est beaucoup plus rapide et puissante que l'IUG, sans perdre de temps à cliquer sur les différentes icônes. Grâce à la ligne de commande, vous pouvez effectuer quasiment toutes les interactions de votre ordinateur.
Le terminal est beaucoup plus simple à utiliser que l'IUG, car il permet de se connecter à distance à un ordinateur via un lien réseau. Les développeurs s'en servent très souvent, par exemple, lorsqu'ils voyagent.
Au cours de cette leçon, nous allons apprendre les commandes de base permettant d'interagir avec notre ordinateur en créant des fichiers et des répertoires, en déplaçant des dossiers, et en changeant le contenu d'un dossier.
Objectifs de la formation
Les élèves pourront :
- Utiliser le Terminal pour parcourir les fichiers et les dossiers
- Répertorier le contenu d'un dossier
- Créer des fichiers et des dossiers à l'aide de 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 section
Le terminal fournit une interface de ligne de commande (CLI) au système d'exploitation. Vous pouvez ainsi donner à votre ordinateur des instructions écrites directement.
Pour cela, nous devons lancer votre terminal en fonction du système que vous utilisez.
Au lancement du terminal, il commence dans le répertoire d'accueil de votre ordinateur (quel que soit votre nom). Votre répertoire d'accueil est indiqué par le tilde ~
.
Pour décrire notre monde à l'intérieur du Terminal, les répertoires sont semblables aux dossiers (parfois, nous les appelons simplement répertoires).
Changement d'annuaire
Cadrage et objectif de section
Pour parler à notre ordinateur dans le terminal et lui dire ce que nous voulons faire, nous devons parler une langue courante. La ligne de commande comprend les commandes écrites dans le script de script bash. Les commandes sont des acronymes ou des abréviations de mots anglais.
Imprimer le répertoire de travail (pwd
)
Lorsque vous naviguez sur votre terminal, il est important de savoir où vous êtes (ce qui se traduit directement dans la vie réelle). Si vous souhaitez vous rendre 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 indicateurs visuels, comme les icônes, pour indiquer les éléments disponibles, mais il serait difficile de parcourir notre ordinateur si nous devions simplement identifier l'emplacement des fichiers et des dossiers. Dans la ligne de commande, nous allons utiliser une commande spécifique pour lister les éléments auxquels nous pouvons accéder depuis un répertoire de travail ou un emplacement donné.
Pour voir quels fichiers ou dossiers se trouvent dans notre répertoire actuel, utilisez la commande ls
(abréviation de list) pour afficher la liste du contenu.
# 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, nous vous conseillons de le modifier afin de pouvoir y accéder plus facilement.
La syntaxe permettant à la ligne de commande de vous déplacer vers un nouveau répertoire (également appelé dossier) est cd
suivie (sur la même ligne) par le chemin d'accès au nouveau dossier.
Si vous accédez à un répertoire qui se trouve dans le répertoire dans lequel vous vous trouvez (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 à l'annuaire d'accueil ~.
# 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, accédez directement à la page d'accueil avec ~
ou utilisez ..
pour passer au niveau supérieur.
# Option 1: navigate directly to the home directory
cd ~
# Option 2: navigate back one level
cd ..
Notez que cd ..
ne passe qu'à un niveau en arrière (si vous avez changé de répertoire à trois reprises jusqu'à trois niveaux), et que vous devez utiliser cd ..
trois fois pour rentrer chez vous jusqu'au bout. 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 au répertoire d'accueil et utilisez
ls
pour afficher le contenu de votre dossier de base. - Choisissez le nom de l'un des dossiers qui se trouvent dans le répertoire d'accueil et accédez à ce nouveau dossier.
- Utilisez la commande "list" pour voir l'intérieur.
Conseil: Saisie semi-automatique avec tab
Lorsque vous modifiez des répertoires avec la commande cd
, une seule faute de frappe empêche la commande de s'exécuter correctement. Cependant, si vous utilisez la clé tab
, la saisie semi-automatique indiquera le nom des répertoires disponibles dans votre répertoire actuel. Ainsi, au lieu de saisir cd Documents
, il vous suffit de saisir cd Do
, puis d'appuyer sur la touche tab
. Le terminal complétera automatiquement la commande cd Documents/
(le champ /
à la fin est facultatif, mais vous indique que la destination est un répertoire).
Non seulement la saisie semi-automatique vous fait gagner du temps lorsqu'elle est en cours d'exécution, mais elle vous fournit également des informations précieuses lorsqu'elle ne fonctionne pas. Si la saisie semi-automatique ne suffit pas, vous avez probablement rencontré l'un des trois problèmes les plus courants:
- Le répertoire vers lequel vous souhaitez accéder n'est pas accessible à partir de votre répertoire de travail actuel.
- Deux annuaires portent des noms similaires (comme
Documents
etDownloads
) et vous n'avez pas fourni suffisamment d'informations pour permettre à la saisie semi-automatique de savoir laquelle vous voulez. Appuyez de nouveau surtab
pour afficher la liste des répertoires qui peuvent correspondre à ce que vous avez saisi. Ensuite, saisissez un peu plus (suffisamment pour qu'il n'y ait qu'une seule correspondance), puis appuyez de nouveau surtab
. - Vous avez déjà ajouté une faute de frappe dans la première moitié du mot.
Familiarisez-vous avec la touche de saisie semi-automatique plus rapidement. Plus vous aurez de chances de gérer des situations où vos commandes ne fonctionnent pas correctement.
Répertoires parents et enfants
Les répertoires et les fichiers peuvent avoir des relations enfant et parent. Si directory_b
se trouve dans directory_a
, directory_b
est désigné comme enfant de directory_a
. directory_a
est ensuite connu sous le nom de 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 représentées sur des forums accompagnés d'un diagramme textuel, comme suit:
directory_a/ directory_b/ my_file
Notez que les noms de répertoire se terminent par /
, mais pas les 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
S'il existe plusieurs fichiers ou dossiers au même niveau, ils sont appelés frères. Par exemple, si file_b
et file_c
se trouvent dans directory_a
, il s'agit de sœurs.
Ce diagramme textuel se présente comme suit:
directory_a/ file_b file_c
Notez que, comme file_b
et file_c sont frère et sœur, ils sont en retrait de même montant.
Chemins des fichiers
Voici un diagramme de texte plus complexe qui présente à la fois des relations parent-enfant et des relations 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: ~/north_america/united_states/new_york/new_york_city/
.
Pour passer au répertoire par new_york_city/,
, vous pouvez parcourir les étapes à l'aide de noms ou accéder à l'intégralité de la commande à l'aide du 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ésumé 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. - Changez de répertoire et confirmez votre nouvel emplacement.
- Réessayez et accédez à un autre dossier. Utilisez les nouvelles commandes pour afficher votre emplacement et les fichiers dans ce répertoire.
Créer des fichiers et des répertoires
Cadrage et objectif de section
En tant que développeur, nous allons devoir créer des fichiers avec du code. Pour organiser ces fichiers, nous devons créer des dossiers et des 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
Lors de la création de fichiers, ajoutez une extension de fichier pour spécifier le type. Exemples de types de fichiers:
.js
en tant que fichier JavaScript.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 inclure 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 incluant des espaces entre chacun d'entre eux.
# 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 annuaires
Pour créer un répertoire/dossier, utilisez la commande mkdir
, l'abréviation de "make directory'" 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 annuaires
Vous pouvez créer plusieurs dossiers à la fois en incluant des espaces entre chacun d'entre eux.
# 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. Pour cela, utilisez une seule commande.
- En utilisant ce que vous savez de la navigation dans les répertoires, et de la création de fichiers et de dossiers, créez un dossier "family_tree'" sur votre bureau à l'aide de fichiers et de dossiers.
Déménagement et copie
Déplacer des fichiers et des répertoires
Cadrage et objectif de section
Il est possible de déplacer un fichier ou un dossier à partir de la ligne de commande, mais nous devons toujours spécifier trois éléments:
- Nous utilisons la commande
mv
, qui est l'abréviation de move. - Suivez les instructions de migration portant le nom du fichier ou du dossier que vous souhaitez déplacer.
- Suivez le nom du fichier jusqu'à l'emplacement de destination.
Par exemple, si votre structure de fichiers est la suivante:
my_child_folder/ my_parent_folder/
Vous voyez qu'elle est organisée comme elle devrait l'être : ils sont frère et sœur, quand ils doivent être parents et enfants. 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 ressemblera à ceci.
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 : La commande mv
permet également 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 ignorez 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.
Copie de fichiers et de répertoires
Cadrage et objectif de section
Lors de la création de nos applications Web, nous pouvons souhaiter dupliquer un fichier (si nous créons deux pages Web similaires, nous ne voulons pas reprendre à partir de zéro) et la syntaxe de la commande cp
(copie) est très semblable à celle de mv
.
Copier un fichier
La commande "copy" se compose de trois parties:
- La commande
cp
: abréviation de copy - Nom du fichier à copier.
- Nom de la copie (si vous restez dans le même dossier), ou de l'emplacement et du nom (si vous déplacez dans 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/
De nombreux fichiers portant le même nom peuvent prêter à confusion. Par conséquent, n'utilisez cette méthode que si vous êtes certain d'avoir celle dont vous avez besoin.
Copier un répertoire
La copie d'un dossier ou d'un répertoire est un peu plus complexe, car vous souhaitez probablement copier non seulement le dossier, mais aussi tous les éléments qu'il contient.
- Commande
cp -R
: abréviation de copy recursive (copie récursive) : utilisez cette abréviation pour les dossiers vides et non vides. - Le nom de la source (dossier ou fichier à déplacer)
- Nom de la copie (si vous restez dans le même dossier), ou de l'emplacement et du nom (si vous déplacez dans un autre dossier).
Avertissement: Lorsque vous indiquez le nom de la copie, si le fichier ou le dossier n'a pas été créé précédemment, il est créé lorsque vous effectuez la copie. Si le fichier a été créé avant que vous exécutiez la commande de copie, ses données seront remplacées.
# 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 options commencent toujours par un tiret et sont utilisées avec des commandes pour donner des instructions plus précises sur l'exécution de cette commande.
Mini-défis
- Créez un fichier appelé
my_original.txt
. - Créez une copie de
my_original.txt
nommée dans un même dossier. - Créez un répertoire.
- Créez une copie de ce répertoire en lui attribuant un nom différent.
- Créez une copie de votre fichier copié à l'étape 2, mais placez-le dans le répertoire copié à partir de l'étape 4.
Supprimer des fichiers et des dossiers
Cadrage et objectif de section
Il est possible de supprimer des fichiers et des dossiers à partir de la ligne de commande, mais cette opération 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 vidé, nous pouvons utiliser la commande rmdir
- - pour supprimer le répertoire - suivi 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 qui n'est pas vide
Pour supprimer un dossier qui n'est pas vide, nous devons placer un indicateur -R
(abréviation de recursive) après la commande rm
, qui indique à l'ordinateur de supprimer le contenu à l'intérieur du dossier. En guise de raccourci, certains développeurs utilisent l'indicateur -Rf
qui supprime forcément tous les éléments. Sinon, vous pouvez recevoir des invites concernant la suppression de 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 semblable à la corbeille ni à la section supprimée de vos e-mails, car il est difficile de récupérer ces fichiers. Soyez TRÈS ATTENTION lorsque vous supprimez des fichiers de cette façon.
Mini-défis
- Créez quatre fichiers.
- Supprimez deux des fichiers.
- Créez un dossier.
- Créez un autre dossier et créez un fichier dans ce dossier.
- Supprimez les deux annuaires.
Le code de cet atelier se trouve dans le dossier suivant, dans le dépôt d'élèves que vous avez téléchargé depuis GitHub : command-line/labs/around-the-world
Expérience
Votre semestre à l'étranger approche et vous préparez votre voyage européen.
Après trois mois de vivre dans un avenir proche, vous souhaitez vous assurer de profiter pleinement de chaque week-end.
Heureusement, vous ne repartez pas de zéro et vos amis vous ont fourni certaines de leurs activités préférées de leur semestre. Malheureusement, certains fichiers ont été mélangés...
Ne vous inquiétez pas, la magie de la ligne de commande vous permet de les faire corriger en un rien de temps !
Tâche
Vérifiez que chaque ville se trouve dans le bon pays et que chaque dossier comporte les bons monuments. Attention : vous pourriez vous retrouver à Amsterdam pour rechercher la tour Eiffel !
Si vous avez l'impression de REALTER confiance en vous, masquez votre IUG et relevez ce défi directement depuis la ligne de commande. Vous devez rester dans le dossier général à travers le monde pendant que vous effectuez toutes ces opérations. Cela signifie que vous devez utiliser des chemins d'accès absolants pour faire référence à des dossiers et des fichiers.
Une fois que vous êtes au bon endroit, c'est à vous de jouer le contrôle de vos prochains mois. Réfléchissez à des villes, des pays et des monuments que vous devez consulter, puis ajoutez-les à votre arborescence de fichiers.
Félicitations ! Vous avez officiellement appris à parler ordinateur. Vous voulez aller plus loin ? Extensions de conversation...
Extensions
- Mixez à nouveau tous vos fichiers et créez une ville de votre choix. Réorganisez les fichiers tout en séjournant dans cette ville.
- Essayez l'un des jeux de ligne de commande amusants répertoriés ci-dessous
Terminus Game
Advanced Game (préparez-vous à Google) - Vous êtes fan de Star Wars ? Essayez d'exécuter
telnet towel.blinkenlights.nl
dans votre ligne de commande, puis d'appuyer sur Entrée. Notez que dans la version récente de macOS, la commandetelnet
n'est plus installée par défaut. Dans ce cas, la commandenc towel.blinkenlights.nl 23
peut être utilisée à la place.
Le code de cet atelier se trouve dans le dossier suivant, dans le dépôt d'élèves que vous avez téléchargé depuis GitHub: command-line/labs/bashing-away-repetition
Prêt à bloquer la répétition de votre utilisation quotidienne de la ligne de commande ? Super !
Expérience
Les programmeurs détestent les répétitions. En tant qu'informaticienne, notre travail consiste à faire notre travail le plus possible. L'écriture de scripts bash permet d'améliorer l'efficacité de l'utilisation de la ligne de commande.
Tout d'abord, qu'est-ce qu'un script bash ?
Excellente question. Heureusement, notre ami Ryan Chadwick, disponible sur cette page pour trouver des tutoriels sur la ligne de commande, peut répondre à votre question.
Un script Bash nous permet de définir une série d'actions que l'ordinateur pourra ensuite effectuer sans avoir à saisir les commandes nous-mêmes. Si une tâche spécifique est effectuée souvent ou est répété, un script peut être un outil utile.
Aucune répétition ? C'est ce que je parle.
Tutoriel
Tout d'abord, pour pouvoir exécuter votre script, vous devez autoriser votre ordinateur. Pour ce faire, exécutez la commande ci-dessous.
chmod 755 myScript.sh
Il est temps de rédiger votre premier programme. Accédez à votre fichier myScript.sh
(vérifiez que vous pouvez ouvrir le fichier à 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 ** devrait voir « Hello World »; imprimé dans votre terminal.
Tout ce que vous écrivez dans votre script bash s'exécutera comme si vous l'aviez saisi dans votre terminal. Examinons un autre exemple avant de passer aux extensions. Tout d'abord, créez un fichier pour votre script. Vous pouvez lui donner le nom de votre choix, mais il doit porter l'extension .sh
. Ensuite, veillez à autoriser votre script à s'exécuter en saisissant chmod 755
, puis en saisissant le nom de votre script dans votre terminal et en appuyant sur Entrée. Chaque fois que vous lancez un nouveau script bash, veillez à suivre ces deux étapes.
Défi d'introduction
À présent, écrivons un script qui crée un dossier. Quelle commande permet de créer un dossier ? Si vous réfléchissez à un mot commençant par m
et se terminant par kdir
, vous êtes sur la bonne voie. Écrivez la commande qui créera votre nouveau dossier et nommez-le quelque chose de cool dans votre nouveau fichier .sh
, puis exécutez-le dans votre terminal.
Si cela fonctionne, passez aux autres défis répertoriés ci-dessous. Si vous ne savez toujours pas comment faire, revenez dans l'atelier sur le monde et réfléchissez à la façon dont vous avez créé les dossiers "country" et "city".
N'hésitez pas à utiliser le tutoriel accessible via le lien ci-dessus. Préparez-vous à perfectionner vos compétences sur Google. Rédigez et exécutez des scripts pour les opérations suivantes:
Tâches principales
- Ajoutez au fichier que vous avez créé une commande permettant d'accéder au dossier que vous êtes en train de créer. (Quelle commande utilisons-nous pour modifier les répertoires ?)
- Datez le nouveau nom du dossier. Par exemple, votre programme doit créer un dossier nommé "
2017-12-07my_super_cool_folder
".
- Imprimez votre répertoire actuel : " suivi de votre répertoire de travail, "Voici une liste de tous les éléments de ce répertoire : », suivi du contenu de votre répertoire actuel.
- Déterminez comment saisir une entrée dans votre script bash et créez un fichier basé sur cette chaîne d'entrée. Vous trouverez des exemples dans la section des variables du tutoriel disponible plus tôt dans l'atelier.
- Demandez son nom à l'utilisateur, puis imprimez-le. Bonjour, ajoutez-le ici"
- Essayez de demander plus d'informations à votre utilisateur et de créer un message personnalisé pour lui.
CONTEXTE
La ligne de commande (ou terminal) permet d'interagir directement avec le système d'exploitation (OS) de l'ordinateur, comme le font les interfaces utilisateur graphiques (IUG), à l'exception des commandes textuelles, de la navigation à la création de fichiers, en passant par l'exécution de scripts. La ligne de commande sera utilisée pour ouvrir des fichiers et lancer l'environnement de développement lorsque vous utiliserez Google App Engine.
Ligne de commande en action
Accéder au terminal
Raccourci Mac:
- Ouvrez Projecteur et appuyez sur Commande+Espace.
- Saisissez Terminal dans Project Search.
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éménagement en cours de modification
Gardez à l'esprit que mv
est également la même commande que celle utilisée pour renommer les fichiers ou les dossiers.
# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt
Copie de fichiers et de dossiers
Copie de 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
Copie de 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 si vous ne pensez pas en avoir besoin. Vous vous améliorerez au fil du temps.
- La clé
tab
remplit automatiquement le nom du fichier ou du dossier (elle peut être sensible à la casse). - S'il ne reste qu'un seul fichier ou dossier correspondant, la saisie semi-automatique se fera automatiquement.
- Si plusieurs fichiers ou dossiers correspondent, appuyez deux fois sur la touche de tabulation pour afficher la liste des correspondances restantes.
- La flèche vers le haut / bas vous permet de naviguer dans l'historique de vos commandes pour ne pas avoir à les saisir à nouveau.
- Utilisez la commande
clear
pour effacer la fenêtre de terminal. Cela vous permet de conserver tout votre travail précédent. Faites défiler l'écran vers le haut pour l'afficher. - Utilisez
reset
pour redémarrer le terminal. Ce dernier ne sera pas affiché à l'écran, mais pourra résoudre plusieurs problèmes si le terminal se comporte 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 en utilisant
touch
, et créez des dossiers avecmkdir
. - Déplacez des fichiers et des dossiers avec
mv <item to move> <destination>
. - Copiez des fichiers et des dossiers à l'aide de
cp <item to copy> <destination>
. - Supprimer des fichiers et des dossiers avec
rm <item to remove>
.
Question 1
Quel outil utiliseriez-vous pour identifier votre répertoire de travail actuel ?
pwd
ls
cd
mkdir
touch
Question 2
Comment feriez-vous pour déplacer deux niveaux depuis votre répertoire de travail actuel ?
mv ~
cd ../..
mv up/up
cd ^(2)
Question 3
Quelle commande utiliser pour renommer un fichier ?
mv
cd
ls
python
rename
Question 4
Pourquoi la commande mv script.py
affiche-t-elle une erreur ?
- Le nom de fichier "
script.py
'" n'est pas valide. - Parce que la commande
mv
ne peut pas être suivie d'autres informations. - Cette astuce n'engendrera pas d'erreur.
- 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.
- À l'heure actuelle, déterminez la commande la plus utile à l'aide d'un algorithme.
- Générez une erreur.
Question 6
Pour quelle raison N'utilisez-vous pas la touche de saisie semi-automatique pour saisir les noms de fichiers ?
- Parce qu'elles vous font gagner du temps.
- Car cela permet d'éliminer les erreurs d'orthographe.
- En effet, ils nécessitent moins de puissance de traitement.
Question 7
Si un nouveau développeur tente de créer un fichier appelé"my script.py
", pourquoi la commande"touch my script.py
"ne fonctionnera-t-elle pas ?
- Parce que
touch
ne peut pas créer de fichiers. - Parce que
.py
n'est pas une extension de fichier valide. - Parce qu'il créera deux fichiers, le premier intitulé "
my
", et le second intitulé "script.py
". - Parce qu'il est impossible de créer des fichiers à partir de la ligne de commande.
Question 1
Quel outil utiliseriez-vous pour identifier votre répertoire de travail actuel ?
pwd
Question 2
Comment feriez-vous pour déplacer deux niveaux depuis votre répertoire de travail actuel ?
Avec cd ../..
, vous passez au niveau supérieur (chaque ..
représente un niveau au-dessus).
Question 3
Quelle commande utiliser pour renommer un fichier ?
mv
permet de déplacer un fichier d'un emplacement à un autre. Vous pouvez également l'utiliser pour modifier le nom du fichier.
Question 4
Pourquoi la commande mv script.py
affiche-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 ~
?
Dans ce cas, votre répertoire de travail sera remplacé par votre répertoire d'accueil. Le caractère spécial "~" permet d'identifier le répertoire d'accueil de l'utilisateur actuel. Il peut également être utilisé en association avec un autre nom d'utilisateur: ~user2 pour pointer vers son dossier d'accueil.
Question 6
Pour quelle raison N'utilisez-vous pas la touche de saisie semi-automatique pour saisir les noms de fichiers ?
En effet, cela nécessite moins de puissance de traitement, ce qui n'est pas correct. La fonctionnalité de traitement de tab
nécessite une quantité de puissance de traitement (nécessairement faible) pour analyser les dossiers à la recherche de la saisie semi-automatique, mais elle permet de gagner du temps et d'éviter les erreurs d'orthographe dans le processus.
Question 7
Si un nouveau développeur tente de créer un fichier appelé"my script.py
", pourquoi la commande"touch my script.py
"ne fonctionnera-t-elle pas ?
Deux fichiers sont créés au lieu d'un. La commande touch
crée des fichiers. Les espaces terminaux 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 du fichier doit être encadré par des guillemets:
touch "my script.py"
Question 1
Pour modifier des répertoires, utilisez la commande suivante:
move
mkdir
pwd
cd
Question 2
Quelle commande devez-vous exécuter si vous souhaitez 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ée 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 travailler sur les dossiers ?
-f
-r
-x
-d
Question 7
Pour déplacer projects
vers ~/Documents
et le renommer Projects
, quelle commande doit rester vide ?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
Question 8
À quoi sert la commande suivante ?
rm -r projects
- Supprimer un fichier appelé
projects
- Supprimer un dossier appelé
projects
- Renommer un fichier nommé
projects
- Rechercher le contenu de
projects
dans le répertoire actuel
Question 1
Pour modifier des répertoires, utilisez la commande suivante:
La commande terminal pour changer de répertoire est cd
. La commande elle-même est une abréviation de "&directory".
Question 2
Quelle commande devez-vous exécuter si vous souhaitez accéder au dossier parent de votre répertoire de travail actuel ?
La commande permettant d'accéder au dossier parent est la suivante : 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ée deux fichiers appelés index.html
et style.css
?
La commande touch index.html style.css
crée les deux fichiers. Aucune virgule n'est nécessaire et vous pouvez créer un nombre illimité de fichiers, séparés par une espace.
Question 5
Quelle commande utilisez-vous pour renommer un fichier ou un dossier ?
Bien qu'il soit utilisé pour signifier et déplacer des fichiers et des dossiers, mv
peut également servir à renommer des fichiers et des dossiers.
Question 6
Quelle option les commandes rm
et cp
doivent-elles utiliser pour travailler sur les dossiers ?
Les commandes rm
et cp
nécessitent l'indicateur -r
pour fonctionner sur les dossiers, car l'indicateur -r
signifie &rective" et réexécute la commande pour tous les fichiers et dossiers qu'ils contiennent.
Question 7
Pour déplacer projects
vers ~/Documents
et le renommer Projects
, quelle commande doit rester vide ?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
Étant donné que nous commençons dans le répertoire d'accueil, nous devons exécuter cd ~/Documents
pour obtenir la commande finale dans le bon répertoire.
Question 8
À quoi sert la commande suivante ?
rm -r projects
Cette commande supprime soit un fichier OU un dossier appelé projects
, car elle est appelée avec l'indicateur -r
ou récursif. Sans cet indicateur, la commande ne fonctionne que pour supprimer un fichier portant ce nom.