2 réponses
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
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