CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[BASH] incompréhensions sur commande cd

zar6
zar6
Niveau 10
30 septembre 2014 à 11:25:49

Bonjour,

Etant en informatique, je suis souvent mené a utiliser le terminal (bash chez moi). J'ai fait, avec github, un dépot pour synchoniser mon travail sur mon mac avec celui sur les PC de la fac. Je suis donc très souvent mené a accéder au chemin suivant : "~/Desktop/fac/2014-2015 semestre 5".

Voulant éviter de taper tout le temps cette longue commande, j'ai créé un alias dans ~/.bashrc (sous mon mac, mais j'ai aucune réponse dans le forum mac et je pense que les "pro lunix" sont plutot spécialistes en terme de terminal, c'est pourquoi je poste ici). Voici l'alias :
alias fac='cd "~/Desktop/fac/2014-2015 semestre 5/TP-fac" '
J'ai bien validé l'alias, mais lorsque je tape "fac" dans mon terminal, bash me répond "-bash: cd: ~/Desktop/fac/2014-2015 semestre 5/TP-fac: No such file or directory"

J'ai donc fait des tests :
- si je me situe dans ~ et que je fais 'cd ~/Desktop/fac' suivi de 'cd "./2014-2015 semestre 5/TP-fac" ' tout se passe comme sur des roulettes, je suis déplacé dans le bon répertoire. si je fais maintenant 'cd "~/Desktop/fac/2014-2015 semestre 5/TP-fac" ', ça me répond '-bash: cd: ~/Desktop/fac/2014-2015 semestre 5/TP-fac: No such file or directory'

Je comprend pas... Un coup ça marche l'autre non... Je pensais faire une mauvaise utilisation des guillemets doubles, mais ça marche bien quand je démarre a partir de . plutot que de ~~

Une idée de l'origine du problème ?

PS : je sais que je peux surement régler le problème en supprimant les espaces dans mon nom de dossiers, mais il est important pour moi de bien savoir maitriser le problème : je ne ferais que contourner le problème et j'y serais de nouveau confronté plus tard sinon.

Merci d'avance pour vos réponses.

vava740
vava740
Niveau 10
30 septembre 2014 à 11:31:23

Quand tu mets "~" (dans des quotes) ton shell va l'interpréter litéralement, donc dans ton cas ça va chercher un dossier "~/Desktop/..." (un dossier qui s'appelle littéralement "~", et pas ton home) dans le dossier courant.

Quand tu le mets dans quotes, ton shell va le substituer par le chemin de ton home.

Tu peux sortir le ~ des quotes dans ton alias pour que ton shell l'interprète, mais garder les quotes autour du nom qui suit pour pas t'embêter à échapper les espaces :

alias fac='cd ~"/chemin avec des espaces"'

zar6
zar6
Niveau 10
30 septembre 2014 à 11:34:06

D'accord merci, je vais tester.

zar6
zar6
Niveau 10
30 septembre 2014 à 11:40:19

j'ai essayé, ça marche :-)

Par contre, étrange :
cd ~"/Desktop/fac/2014-2015 semestre 5/TP-fac" ne marche pas tandis que :
cd ~/Desktop/fac/"2014-2015 semestre 5"/TP-fac marche...
Peu importe, mon problème est réglé, mais simple remarque qui m'étonne.

Merci encore ;)

vava740
vava740
Niveau 10
30 septembre 2014 à 11:41:58

My bad, Bash a besoin du / de ~/ pour substituer le chemin (sinon il cherche un ~ littéral). Je testais sous zsh perso.

Nh3xus
Nh3xus
Niveau 10
30 septembre 2014 à 13:11:54

Tiens, Bash sous OS X ne stocke pas les alias dans ~/.bash_aliases comme sous GNU/Linux ?

zar6
zar6
Niveau 10
30 septembre 2014 à 13:41:13

vava :d) d'accord je comprend mieux alors

nh3xus :d) je pense que ça fonctionne différemment en fait : c'est moi qui l'ai créé le .bashrc il n'y était pas. J'aurais peut être aussi bien pu créer un .bash_aliases

Nh3xus
Nh3xus
Niveau 10
30 septembre 2014 à 13:54:32

Merci pour la précision.

Je connais très peu OS X.

deepblue
deepblue
Niveau 16
30 septembre 2014 à 14:13:43

Sinon, j'ai tendance à utiliser $HOME à la place de ~ (dans les alias), on évite de se prendre les problèmes à la con dans le genre et ce, quelque soit la shell qu'on aura sous la main.

Nh3xus
Nh3xus
Niveau 10
30 septembre 2014 à 14:29:48

J'avoue que je connais cette variable d'environnement sans jamais vraiment l'utiliser.

Faire des scripts qui ne dépendent pas d'un shell donné, c'est pas toujours évident.

vava740
vava740
Niveau 10
30 septembre 2014 à 14:42:42

Faire des scripts en /bin/sh POSIX ça permet de pas se mouiller en tout cas.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware