This is an old revision of the document!
Pour le laboratoire SdE, nous utiliserons Linux, la distribution Ubuntu. Il y a deux façons d'utiliser Linux:
Windows 10 peut exécuter un système Linux sans avoir besoin d'une installation séparée. Pour cela, suivez les étapes décrites dans Install du sous-système Windows pour Linux (WSL) sous Windows 10.
Pour installer Ubuntu, suivez les étapes du Install Ubuntu.
La forme de documentation la plus importante sous Linux, lorsque nous n’avons pas accès à Internet, sont les pages de manuel accessibles avec la commande man
.
Par exemple, pour afficher des informations sur la commande 'echo' (commande qui affiche un message sur la sortie standard), nous allons utiliser la commande:
student@sde: ~ $ man echo
Les pages de manuel sont souvent volumineuses et nous devons les parcourir rapidement. Pour ce faire, après avoir ouvert la page de commande manuelle, nous pouvons utiliser les combinaisons de touches ci-dessous pour naviguer vers la page:
Touche | Brève description |
---|---|
/string_to_search | / (c'est-à-dire la touche barre oblique ) est utilisé pour rechercher string_to_search dans la page de manuel |
n (next) | pour aller à la prochaine occurrence du mot recherché avec/ |
N (Shift + n) | aller à l'occurrence précédente du mot |
q (quitter) | fermer la page de manuel |
Entrée | faire défiler une ligne |
f | (en avant) ou Espace faire défiler un écran |
b | (en arrière) faire défiler un écran |
d | (en bas) faire défiler la moitié de l'écran |
u | (up) faire défiler la moitié de l'écran |
À travers les laboratoires, nous utiliserons Git pour télécharger les fichiers nécessaires au laboratoire.
Git est un système de gestion de contrôle de source utilisé pour coder le code dans les projets logiciels volumineux.
Pour ceux qui souhaitent approfondir les concepts de la commande 'git' et des utilisations avancées, nous recommandons le cours en ligne sur gitimmersion ou Tutoriel Git pour les débutants: notions de base de la ligne de commande.
Pour commencer, nous souhaitons intégrer les commandes de ligne de commande les plus importantes, en particulier celles qui fonctionnent avec des fichiers et des dossiers.
Nous avons également une liste de Commandes Linux que nous pouvons utiliser pour rappeler nos commandes les plus courantes.
Sur vos ordinateurs, ceux-ci seront différents, en fonction du nom d'utilisateur et de l'ordinateur.
Ouvrez un terminal. Clonez le contenu du dépôt SdE officiel à l'aide de la commande ci-dessous:
student@sde: ~ $ clone git https://github.com/upb-fils/sde
Nous prévoyons de travailler avec ces commandes qui nous aident à naviguer dans les répertoires du système de fichiers (c’est-à-dire à le traverser). Ensuite, utilisez les commandes pour répertorier le contenu d'un répertoire et afficher le contenu d'un fichier.
La distinction entre un chemin absolu (chemin d’un répertoire à partir du répertoire racine, exemple: /home/student
) et un chemin relatif vers le répertoire actuel (à l’aide d’entrées spéciales .
) et .
- répertoire parent).
Regardez attentivement la séquence de commandes ci-dessous. Si vous voulez donner vos ordres sur la station sur laquelle vous travaillez, utilisez la touche TAB aussi souvent que vous donnez un paramètre à ls
ou cd
.
student@sde ~$ cd sde/tp01 student@sde sde$ pwd /home/student/sde/tp01 student@sde sde$ tree . . ├── music │ ├── blake-shelton │ │ └── friends │ ├── carrie-underwood │ │ ├── church-bells │ │ ├── dirty-laundry │ │ └── home-sweet-home │ ├── miranda-lambert │ │ ├── dumb-blonde │ │ ├── vice │ │ └── we-should-be-friends │ └── thomas-rhett │ └── craving-you ├── simple-gcc │ ├── Makefile │ ├── errors.c │ ├── hello.c │ ├── help.c │ ├── simple_hello.c │ ├── utils.c │ ├── utils.h │ └── warnings.c └── tv-shows ├── brooklyn99 │ ├── amy │ ├── gina │ ├── jake │ ├── rosa │ └── terry └── young-sheldon ├── connie ├── george ├── georgie ├── marry ├── missy └── shelly 9 directories, 27 files
Maintenant, je vois la structure de répertoire, nous allons les parcourir:
student@sde sde$ cd music # ici j'ai utilisé un chemin par rapport au répertoire courant student@sde music$ ls blake-shelton carrie-underwood miranda-lambert thomas-rhett student@sde music$ cd .. # Je naviguais au directeur de la musique de répertoire parent /home/student/sde/tp01/sde student@sde sde$ ls -R music simple-gcc tv-shows ./music: blake-shelton carrie-underwood miranda-lambert thomas-rhett ./music/blake-shelton: friends ./music/carrie-underwood: church-bells dirty-laundry home-sweet-home ./music/miranda-lambert: dumb-blonde vice we-should-be-friends ./music/thomas-rhett: craving-you ./simple-gcc: Makefile hello.c simple_hello.c utils.h errors.c help.c utils.c warnings.c ./tv-shows: brooklyn99 young-sheldon ./tv-shows/brooklyn99: amy gina jake rosa terry ./tv-shows/young-sheldon: connie george georgie marry missy shelly student@sde sde$ cd /home/student/sde/tp01/tv-shows/brooklyn99 # # nous avons utilisé et TP01 cd/brookly99, mais j'ai utilisé chemin absolu student@sde brooklyn99$ ls amy gina jake rosa terry
Ls son argumentation afin que nous puissions donner un chemin relatif à un répertoire ou un fichier, et un chemin absolu:
student@sde brooklyn99$ ls ../young-sheldon connie george georgie marry missy shelly student@sde brooklyn99$ ls -l ../young-sheldon/connie -rw-r--r-- 1 student staff 0 Jan 28 01:06 connie student@sde brooklyn99$ ls -l ./amy -rw-r--r-- 1 student staff 0 Jan 28 01:05 amy student@sde brooklyn99$ ls -l amy -rw-r--r-- 1 student staff 0 Jan 28 01:05 amy student@sde brooklyn99$ ls -l /home/student/sde/tp01/tv-shows/brooklyn99/jake -rw-r--r-- 1 student staff 0 Jan 28 01:05 jake
<Note importante> Une grande attention aux chemins relatifs par rapport aux l'absolu. Un chemin relatif est un chemin relatif au répertoire courant, tandis qu'un chemin absolu est relatif au répertoire racine ( «/»). Un chemin relatif commence généralement avec un nom avec « » Ou « .. », alors qu'un chemin absolu commence toujours par «/». Notez que et « ~/OSU » est aussi un chemin absolu, même si elle commence par le caractère « ~ », c'est parce que « ~ » est juste un alias pour le répertoire « home » « l'utilisateur actuel ( '/ home/student' « ). </note>
Comme nous l'avons vu ci-dessus utilisent des exemples les chemins relatifs sont: <Type de note> Notez l'utilisation de la clé 'TAB' . </note>
student@sde music$ ls miranda-lambert # ls m<TAB> student@sde sde$ cd ./miranda-lambert # cd ./m<TAB> student@sde miranda_lambert$ ls ../thomas-rhett # ls ../t<TAB> student@sde miranda_lambert$ ls ../../tp01/music # ls ../../t<TAB>/m<TAB>
Quelques exemples d'utilisation des chemins absolus:
student@sde sde$ ls / student@sde sde$ tree /home/student/sde/tp01/music/miranda-lambert # ls /h<TAB>/stu<TAB>/sde/tp01/m<TAB>/m<TAB> student@sde sde$ ls -l ~/sde/tp01/music/miranda-lambert # ls ~/sde/tp01/m<TAB>/m<TAB> student@sde sde$ tree -L 1 ~
Voyons maintenant quelques erreurs qui peuvent survenir. Que pensez-vous qui se passe ci-dessous? Quelle est la cause de l'erreur, quelle erreur a été commise?
student@sde miranda-lambert$ ls -l lyrics ls: cannot access lyrics: No such file or directory student@sde miranda-lambert$ cd .. student@sde tp01$ cd kenny-chesney -bash: cd: kenny-chesney: Not a directory student@sde sde$ cd /home/student/sde/tp01/music/taylor-swift -bash: cd: /home/student/sde/tp01/music/taylor-swift: No such file or directory
cd
devrait être suivi d'un ls
ou d'un pwd
à des fins de vérification. Comme nous l'avons vu ci-dessus, des erreurs peuvent parfois se produire, que le répertoire n'existe pas ou que nous ne soyons pas autorisés à y accéder et que la commande puisse être exécutée sans succès. Il est donc très important que tout ordre de modifier/modifier le statut courant à suivre d'une vérification. Voici quelques exemples de commandes qui forment une bonne paire: cd
- pwd
; touch
, mv
, rm
- ls
; écho
- chat
etc.
Utilisez la touche TAB
chaque fois que vous le pouvez. Il suffit souvent de ne taper que les 2 ou 3 premières lettres du nom du dossier ou du fichier auquel nous voulons accéder. Si plusieurs répertoires/fichiers ont le même préfixe, nous pouvons ajouter d'autres lettres pour supprimer l'ambiguïté ou la touche “TAB” deux fois pour afficher la liste des occurrences contenant le même préfixe. Nous pouvons ensuite parcourir la liste des correspondances à l’aide de la touche “TAB”.
L'un des utilitaires de base est “tree”, qui permet de répertorier le contenu des dossiers dans un format d'arborescence, ce qui facilite le suivi et la compréhension de l'organisation du système de fichiers. Dans la plupart des cas, une simple commande ls
suffit, mais si vous voulez voir des niveaux inférieurs dans la hiérarchie des fichiers et des dossiers, 'tree' peut être très utile.
Utilisé sans arguments, tree
listera tous les fichiers et répertoires sous sub le répertoire courant (.
).
student@sde tp01$ tree . ├── music │ ├── blake-shelton │ │ └── friends │ ├── carrie-underwood │ │ ├── church-bells │ │ ├── dirty-laundry │ │ └── home-sweet-home │ ├── miranda-lambert │ │ ├── dumb-blonde │ │ ├── vice │ │ └── we-should-be-friends │ └── thomas-rhett │ └── craving-you ├── simple-gcc │ ├── errors.c │ ├── hello.c │ ├── help.c │ ├── Makefile │ ├── simple_hello.c │ ├── utils.c │ ├── utils.h │ └── warnings.c └── tv-shows ├── brooklyn99 │ ├── amy │ ├── gina │ ├── jake │ ├── rosa │ └── terry └── young-sheldon ├── connie ├── george ├── georgie ├── marry ├── missy └── shelly 9 directories, 27 files
tree
peut recevoir un ou plusieurs répertoires en argument et les lister indépendamment pour chacun.
student@sde tp01$ tree music tv-shows music ├── blake-shelton │ └── friends ├── carrie-underwood │ ├── church-bells │ ├── dirty-laundry │ └── home-sweet-home ├── miranda-lambert │ ├── dumb-blonde │ ├── vice │ └── we-should-be-friends └── thomas-rhett └── craving-you tv-shows ├── brooklyn99 │ ├── amy │ ├── gina │ ├── jake │ ├── rosa │ └── terry └── young-sheldon ├── connie ├── george ├── georgie ├── marry ├── missy └── shelly 6 directories, 19 files
Si nous voulons afficher un répertoire contenant de nombreux fichiers et sous-répertoires, nous pouvons limiter le niveau de liste en utilisant l'argument -L
.
student@uso tp01$ tree -L 1 . ├── music ├── simple-gcc └── tv-shows 3 directories, 0 files
student@sde brooklyn99$ tree amy amy [error opening dir] 0 directories, 0 files
Sous Linux, la documentation la plus utilisée est probablement les pages de manuel. Voyons quelles sont les commandes que nous utilisons pour documenter notre Linux et comment nous trouvons des informations utiles.
Rechercher une commande:
student@sde ~$ apropos "remove files" git-rm (1) - Remove files from the working tree and from the index rm (1) - remove files or directories student@sde ~$ apropos "copy files" cp (1) - copy files and directories cpio (1) - copy files to and from archives docker-container-cp (1) - Copy files/folders between a container and the loca... docker-cp (1) - Copy files/folders between a container and the local f... git-checkout-index (1) - Copy files from the index to the working tree install (1) - copy files and set attributes
Localiser une commande:
student@sde ~$ which ls /bin/ls
Emplacement binaire, la source, mais aussi les fichiers où la page de manuel est utilisée:
student@sde ~$ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
Maintenant que nous savons naviguer dans le système de fichiers, nous voulons créer des fichiers et des dossiers. Voyons avec quelles commandes nous pouvons créer, copier, déplacer et supprimer des fichiers et des dossiers.
Un nouveau fichier est généralement créé à l'aide d'un éditeur de texte tel que nano , vim ou de tout éditeur graphique. Vous pouvez également créer un fichier vide à l’aide de la commande touch .
student@sde ~$ touch filename student@sde ~$ ls -l ... -rw-r--r-- 1 alexandru staff 0 ian 28 12:02 filename ...
La création d'une direction s'effectue à l'aide de la commande mkdir .
student@sde ~$ mkdir dirname # facem un director nou student@sde ~$ ls -l # verificam daca fisierul exista ... drwxr-xr-x 2 alexandru alexandru 4096 ian 28 12:04 dirname ...
Vous copiez le fichier à l’aide de la commande cp .
student@sde miranda-lambert$ cp vice another-vice # vice comme another-vice
La copie d'un répertoire s'effectue également à l'aide de la commande cp , mais à l'aide de l'argument - r , - récursif ou - R
student@sde music$ cp -R miranda-lambert country-singer # nous copions le réalisateur de miranda-lambert sous le nom chanteur country
Le déplacement ou le changement de nom (à la fin est plus ou moins identique) est effectué à l'aide de la commande mv .
student@sde tp01$ mv music country-music # renommer le directeur musical en country-music student@sde tp01$ mv country-music ../../ # déplace le répertoire country-music deux répertoires ci-dessus
La suppression d'un fichier s'effectue à l'aide de la commande rm .
student@sde miranda-lambert$ rm dumb-blonde # supprimer le fichier dumb-blonde
Supprimez un répertoire avec la commande rmdir . Attention, seuls les répertoires vides peuvent être supprimés.
student@sde music $ rmdir blake-shelton # supprime le répertoire blake-shelton
La suppression d'un répertoire non vide s'effectue à l'aide de la commande rm en utilisant l'un des arguments - r , - R ou - récursif .
student@sde music $ rm -r blake-shelton # renommer le répertoire de musique en country-music
La ligne de commande contient des caractères spéciaux (tels que caractères génériques ) avec lesquels nous pouvons effectuer une action sur plusieurs fichiers. Voyons comment nous pouvons faire cela.
Répertorie le contenu de tous les fichiers avec l’extension * .conf
à partir de /etc
:
ls /etc/*.conf
Détermination de la distribution de Linux (en général, nous ne savons pas exactement comment le fichier est appelé, mais nous savons avec certitude qu'il contient le mot clé “release”)
cat /etc/*release*
Pour compiler des programmes en C, vous avez besoin de paquets contenant un compilateur, des bibliothèques et des pages de manuel. Sur certains systèmes, ces packages peuvent être manquants:
build-essential
manpages-dev
S'ils ne sont pas installés par défaut sur votre système, vous pouvez utiliser
student@sde:~$ sudo apt-get install build-essential manpages-dev
Dans ce qui suit, nous considérerons le verbe compiler pour obtenir un ou plusieurs fichiers source en un fichier exécutable.
Nous allons dans le répertoire /home/student/sde/tp01/simple-gcc
où nous trouvons le fichier simple_hello.c
.
student@sde$ pwd /home/student/ student@sde$ cd sde/tp01/simple-gcc student@sde$ ls Makefile hello.c simple_hello.c utils.h errors.c help.c utils.c warnings.c student@sde$ gcc simple_hello.c student@sde$ ls Makefile errors.c help.c utils.c warnings.c a.out hello.c simple_hello.c utils.h student@sde$ ./a.out Hello world!
Auparavant, j'avais utilisé la commande gcc
à laquelle je lui avais donné un seul paramètre d'entrée. Il a généré un binaire nommé “a.out” . Ci-dessous, nous pouvons voir comment nous obtenons un nom custom pour le binaire résultant de la compilation du fichier simple_hello.c
.
student@sde$ ls Makefile errors.c help.c utils.c warnings.c a.out hello.c simple_hello.c utils.h student@sde$ gcc simple_hello.c -o hello student@sde$ ls Makefile errors.c hello.c simple_hello.c utils.h a.out hello help.c utils.c warnings.c student@sde$ ./hello Hello world! student@midgard$ pwd /home/student/sde/tp01/simple-gcc/
Notez que nous utilisions auparavant un chemin relatif vers le répertoire en cours pour exécuter le fichier 'hello' avec ./hello
. Nous pourrions aussi utiliser un chemin absolu: /home/student/sde/tp01/simple-gcc/hello
pour l'exécution.
.
(point, point ) signifie répertoire courant .
Pour voir quel type de fichier binaire/exécutable est 'bonjour', nous pouvons utiliser la commande fichier
:
student@sde $ file ./hello bonjour: ELF exécutable LSB 64 bits, x86-64, version 1 (SYSV), lié dynamiquement (pour les bibliothèques partagées), pour GNU/Linux 2.6.32, BuildID [sha1] = 0x92a8cd0efe5b5dd5587b5965d8bc6fa27fac32af, non supprimé
La commande gcc simple_hello.c
a été utilisée pour compiler le fichier source simple_hello.c
. Le résultat était le fichier exécutable 'a.out' '(nom par défaut utilisé par' 'gcc' '). Si vous voulez obtenir un exécutable avec un autre nom, vous pouvez utiliser l'option -o
.
De même, “g ++” est utilisé pour compiler un programme source C ++.
Pour compiler des programmes C et C ++, nous utilisons le compilateur “gcc” ou “g ++” en ligne de commande. Un appel typique consiste à compiler un programme à partir d'un seul fichier source, dans notre cas simple_hello.c
.
Nous partons du programme simple du fichier simple_hello.c
qui se trouve dans le répertoire /uso/lab03/simple-gcc
qui affiche une chaîne de caractères sur la sortie standard:
#include <stdio.h> int main(void) { printf("Hello world!\n"); return 0; }
Le format général d’une commande de compilation avec gcc
:
gcc fisiere.c -o nume_executabil COMPILING_FLAGS LINK_BIBLIOTECI
COMPILING_FLAGS
sont des options de gcc (comme -g
, -w
, -Wall
)LINK_BIBLIOTECI
contient des options comme -lm
ou -L
.
-o
, le nom du fichier de sortie doit être trouvé. Il écrase les fichiers qu'il reçoit sous forme d'argument.
La commande peut être aussi bien structurée que:
gcc COMPILING_FLAGS -o nume_executabil fisiere.c LINK_BIBLIOTECI
-o
, nous ne mettons pas de fichiers sources ni d'autres fichiers. Si nous faisons cela, les fichiers seront écrasés et nous perdrons leur contenu.
Exemples spécifiques:
Allez à ~/sde/tp01/simple-gcc
gcc simple_hello.c -o simple_hello
gcc -Wall simple_hello.c -o simple_hello
gcc -Wall simple_hello.c -o math_hello -lm
gcc -Wall hello.c utils.c help.c -o hello
Les pages d’aide de GCC (man gcc
, info gcc
) fournissent une liste de toutes les options possibles de GCC.
student@sde: ~ $ pwd
La signification est 'print working directory' '
Vérifiez que vous vous trouvez dans le répertoire de base de votre utilisateur (par exemple, l'utilisateur était un “student”, c'est-à-dire le répertoire ”/ home/student”). Recherchez l’invite (contenant le caractère pour le répertoire de base) ou utilisez la commande
pwd
:
student@sde:~$ pwd /home/student
Maintenant que vous savez que vous vous trouvez dans le répertoire de base de votre utilisateur, clonez le contenu https://github.com/upb-fils/sde.org official SdE
git clone
nous en parle (voir la première ligne du résultat):
Cloning into 'sde'... remote: Counting objects: 54, done. remote: Compressing objects: 100% (12/12), done. remote: Total 54 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (54/54), done.
Le répertoire 'sde' a été créé relatif (en utilisant un chemin relatif) par rapport au répertoire actuel (qui dans notre cas était /home/student
, il est légèrement différent pour vous, car le nom d'utilisateur est différent).
Suite à la commande ci-dessus, le répertoire 'sde' est apparu dans le répertoire de base de votre utilisateur.
student@sde:~$ ls ... sde ...
Utilisez la commande cd
et changez le répertoire en sous-répertoire sde/tp01
. Dans le sous-répertoire sde/tm01
, vous trouverez la structure de répertoires et les fichiers nécessaires à la résolution du laboratoire.
Renommez le répertoire cloné /home/student/sde
en ligne de commande '/ home/student/sde-repository' '.
Rappelez-vous de la section exemple ou Commandes_linux avec quel ordre nous pouvons renommer des fichiers ou des dossiers.
sde-repository
dans le répertoire /home/student
. Assurez-vous que vous êtes dans le bon répertoire, faites attention aux chemins relatifs et absolus. Lorsque la demande indique vous êtes dans le répertoire X , utilisez la commande cd X
pour entrer dans ce répertoire. X sera généralement un chemin absolu
/home/student
.sde-repository/tp01
, cloné pour l'exercice précédent.ls
: student@sde: ~/tp01 $ ls -R
ls -R
n'est pas très facile à suivre pour les répertoires contenant beaucoup d'entrées. Pour voir la structure arborescente plus conviviale, nous pouvons utiliser arbre
.<type de note> Il est possible que l’arbre n’existe pas dans le système. Le résultat de la commande sera alors:
student@sde:~/sde-repository $ tree bash: tree: command not found...
Dans ce cas, nous devons l’installer:
student@sde:~$ sudo apt-get install tree
</note>
Nous voulons connaître la taille des fichiers. Vous êtes dans /home/student
. Allez dans le répertoire sde-repository/tp01
Répertorier les répertoires détaillés
student@sde:~$ ls -l
Selon vous, quelle colonne fournit des informations dimensionnelles? La sortie de la commande fournit la taille en octets et est plus difficile à lire.
Utilisez un extra-argument de la commande ls
pour avoir les dimensions 'lisibles par l'homme'. Rechercher dans la page de commande ls
student@sde:~$ man ls
par le mot clé humain
. Utilisez l'argument trouvé en conjonction avec -l
.
Le répertoire sde-repository/tp01/year_1/programming/themes
contient beaucoup de fichiers volumineux, il est impossible d'avoir seulement la taille de 4K
. Pour déterminer la taille du dossier, nous devons utiliser une autre commande, “du” (à partir de l'utilisation du disque).
Voici un exemple:
student@sde:~$ du sde-repository/tp01/anul_1/programare/teme
Exercice : Déterminez seulement la taille du répertoire sde-repository/tp01/year_1/programming/themes
(pas les sous-répertoires) dans un format lisible par l'homme. Recherchez dans
student@sde: ~ $ man du
après le mot-clé summary
et identifiez l'option de commande du
qui affiche la taille du répertoire sous forme résumée.
Vous êtes dans le répertoire /home/student/uso-repository
.
Supprimez le fichier crap.txt
du répertoire 'lab02/anul_1/uso'.
Notez que j'ai utilisé un chemin relatif vers le répertoire /home/student
. Nous aurions pu l'utiliser
rm -f /home/student/uso-repository/lab02/anul_1/uso/crap.txt
Essayez de supprimer le répertoire to_delete
de uso
. Pourquoi ne pouvons-nous pas utiliser la commande ci-dessous, même si elle contient le chemin absolu correct?
rm -f/home/student/uso-repository/lab02/year_1/uso/to_delete
Regardez dans la page de manuel de rm
('man rm' ') après' récursif '.
Entrez le répertoire lab02/anul_1/uso
. Essayez de supprimer le répertoire empty_dir
. Utilisez la commande
rmdir empty_dir
Pourquoi ne pouvons-nous pas supprimer “empty_dir” par cette méthode? Allez dans le dossier empty_dir
et vérifiez s'il contient des fichiers (il peut contenir des fichiers cachés!). Supprimez-en les fichiers, revenez dans le répertoire parent et vérifiez si la commande rmdir empty_dir
fonctionne.
<type de note> Pour supprimer un répertoire vide, nous pouvons utiliser l'une des commandes suivantes:
student@uso: $ cd uso-repository student@uso: $ rm -rf lab02/year_1/uso/empty_dir student@uso: $ rmdir lab02/year_1/uso/empty_dir
rmdir
ne peut supprimer que des répertoires vides.
Vérifiez l'exécution réussie de la commande de suppression à l'aide d'une liste, par exemple ls
.
</note>
Entrez le répertoire uso-repository/lab02/year_1/uso/filesys
Utilisez la commande suivante:
mkdir Program Files and Accessories
Répertorie le contenu du répertoire 'filesys'. Combien de répertoires qu'il contient. Pourquoi Était-ce l'effet désiré? Afin de créer un répertoire avec des espaces dans son nom, nous avons deux alternatives:
student@uso:$ mkdir "Program Files and Accessories" student@uso:$ mkdir Program\ Files\ and\ Accessories
<type de note> Ne tapez plus la commande, utilisez la touche SAGEATA_SUS pour revenir à la commande précédente, tapez "
, Ctrl+A
pour aller au début de la ligne, Alt+F
pour avancer un mot et enfin taper ”
à nouveau.
</note>
Assurez-vous que cette fois le répertoire créé porte le nom souhaité en utilisant la commande ls
.
Sans entrer dans le répertoire créé, "Program Files and Accessories"
, créez 3 fichiers portant le nom "Open Office"
, "Mozilla Firefox"
și "Incredible long file name that contains a lot of spaces"
et deux repertoires "App Data"
și "Local Settings"
în "Program Files and Accessories"
. Essayez également d'utiliser le bouton TAB
autant que possible.
Copiez les deux premiers fichiers créés précédemment dans le répertoire ../../programare/
( attention est un chemin relatif du répertoire uso-repository/lab02/year_1/uso/filesys
).
Ecrivez un texte aléatoire dans "Nom de fichier long et incroyable contenant de nombreux espaces" à l'aide de la commande “echo” ou “vim”.
student@uso:$ echo "un text" > Inc<TAB> # vous utilisez la touche TAB, vous ne tapez pas tout le nom du fichier
Renommez le fichier '' Nom de fichier long incroyable contenant beaucoup d'espaces "” dans '' Nom de fichier long incroyable contenant moins d'espaces "”. Appuyez sur la touche TAB
. Essayez d'utiliser le moins de clés possible.
<type de note> Une solution rapide peut être la suivante. “Alt +.” Est un moyen d'itérer avec les derniers paramètres des commandes plus tôt). Nous tapons ensuite 'Alt + b' pour revenir en arrière puis, en utilisant Alt + Backspace, nous supprimons les 3 mots dont nous n’avons plus besoin. Enfin, le texte "moins \" est uniquement ajouté. </note>
Copiez l'intégralité du répertoire 'filesys' dans /home/student
. Pourquoi la commande ci-dessous ne fonctionne-t-elle pas?
student@uso:$ pwd /home/student/uso-repository/lab02/anul_1/uso/filesys student@uso:$ cp . /home/student
Nous avons besoin de récursif
(comme rm
). Regardez dans la page de manuel de cp
('man cp' ') après' récursif '.
Entrez le dossier parent de filesys
. Déplacez to_move
vers /tmp
. Notez que pour mv
, nous n'avons pas besoin du paramètre -r
(pour la récursivité).
Vérifiez que votre commande est exécutée avec succès à l’aide d’une commande ls
.
Accédez au répertoire /home/student/uso-repository/lab02/year_1
. Profitez au maximum de la touche “TAB” pour vous rendre ici.
student@uso:~$ cd /home/st<TAB>/uso<TAB>/lab02/a<TAB>_1
Utilisez la commande 'tree' pour examiner la structure du répertoire et les fichiers du répertoire actuel. Ensuite, allez dans le répertoire 'programming/themes' en utilisant un chemin relatif:
student@uso:~$ cd programare/teme
Vérifiez que vous vous trouvez dans le répertoire souhaité à l’aide de la commande pwd
.
Sans changer le répertoire actuel, donc sans utiliser la commande cd
, vous créez un fichier nommé TODO
dans les dossiers 'uso' 'ou' 'programmation' 'du répertoire' 'year_1' '. Utilisez des chemins relatifs. Par exemple, pour le répertoire de programmation, nous pouvons faire ce qui suit:
student@uso: $ touch ../TODO
Faites la même chose pour le répertoire uso.
Allez maintenant dans le répertoire 'uso' en utilisant un chemin absolu (doit commencer par /
ou ~
). Éditez le fichier TODO
créé précédemment à l'aide de l'éditeur vim
pour qu'il contienne enfin le texte 'Je vais obtenir la 10e année à l'USO' .
Vérifiez que le fichier contient le texte souhaité à l'aide de la commande cat
qui affiche le contenu du fichier à l'écran.
Copiez le fichier TODO
du répertoire 'uso' dans celui du répertoire programmation
. Essayez d'utiliser aussi peu de clés et que des manières relatives.
Pour résoudre la prochaine série d'exercices, allez dans le répertoire /home/student/sde/tp01/simple-gcc
. Pour cela
nous utilisons la commande suivante: cd ~/sde/tp01/simple-gcc
. Dans le répertoire simple-gcc
, recherchez le fichier source simple_hello.c
. Compilez-le avec gcc
dans un fichier exécutable appelé hello
. Pour cela, nous utilisons la commande suivante:
student@sde $ gcc simple_hello.c -o hello
Exécutez l'exécutable fraîchement exécuté.
student@sde$ ./hello Hello, World
Répétez le processus ci-dessus, mais cette fois, vous obtenez un exécutable avec le nom saluer
. Maintenant, nous le courons et nous remarquons que nous obtenons exactement la même chose que ci-dessus. Les deux fichiers semblent identiques, mais pour nous assurer que nous utilisons la commande cmp
.
cmp
à l'aide de la commande:
man cmp
Si rien ne s'affiche après avoir exécuté la commande cmp
avec les paramètres appropriés, cela signifie que les deux fichiers sont identiques.
Nous notons que les deux fichiers sont vraiment identiques, du fait que le processus de compilation est déterministe (un morceau de code source C sera toujours traduit exactement par les mêmes instructions en langage assembleur, puis en langage assembleur). code machine - si le même degré d'optimisation est maintenu).
Dans le même répertoire que ci-dessus, /home/student/sde/tp01/simple-gcc
, nous trouvons le fichier 'warnings.c'. Compilez-le en utilisant la commande suivante:
student@sde $ gcc warnings.c -o warnings student@sde $ ./warnings a + b = 5
Nous remarquons que le fichier a été compilé et exécuté avec succès. Répétez la commande ci-dessus, mais utilisez l'indicateur ”-Wall” pour cette commande “gcc” comme ci-dessous:
student@sde$ gcc -Wall warnings.c -o warnings warnings.c: In function ‘main’: warnings.c:8: warning: unused variable ‘c’
Nous voyons cependant qu'un problème avec le fichier 'warnings.c' a été identifié cette fois, à savoir que la variable c
a été déclarée, initialisée mais non utilisée. Cela n’affecte pas le comportement de notre programme, mais en général il est bon de les éviter autant que possible.
Inspectez le fichier source 'warnings.c' et corrigez l'avertissement. Exécutez la commande gcc -Wall warnings.c -o warnings
jusqu'à ce que vous receviez les avertissements à compiler.