cd -P .
for dir in ./*/
do cd -P "$dir" ||continue
printf %s\\n "$PWD" >&2
command && cd "$OLDPWD" ||
! break; done || ! cd - >&2
Yukarıdaki komut herhangi altkabuklarda yapmak gerekmez - sadece ardışımı ile cari kabuğunda ilerlemesini izler $OLDPWDve $PWD. Siz cd -kabuk, bu iki değişkenin değerini değiştirdiğinde, temelde, dizinleri değiştirir. Ayrıca, stderr'de çalıştığı için her dizinin adını da yazdırır.
Sadece bir kez daha baktım ve hata yönetimi ile daha iyi bir iş çıkarmaya karar verdim. Başaramadığı bir dizini atlayacaktır cd- ve cdneden stderr olacağına dair bir mesaj yazacaktır - ve başarılı bir şekilde çalışmazsa veya bir şekilde çalıştırıyorsanız orijinal dizininize geri dönme özelliğini etkilerse breaksıfır olmayan bir çıkış kodu olacaktır. - . Bu durumda aynı zamanda bir son da yapar - ve elde edilen mevcut çalışma dizini adını stderr'ye yazar.commandcommand$OLDPWDcd -
youtube-dl.