İsmi yazmadan mevcut ilk klasöre nasıl cdlersiniz?


30

Geçenlerde bir klasörün içinde bulunduğum bir çıkmazdaydım ve cdbir alt klasör klasörüne geçmek istedim . Bu klasörün içinde sadece bir tane klasör vardı ve çok uzun bir addı.

Home (I am here)
 |
 |
  --> /reallylongnamefolder

Yazmak yerine bu klasöre girmenin bir yolu var mı:

 cd reallylongnamefolder

1
birçok yol: cd */veya cd rea*/emin değilseniz her zaman yalnızca 1 alt dizin vardır (bash kullanıyorsanız, ayrıca cd rea[TAB].. diğer kabuklarda da olabilir, ancak adı genişletme şekli değişebilir). Eğer "/ reallylongnamefolder" mutlak bir yolsa, aynı şey, fakat önünde '/' varken, örneğin:cd /rea*/
Olivier Dulac

Yanıtlar:


38

İlk önce birkaç harf yazıp basmanızı öneririm tab. Bash gerçekten yararlı olan otomatik tamamlama özelliğine sahiptir. Sadece geçerli yoldaki dizin ise, sadece basılması tabtüm dizini dolduracaktır.

Yazıp iki kez cdbasmak tabgeçerli dizindeki tüm seçenekleri görüntüler.

tab Bir veya iki tuşa basıldığında hemen hemen tüm çalıştırılabilir dosyalara erişebildiğiniz için genellikle bash için yararlıdır.

cd *Yukarıda önerildiği gibi, yalnızca dizin listede ilk sıradaysa ve gizli değilse çalışır. Dizininizden önce alfabetik olarak dosya varsa, bu dizini cdhiç değiştirmez.


15
Sadece bir dizin varsa, hiç harf bile yazmanıza gerek kalmamalı: cd <tab>yeterince akıllı olacaktır.
amalloy

1
Windows'da da çalışır. (google'dan gelenler için ..)
Koray Tugay

16

Sanırım aslında anladım

cd * 
cd */

Ancak birden fazla dosya ve bir klasör varsa test etmedim!


@Rinzwind yorumlarda belirtildiği gibi !

Diyelim ki üç uzun klasörünüz var:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Dosyanın ilk harfini yazarsanız tab, dosya ismini otomatik olarak tamamlayacaktır! ÇILGIN ŞEYLER!

Yani yukarıdaki örnekte şunu yazabilirsiniz: t tabve olabildiğince otomatik olarak tamamlanır: cd thisislongfolder(sonra sayıyı kendiniz yazın).

Ya da yapabilirsin cd t*1seni içinethisislongfolder1

Teşekkürler Rinzwind!


6
cd first_letter_or_some_letters ve {tab} en kolay (ayrıca klasörlerin lot sorununuzu çözer. Şunları yapabilirsiniz 1'den fazla sekme ve harflerle hatta karışık harfler. Sistem irade otomatik tamamlama kadarıyla olabildiğince. Ayrıca yapabilirsiniz cd r*rve umarım r ile başlayan ve biten tek klasördür.
Rinzwind

@ Rinzwind vay! Bunu bilmiyordum! Teşekkürler!
Arian Faurtosh

Denemek. Sonuçlarınıza cevabınızı ekleyin ve bunun için büyük bir üne sahip olacaksınız ;-)
Rinzwind

4
cd */hile yapabilir
gniourf_gniourf

3
cd *Muhtemelen başarılı olduğundan daha sık başarısız olur.
David Richerby

14
cd $(ls -d */|head -n 1)

ls -d */dizinleri listeler, head -n 1bu listedeki ilki verir.


Evet ve sen bunu yazacaksın ... Tab-tab'a gidip, bunu yazmaktansa adı aramayı tercih ederim. Yine de% 100 doğru, güzel cevap!
14'te

1
@tomsmeding cdİlk dizine gereken bir komut dosyası yazıyorsanız , sekmeleri yapamazsınız.
pastebin.com 0mr8spkT'yi sundu

-n 1, dosyanın son 1 dosyasını gösterir. Bunu değişken bir düzen için kullanmak istiyorsanız, 4. dizini bir dizinde açmak için cd $ (ls -d -1 * / | sed -n '4p') kullanabilirsiniz. Diğer adlara eklemek, klasör gezintisi ile sizi daha hızlı hale getirebilir.
Ivan Ivković

2

Bunun için güzel bir kurulumum var, sadece ~ / somereallylongfoldername adındaki cd'yi değil, / klasöründeyken bile oraya cd göndermemi sağlıyor.

ilk kullandığım şey oh-my-zsh ile birlikte zsh, bu da cd'leri dava için endişelenmenize gerek kalmadan cd yazmanıza izin veriyor.

  1. git ve zsh'i kur
sudo apt-get install zsh git
  1. yüklemek Oh My ZSH

kıvırmak -L http://install.ohmyz.sh | sh

  1. Varsayılan kabuğu ZSH olarak değiştir
chsh -s /bin/zsh

ana klasörünüzde bulunan .zshrc dosyasını açın ve düzenleyin

nano ~ / .zshrc

daha sonra aşağıdaki satırı dosyanın altına ekleyin. export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Temamı beğenirseniz, çizgiyi #ZSH_THEME="robbyrussell"deZSH_THEME="pygmalion"

Dosyayı kaydedip kapatın, ardından yeniden başlatın. kabuğu kapatıp yeniden aç veya yeni bir sekme aç ve dene

isimleri tamamlamak için sekme tuşunu kullanamazsınız ve ZSH'de büyük harf hakkına sahip olmanız bile gerekmez, tabu yazabilir ve sekme tuşuna basabilirsiniz.

görüntü tanımını buraya girin


0

Dizini inode numarasına göre değiştirebilirsiniz.
ilk önce inode'u bulduk ls -il.
sonra

cd $(find -inum directory_inode_number)

0

Bir komut dosyasında yapmanız veya tanımlanamayan adlara sahip dizinleri desteklemeniz gerekirse:

cd $(python -c $'import os\nfor entry in os.listdir(b"."):\n if os.path.isdir(entry):\n  os.write(1, entry);break\nelse: os.write(1, b".")')

Dizinde, dizinlere göre sıralama düzenlerinden bağımsız olarak dosyalar varsa çalışır. Başarısız
olduğunda gizli dizinlerde çalışır cd */. Bir ad yerine yalnızca yazdırma
yapıldığında ad geçerli yerel ayarda gösterilemiyorsa çalışır .ls??


0

As'ın cevabını genişletmek:

cd $(ls -d -1 */ |sed -n '1p')

1. klasörü bir dizinde açmak için İkinci dizin için '1p' '2p' olarak değiştirilebilir.

ls -d -1 -la */

yalnızca bir üst dizinden gelen dizinleri listelemek için.

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.