Aide gameshell

LezardArdent52 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

Je suis en train d'apprendre les commandes avec gameshell, mais je n'arrive vraiment pas à faire ce niveau. Pouvez-vous m'expliquer, s'il vous plaît ?

2 réponses

uniuc Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   32
 

Bonjour il est drôle ce jeu.

Ok donc ~ représente le répertoire qui est le tiens quand tu te connecte sur ton terminal celui ou tu à par exemple ton .bashrc mais tu ne le vois pas.

Ca te dit de mettre les pièces dans ta hutte, ma question ou se trouve hutte dans arborescence des fichier et ou se trouve le dossier qui contiens piece ?

Tu peut tester cette commande pour voir ou se trouve hutte, vu que c'est un jeu pas dit que ca fonctionne.

find -name hutte

0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 

Bonjour,

Merci de copier coller le contenu de ton terminal et de le partager avec un extrait de code (9ème bouton au dessus de la boîte dans laquelle tu écris ton message) plutôt que de partager une photo, peu pratique pour tout le monde.

Pour répondre exactement à ton problème, il faudrait connaître comme l'indique iniuc le répertoire dans lequel sont les pièces et celui dans lequel tu veux les déplacer. La commande find peut effectivement t'y aider.

À défaut de pouvoir répondre exactement à la question, je te donne ci-dessous des éléments qui devraient suffire à maîtriser les chemins en bash de manière générale.

Quelques rappels préalables

Les chemins

Sous Linux, les chemins sont une séquence de dossier séparés par des /. Tous les dossiers sont organisés dans une même hiérarchie (pas de notion de lecteur comme sous Windows) appelée VFS (Virtual FileSystem). L'idée est que peut importe la provenance d'un fichier (partage réseau, disque local, qu'il s'agisse d'un disque dur, optique, ou autre), tout est organisé dans cette même arborescence.

La racine de cette arborescence est notée /. Cet opérateur sert aussi de séparateur entre les noms de dossiers impliqués dans un même chemin. À cela s'ajoute d'autres opérateurs

Opérateurs ~, ~login

  • L'opérateur ~toto désigne le home directory (dossier personnel) de l'utilisateur toto (typiquement /home/toto pour un utilisateur local à la machine). Exception notable : ~root n'est pas /home/root, mais /root. Il est spécifié dans /etc/passwd.
  • L'opérateur ~ est un raccourci de ~toto si tu es loggué en toto. La signification de ~ dépend donc de quel est l'utilisateur courant. Tu peux aussi récupérer le chemin de ce dossier avec la commande :
    echo $HOME
    La plupart du temps il est indiqué dans l'invite de commande (par exemple toto si ton invite de commande est toto@machine:~$) mais tu peux aussi le récupérer avec l'une de ces commandes : 
    whoami
    echo $USER

Ces quelques commandes montrent qu'en shell, des variables d'environnement (ici USER, HOME) sont maintenues et peuvent être réutiliser dans des commandes. Ainsi, si ton dossier personnel est /home/toto, ces commandes sont équivalentes :

ls /home/toto
ls $HOME
ls ~toto

Si tu es loggué en toto, on peut ajouter à cette liste :

ls /home/$USER
ls ~
ls /home/`whoami`   # Avec n'importe quel shell
ls /home/$(whoami)  # Avec un shell bash

Chemins absolus et relatifs

Tous les chemins évoqués jusqu'à présent sont absolus, car une fois "résolus" ils commencent par /. Ils ne dépendant pas du dossier courant dans lequel le shell est positionné

Tout autre chemin est dit relatif et dépend du dossier courant dans lequel est positionné ton shell. Pour rappel, le dossier courant peut s'afficher avec :

echo $PWD
pwd  # Comme "Print Working Directory, voir: man pwd"

Opérateurs . et ..

Le dossier courant est noté ".". Le dossier parent est noté "..".

Donc par exemple, si ton dossier courant est /home, toutes ces commandes désignent /home/toto :

ls toto
ls ./toto
ls ../home/toto

Ces deux opérateurs peuvent aussi être impliqué au milieu d'un chemin. Dans ce cas, leur sens est relatif conformément à ce qui leur précède. Par exemple ../.. désigne parent du parent, donc le dossier grand parent.

Ainsi le chemin ci-dessous, aussi tordu soit-il, désigne bien /home/toto :

ls /home/toto/../../home/./toto

Alternatives ({,}) et wildcards (*)

Il est souvent pratique de désigner plusieurs fichiers d'un coup plutôt que les énumérer. C'est là que ces opérateurs entrent en jeu.

Par exemple si tu veux déplacer /home/toto/piece1.txt/home/toto/piece22.txt et /home/toto/piece333.txt dans /tmp tu peux écrire :

mv /home/toto/piece1.txt /home/toto/piece22.txt /home/toto/piece333.txt.txt /tmp
mv ~toto/piece1.txt ~toto/piece22.txt ~toto/piece333.txt.txt /tmp
mv ~/piece1.txt ~/piece22.txt ~/piece333.txt.txt /tmp  # Si tu es loggué en toto

mv /home/toto/piece_{1,22,333}.txt /tmp
mv ~toto/piece_{1,22,333}.txt /tmp
mv ~/piece_{1,22,333}.txt /tmp  # Si tu es loggué en toto

# S'il n'y a que ces trois pieces
mv /home/toto/piece*.txt /tmp
mv ~toto/piece*.txt /tmp
mv ~/piece*.txt /tmp  # Si tu es loggué en toto

# S'il n'y a pas d'autres fichiers qui commence piece
mv /home/toto/piece* /tmp
mv ~toto/piece* /tmp
mv ~/piece /tmp  # Si tu es loggué en toto

Attention pour l'opérateur { ... } à ne pas mettre d'espace.

Auto-complétion

Pour ne pas se tromper dans les chemins sous Linux (et gagner beaucoup de temps), la touche tab (auto complétion) est notre meilleure amie.

En effet, si tu tapes le début d'une commande ou d'un chemin, la touche tabulation (tab) permet de la compléter aussi loin que possible tant qu'il n'y a pas d'ambiguïté. Par exemple, si tu tapes /home/to (puis tab), cela se completera en /home/toto.

En cas d'ambiguïté, si tu appuies une seconde fois sur tab, tu verras les candidats entre lesquels le shell hésite. Ajoute quelques caractères pour "débloquer" la situation.

Pages de manuel (man)

Sous Linux, toutes les commandes shell (même man) sont documentées et correspondent à la section 2. Donc par exemple pour voir ce que fait la commande ls et quelles sont ses options, tu peux lancer au choix :

man ls
man 2 ls

(q pour quitter). Note que préciser la section de shell importe si un mot apparaît dans différentes section de man. Par exemple :

man 2 passwd  # Documente la commande 'passwd'
man 5 passwd  # Documente le fichier '/etc/passwd'

Bonne chance

0