J'écris un fichier .sh pour que je travaille, mais je suis maintenant au point où je dois aller dans le répertoire où se trouve le fichier /path/to/file.end. Le terminal ne le permet pas
cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory
il n'y a malheureusement aucune solution de contournement à ma connaissance, alors ce serait bien si vous pouviez aider!
Tapez cd $( dirname /path/to/file.end)
. Cela vous mènera dans /path/to
.
Explication:
dirname
renvoie le chemin complet d'un fichier (sans le nom de fichier que vous obtiendriez avec basename
) - c.-à-d. dirname /etc/apt/apt.conf.d/99update-notifier
renvoie /etc/apt/apt.conf.d
$(anything)
est remplacée par le résultat de la commande entre parenthèses. Donc, cd $( dirname /etc/apt/apt.conf.d/99update-notifier)
est exécuté en tant que cd /etc/apt/apt.conf.d
Une autre notation (mais ancienne et découragée) pour la même chose était
cd `dirname /path/to/file.end`
Vous ne pouvez pas cd
dans un fichier. Voici une (ligne de commande) fonction qui va automatiquement cd
dans un chemin pour un chemin de fichier complet:
function fcd () { [ -f "$1" ] && { cd "$(dirname "$1")"; } || { cd "$1"; } ; pwd; }
Si vous ajoutez "/ .." au nom de fichier qui vous mènera au bon répertoire, par exemple. cd /path/to/file.end/..
. Cela fonctionne quand même sur Cygwin.