Pergi ke direktori induk file dengan cd?


9

Saya menulis .sh untuk melakukan beberapa pekerjaan untuk saya, tapi saya sekarang pada titik di mana saya harus cd ke direktori file /path/to/file.end ada di. Terminal tidak memungkinkan

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

sayangnya tidak ada solusi yang saya tahu, jadi alangkah baiknya jika Anda bisa membantu!


4
Um, maksud Anda cd /path/to? Itu akan mengubah direktori menjadi direktori tempat file file.enditu berada.
Alaa Ali

1
Tidak, file tersebut variabel, dan saya ingin memasukkan path file (letakkan di terminal) dan kemudian pergi ke folder yang ada di
Azsgy

Jawaban:


10

Jenis cd $( dirname /path/to/file.end). Itu akan membawa Anda ke /path/to.

Penjelasan:

  • dirnamemengembalikan path lengkap untuk file (tanpa nama file, yang akan Anda dapatkan basename) - yaitu dirname /etc/apt/apt.conf.d/99update-notifiermengembalikan/etc/apt/apt.conf.d
  • ekspresi $(anything)digantikan oleh hasil dari perintah di dalam tanda kurung. Begitu cd $( dirname /etc/apt/apt.conf.d/99update-notifier)dieksekusi sebagaicd /etc/apt/apt.conf.d

Notasi lain (tapi tua dan berkecil hati) untuk hal yang sama adalah

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

8

Anda tidak dapat cdmembuka file. Berikut ini adalah (command line) fungsi yang secara otomatis akan cdmenjadi jalan untuk path file yang diberikan memenuhi syarat:

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

Apakah saya sudah benar ?: function fcd () {[-f $ 1] && {cd $ (/ file.end $ 1); } || {cd $ 1; } pwd} jawabannya adalah: bash: kesalahan sintaksis dekat token tak terduga `pwd 'itu memberi saya kesalahan dengan cara ini :(
Azsgy

2
@ Atsch, perlu titik koma sebelumnya pwd, dan jika Anda mendefinisikan fungsi dalam satu baris, perlu titik koma setelahnya pwd.
glenn jackman

@glennjackman fungsi hanya keluar tanpa output atau perubahan dir :(
Azsgy

jalankan fungsinya, lalu masukkan echo $?- apa status keluar?
glenn jackman

Sial, aku seharusnya tidak meragukan diriku sendiri. Alternatifnya tampak lebih baik bagi saya ketika saya menemukannya _O-
Rinzwind

1

Jika Anda menambahkan "/ .." ke nama file yang akan membawa Anda ke direktori yang benar misalnya cd /path/to/file.end/... Lagipula itu bekerja pada Cygwin.


4
Tidak bekerja di bash;) touch test && cd /home/test/test/..mengatakanbash: cd: /home/test/test/..: No such file or directory
Rinzwind
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.