Andando alla directory madre di un file con cd?

Sto scrivendo un file .sh per fare un po ‘di lavoro per me, ma ora sono al punto in cui devo inserire nella directory il file /path/to/file.end. Il terminale non consente

cd /path/to/file.end bash: cd: /path/to/file.end: Not a directory 

purtroppo non c’è soluzione che io conosca, quindi sarebbe bello se potessi aiutare!

Digita cd $( dirname /path/to/file.end) . Questo ti porterà in /path/to .

Spiegazione:

  • dirname restituisce il percorso completo per un file (senza il nomefile, che si otterrebbe con basename ) – ad es. dirname /etc/apt/apt.conf.d/99update-notifier restituisce /etc/apt/apt.conf.d
  • l’espressione $(anything) viene sostituita dal risultato del comando tra parentesi. Quindi cd $( dirname /etc/apt/apt.conf.d/99update-notifier) viene eseguito come cd /etc/apt/apt.conf.d

Un’altra (ma vecchia e scoraggiata) notazione per lo stesso era

 cd `dirname /path/to/file.end` 

Non è ansible eseguire l’operazione di cd in un file. Ecco una funzione (riga di comando) che verrà automaticamente inserita in un percorso per un determinato percorso file completo:

 function fcd () { [ -f "$1" ] && { cd "$(dirname "$1")"; } || { cd "$1"; } ; pwd; } 

Se aggiungi “/ ..” al nome del file che ti porterà nella directory corretta es. cd /path/to/file.end/.. Funziona comunque su Cygwin.