BASH'da dizini nasıl yenileyebilirim?


24

Derleyici tarafından oluşturulan dosyaları içeren bir dizin var. Her yeniden oluşturma sırasında bu dizin temizlenir ve oluşturma işleminden sonra lsbana boş çıktı verir. cdDizin dışına çıktıktan sonra geri dönersem doğru çalışıyor. Sorular:

  1. Dizini yenilemenin başka, daha zarif bir yolu var mı?
  2. Dosyalar silindiğinde ve yeniden oluşturulduğunda gerçekte ne olur? Neden cdgerçek dizin içeriğini görmem gerekiyor ?

Yanıtlar:


10

Komut dosyanız büyük olasılıkla dizini kaldırır, yalnızca orada bulunan dosyaları değil. Böylece, cdiçine düştüğünüzde ve dizin silindiğinde, gerçekte olmayan lsbir dizinde işlem yaparsınız .

Tarafından cd ..ve cd (directory)(yeni oluşturulan) dizine geri ve hareket ettirin ve dosyalar beklediğiniz gibi orada.

En iyi alternatif, cddizine girip çıkmak yerine , dizinin adını lskomutunuza eklemek ve onu üst dizinden çalıştırmaktır. Yani, ls YourSubdirectorysadece yerine ls.


45

Daha kısa bir yol var: cd .


3
İlginç. Sinek kuşu gibi, bu da mantıklı bir şekilde çalışmamalı - ve yine de öyle görünüyor. Çalıştığını bildiğini sanıyorum çünkü denedin. Bunun için bir belgeniz var mı? Yani, eğer POSIX / bash geliştirme ekibindeysem, bunu bir hata olarak düşünmeye başlarım. Bu şekilde çalışması gerektiğini söyleyen herhangi bir belge biliyor musunuz ?
G-Man 'Monica'yı Yeniden İttifak' diyor

3
Şahin gibi, bu da çok güzel, çiçeklerin üzerinde yüzüyor - yine de sinek kuşlarını mahvediyor.
Matt Faus

Evet! çok mükemmel
chrismarx

1
Bu daha iyi cevap.
deddebme

Ah. Biliyordum! Bir yolu olmalıydı. Teşekkürler!
andersoyvind

10

Garip görünüyor, ancak kısa ve dizini yeniliyor:

cd `pwd`

Bunların geri dönüşler olduğunu, pwd'nin etrafındaki tek tırnakların olmadığını unutmayın.


2

@Kent'in söylediği veya: dizini kaldırmayın, yalnızca içeriğini çıkarın, bu şekilde dizinde kalabilirsiniz (" cd .. && cd -" olmadan ) ve "ls" yapmayı beklediğiniz şeyi yapar.


2

Eğer dizini kaldırmak yoktu, ama yerine eğer daha iyi olurdu cd ..; cd -senin yapabileceğini cd $PWD.


2

Bir takma ad yarat = "cd .. && cd -" bu, bir dizini yukarı çekecek ve daha sonra bir önceki dizine cd girecektir.

tekrar bir listeye ihtiyacınız olacağından eminseniz,

alias refresh="cd .. && cd - && ls -lrt"

Havaalanı oluşturulduktan sonra, takma adı ~ / .bashrc dosyasına kaydedin.

alias | grep refresh >> ~/.bashrc

Böylece tekrar giriş yaptığınızda kullanılabilir.


Unix'te refreshhazır değil.
kenorb

"Kutudan çıkma" derken ne demek istiyorsun? Gördüğümde, "standart" anlamına geldiğini yorumladım; şimdi ne demek istediğini merak ediyorum. "UNIX" i tanımlayın. Cygwin'in bir "yenile" komut standardı yoktur (Tamam, Cygwin POSIX / * nix / neyse de standart olan pek çok şeyi kaçırıyor) ve Linux sistemim de yok.
G-Man 'Monica'yı Yeniden İttifak' diyor
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.