CD ile bir dosyanın üst dizinine mi gidiyorsunuz?


9

Benim için bir iş yapmak için bir .sh yazıyorum, ama şimdi /path/to/file.end dosyası dizine cd için gereken noktada. Terminal izin vermiyor

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

ne yazık ki bildiğim bir geçici çözüm yoktur, bu yüzden yardımcı olabilirseniz iyi olurdu!


4
Ee, demek istiyorsun cd /path/to? Bu, dizini dosyanın bulunduğu dizine değiştirecektir file.end.
Alaa Ali

1
Hayır, dosya değişkendir ve dosyanın yolunu girmek istiyorum (terminale bırakın) ve içinde bulunduğu klasöre gitmek istiyorum
Azsgy

Yanıtlar:


10

Tür cd $( dirname /path/to/file.end). Bu seni içine alacak /path/to.

Açıklama:

  • dirnamebir dosyanın tam yolunu döndürür (alacağınız dosya adı olmadan basename) - ie dirname /etc/apt/apt.conf.d/99update-notifierdöndürür/etc/apt/apt.conf.d
  • ifade $(anything), parantez içindeki komutun sonucu ile değiştirilir. Yani cd $( dirname /etc/apt/apt.conf.d/99update-notifier)olarak yürütülürcd /etc/apt/apt.conf.d

Aynısı için bir başka (ama eski ve cesareti kırılmış) gösterim

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

8

cdBir dosyaya giremezsiniz . Belirli bir tam nitelikli dosya yolu için otomatik olarak bir yola girecek bir (komut satırı) işlevicd :

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

Bunu doğru anladım mı ?: işlev fcd () {[-f $ 1] && {cd $ (/ file.end $ 1); } || {cd $ 1; } pwd} yanıtı: bash: beklenmedik jeton `pwd 'yakınında sözdizimi hatası bana şu şekilde bir hata veriyor :(
Azsgy

2
@Atsch, önce noktalı virgül gerekir pwdve bir satırda bir işlev tanımlıyorsanız, sonra noktalı virgül gerekir pwd.
glenn jackman

@glennjackman fonksiyon herhangi bir çıktı veya dir değişikliği olmadan çıkar :(
Azsgy

İşlevi çalıştırın, sonra girin echo $?- çıkış durumu nedir?
glenn jackman

lanet olsun kendimden şüphe etmemeliydim. Alternatif bulduğumda bana daha iyi baktı _O-
Rinzwind

1

Doğru dizine götürecek dosya adına "/ .." eklerseniz örn cd /path/to/file.end/... Zaten Cygwin üzerinde çalışıyor.


4
touch test && cd /home/test/test/..bash: cd: /home/test/test/..: No such file or directory
Bash'da çalışmıyor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.