Terminaldeki önceki çalışma dizinine nasıl gidilir?


213

Terminalde, cdkomut ile dizini değiştirirken bulunduğum önceki dizine gitmek için bir anahtarı nasıl tanımlayabilirim ?

Mesela ben içerideyim /opt/soft/binve ben cdiçeri giriyorum /etc/squid3ve ilk dizine geri dönmek istiyorum.

Yanıtlar:


284

Kullanabilirsiniz

cd -

ya da kullanabilirsiniz

cd $OLDPWD

3
Dizin adının neden "cd -" kullanılırken konsola yazdırıldığı hakkında bir fikriniz var mı?
dtmland

4
Muhtemelen eski mermiler komut satırında mevcut dizinin adını göstermediğinden, siz yazarken dizinin adını görmek yardımcı oldu cd -. Örneğin yazdığınızda cd /usr/local, içinde bulunduğunuzu biliyorsunuzdur /usr/loal, ancak yazarken cd -hangi dizinden geldiğinizi her zaman hatırlamıyorsunuz. Böylece sizi yazarak kurtarır cd -; pwd. Ama hepsi bu spekülasyon.
Raphael Ahrens

2
Veya diğer adı kullanabilirsiniz: Takma adı ayarlayın, alias -- -='cd -'sonra -(4 karakter) yerine (1 karakter) kullanın cd -. Daha hızlı:D
ADTC

2
Bu olmadan nasıl yaşayabilirim?
VSZM

1
@ AndréKuhlmann cd -İki kere yapabilirsiniz . İçeride cd /; cd /usr; cd -; cd -olmalısın /usr. Ama belki sorunuzu özlüyorum özledim.
Raphael Ahrens

54

Diğer cevaplar kesinlikle doğrudan cevap anlamında tamamlanmıştır. cd -ve cd $OLDPWDkesinlikle bunun için ana seçimlerdir. Ancak, genellikle bunun bir iş akışına girdiğini pushdve popddaha iyi çalıştığını tespit ediyorum .

Uzun lafın kısası, başladığınız yere geri dönme niyeti olan bir dizine geçiyorsanız, pushd/ kullanın popd.

Genişletilmiş örnek

En büyük fark, bir örnekle kolayca gösterilir.

$ cd dir1
$ pushd dir2

Bu noktada, bir dizin yığını var dir2, dir1. pushdHiçbir argüman olmadan koşmak , sizi dir1şimdi olduğu gibi yığınla geri koyacaktır dir1, dir2. popdaynısını yapardı, ama sizi boş bir dizin yığınıyla bırakırdı. Bu, cd -iş akışında nasıl olacağınızdan çok farklı değil .

Ancak, şimdi dizinleri birden çok kez değiştirip geri dönebilirsiniz dir1. Örneğin,

$ cd dir1
$ pushd dir2
$ cd dir3

Eğer çalıştırırsanız popdbu noktada, geri gidecek dir1.


2
Ayrıca dizinleri de yığabilirsiniz, bu yüzden tekrar tekrar kullanın pushdve popd-ing yaparken önceki klasöre dönün .
Bernhard

1
Kesinlikle. Yığını kontrol etmeyi de içeren büyük bir örnek vermiştim dirs -v, ancak benim için gerçek şu ki basit vaka gerçekten kullandığım tek şey. (Ya da daha kötüsü, çalışırken push +2ya da benzeri bir şeyi yaparken hata yapıyorum ) Ayrıca, bebeğin iş akışını denemesi için birinin adım attığını düşündüm. :)
Josh Berry

Nasıl cdyığmadan haşhaş üste?
Jon Deaton

18

Kullanmalısın:

cd ~-

cd -Dizinin can sıkıcı yankısı olmadan (şu anda kabul edilen cevaptan) aynı şeyi yapar ve yazmak cd "$OLDPWD"ya da'dan daha kolaydır cd - > /dev/null.


2
Yankı null dosyasına yönlendiriliyor! Bu dahi!
Ram

2
Yankı, öncekini değil yeni dizini gösterir. Ve bunu faydalı bulacağım, böylece şu anda nerede olduğumu biliyorum, özellikle de istekte yalnızca geçerli dizin adını (veya hiçbir şey yok) gösteren bir kabuk içindeysem ve değişmeyecek kadar rahatsız olduğumda tam yolu gösterme Elbette, isteminiz zaten tam yolu gösteriyorsa, yankı gereksiz ve can sıkıcı olacaktır. Bu durumda, (5 karakter) yerine (1 karakter) alias -- -='cd "$OLDPWD"'kullanarak yapmayı deneyebileceğinizi düşünüyorum . -cd ~-:)
ADTC

Kaynak ve açıklama: unix.stackexchange.com/a/330885/38213 Spoilers , - bir işlenendir ve yolun diğer adıdır . İşe cd ~-/..yarıyor ama cd -/..yapmıyor!
Ray Foss

16
$ cd - 

önceki çalışma dizinine geçecektir.


3

'~ / .Bashrc' dosyanızı düzenleyerek ve komut için bir diğer ad ekleyerek 'cd -' için bir anahtar tanımlayabilirsiniz. Örneğin, 'cd -' yapmak için 'cdc' ekleyebilirsiniz, bu da ekleyerek son dizine ulaşmanız için daha kısa bir yol sağlar:

alias cdc='cd -'

Bu şekilde basitçe 'cdc' yazacaksınız ve sizi en son çalışan dizine koyacaksınız.


5
Ve bu takma adın uygulanmadığı bir sistemi kullanırken sonunuzu karıştırmayın. Arada bir karakter yazarak her seferinde bir karakter kaydeder. Neden rahatsız ediyorsun?
16’da CVn

2
"Terminalde, önceki dizine gitmek için nasıl bir anahtar tanımlayabilirim " Asla kafam karışmaz. Bu sadece bir kısayol, başka bir sistemdeyken sadece uzun yoldan kullanın.
Atari911

@ Atari911 harika bir soru! İşte cevap: stackoverflow.com/questions/4200800 İşte yaptığım şey (F12'ye bağlı): bind '"\e[24~":"\C-k \C-ucd -\n"'(ya da daha çok tercihen inputrccevabında belirtilen dosyaya taşı).
ADTC

1

cd ..klasör ağacındaki emsal klasöre gider.
cd -daha önce olduğu klasöre gider. Bu komut bazı dağıtımlar üzerinde çalışmadı (ubuntu 16.04), debian 9'da çalışı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.