Le devoir est individuel. Toute tentative de copier entraînera 0p pour les devoirs. On utilisera un système automatisé pour détecter le copiage. Si on a des doutes, on va vous adresser des questions supplémentaires concernant le devoir.
Si vous avez des questions concernant le devoir, posez-les en publiant un issue sur le github https://github.com/UPB-FILS-SdE2/questions avec le format [busybox] <le titre de votre question>
Si vous voulez recevoir un e-mail lorsque des problèmes sont signalés ou lorsqu'il y a de nouveaux messages, accédez au site github repository et cliquez sur Watch.
Pour résoudre le devoir, vous allez réaliser un script de Python qui reçoit comme arguments la commande qu'on désire d'exécuter. L'exécutable va afficher un prompt qui a la forme cmd:
, qui va recevra une commande suivie des paramètres. Appuyez sur la touche ENTER pour marquer la fin de la commande. Après chaque commande, le program va afficher le résultat, si c'est le cas, après quoi il attendra une autre commande. Le programme terminera son exécution en recevant la commande exit
ou quit
.
Exemple:
cmd: ls test.py my_file my_file2 cmd: echo test test cmd: exit
En ce qui suit, on va définir les commandes supportées par l'utilitaire, ainsi que le comportement caractéristique et les paramètres acceptés. Pour toute autre commande ou pour un format différent, le script va afficher le message Invalid command
Si la commande reçue par l'utilitaire a été exécutée avec succès, il affichera les informations mentionnées dans la description, si c'est le cas. Sinon, un message d'erreur spécifique, mentionné dans la description de la commande, sera affiché. Sauf indication contraire, le message affiché à l'écran sera suivi de NEWLINE et l'invite sera affichée sur la ligne suivante.
Les commandes supportées par l'application mini-busybox sont:
Ensuite, on va definir les commandes prises en charge par l'utilitaire, ainsi que le comportement caractéristique et les paramètres qu'elles prennent en charge. Pour autre commande ou format, le script affichera le message Invalid command.
Si la commande reçue par l'utilitaire a été exécutée avec succès, il affichera les informations mentionnées dans la description, si c'est le cas. Sinon, un message d'erreur spécifique sera affiché, mentionné dans la description de la commande. Sauf indication contraire, le message affiché à l'écran sera suivi de NEWLINE et le prompt sera affichée sur la ligne suivante.
Les ommandes supportées sont:
x
et colonne y
. En fonction de paramètres reçus, la commande va réaliser les suivantes actions: interval
millisecondes de count
fois. La valeur pour count
va avoir une valeur entre l'intervalle 0-20.set
, il va afficher la luminosité de la LED spécifiéeval
, ou val
est un numéro entier 0-9, et la valeur afficher dans la console est la nouvelle luminositéLa commande va afficher les suivantes erreurs pour les suivantes cas:
count
n'est pas comprise entre 0 et 20.val
est en dehors de l'intervalle 0-9.cmd: led on 2 3 cmd: led off 2 3 cmd: led blink 500 30 2 3 Invalid count value. cmd: led toggle 2 3 cmd: led brightness set 4 2 4 4 cmd: led brightness 2 4 4
button
peut prendre la valeur A
ou B
, représentant l'un des deux boutons du dispositif. La commande affiche le texte True si le bouton spécifié est pressé et le texte False si le bouton n'est pas pressé.La commande affichera les erreurs suivantes dans les cas suivants:
button
est different de 'a' ou 'b'cmd: button a True cmd: button b False
cmd: light
100
<deg>
qui peu etre C/F/K
la température prise par le capteur de température en degrés Celsius, Fahrenheit ou Kelvin sera affichée.
cmd: temperature c 20 cmd: temperature f 68
fichier
, et rien ne sera pas affiché sur l'écran. Si le fichier n'existe pas, il sera créé. Si le fichier existe, son contenu sera overwritten.Cannot append redirectn.
Si le fichier existe, son contenu sera ajouté à ce qui existe déjà dans le fichier.cmd: echo a b c a b c cmd: echo -n a b c a b ccmd: echo my awesome text > my_awesome_file
Cannot print file.
cmd: cat file1 Text in file1 cmd: cat file2 Text in file 2 cmd: cat file1 file2 Text in file1 Text in file 2 cmd: cat f Cannot print file.
Cannot move file.
cmd: mv my_file my_file2 cmd: mv f f2 Cannot move file.
Cannot remove file. File not empty.
En cas d'une autre erreur de suppression sauf Fichier non vide, le message sera affiché: Cannot remove file.
cmd: rm my_file1 my_file2 cmd: rm my_file Cannot remove file. File not empty. cmd: rm -R my_file
taille nom
cmd: ls File1 file2 cmd: ls -a File1 File2 .hidden cmd: ls -l -a 128 f1 0 f2 20 .f3
Cannot copy file
cmd: cp my_file my_file2
cmd
dans la variable var
. La valeur de la variable sera prise en utilisant la construction $var
, où var est le nom de la variable.cmd: set led_x 2 cmd: set led_y 3 cmd: led on $led_x $led_y
Invalid command
.
Exemple
cmd: led 2 3 Invalid command. cmd: bright Invalid command.
Le devoir sera téléchargé sur Github. Connectez-vous au site et accédez au lien correspondent au devoir.
Les tests manuels seront effectués en exécutant les commandes suivantes:
$ git clone <your_repository> $ python3 main.py < input_test.in
Les fichiers d'entrée pour les tests manuels sont disponibles sur github.
Chaque fichier contient le score du test sur la première ligne.