Dizin sembollerini hala takip ederken uzun formatı (-l) kullanmak nasıl?


27

Bunun ls -lyalnızca çıktının biçimlendirmesini değil, aynı zamanda dizin semboliklerinin nasıl işlendiğini de değiştirdiğini fark ettim :

> ls /rmn
biweekly.sh  daily.sh  logs ...

> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11  2011 /rmn -> /root/maintenance/

Sembolik bağlantı /rmnhakkında, içeriğinde ne olduğuna dair ayrıntılı bir liste almak istiyorum /rmn.

Düşünebileceğim bir çalışma, şöyle bir şey yapan bir kabuk işlevi oluşturmaktır:

cd /rmn
ls -l
cd -

Ancak bu, özellikle bir sonraki kullanımını karıştırdığı için çok tehlikeli görünüyor cd -. Daha iyi bir yolu var mı?

(CentOS 2.6.9'dayım)


Bunu da farkettim ve birinin de fark edip etmediğini görmek için googling'e gittim. Buraya buraya geldim. :)
Yevgeniy Afanasyev

Yanıtlar:


27

Baksana, seçeneklerin var mı:

 -H, --dereference-command-line
     follow symbolic links listed on the command line 
 --dereference-command-line-symlink-to-dir
     follow each command line symbolic link that points to a directory

Bunlar yardımcı olmazsa, aşağıdakileri cd -yaparak makroyu karıştırmadan çalışabilirsiniz :

(cd /rmn ; ls -l)

hangi bir deniz kabuğu içinde çalışır.


O var -Hve hile yaptı. Teşekkür ederim!
RomanSt

4
Bunun --dereference-command-line-symlink-to-dirkısa bir formu olmasını isterdim .
wchargin

14

Bu basit problem hakkındaki düşüncenin neden bu kadar karmaşık olmak zorunda olduğunu anlamıyorum - ama belki de soruyu yanlış anladım. Neyse: benzer bir fonksiyonelliğe ihtiyacım olduğunda kullandım:

ls -lL

Davamda hile yaptım. Gönderen lsadam sayfası:

-L, --dereference
     when showing file information for a symbolic link, 
     show  information  for  the file the link references
     rather than for the link itself

Örneğin, /media/stickUSB çubuğumdaki verilere erişmek için bana bir kısayol yaptım . ls -l /media/stickAsıl bağlantı ls -lL /media/stickgösterilecek, içeriği ise USB çubuğunda gösterilecektir.

İç işleyişini arasındaki fark hakkında daha derin bir araştırmadan sonra -Hve -Lnihayet bu konuda mükemmel bir yazı geldi Sığ Düşünceler blogunda (hatta zevk için bazı düzgün kabuk komut hileler içeren!)

Bu , iki seçenek arasındaki asıl farkları belirtir (orijinal kılavuzdan çok daha iyi!):

  • -H - sadece komut satırında açıkça belirtilen bağlantıları geçersiz kılma
  • -L- Onlar bile KQUEUE bağlantılar değil komut satırında belirtilen

(Bu ikisi basit günlük görevlerle kullanıldığında , genel olarak çıktıda bir fark olmamalıdır.)

Ayrıca: Uzun biçimi ( --option) hatırlamayı tercih ederseniz , ezberlemek --dereferenceaşırı uzun canavardan daha az hantaldır --dereference-command-line-symlink-to-dir.


5
ls -l /rmn/

yapardım ya

ls -l /rmn/.

Ancak, davranış farklı ve farklı olmamalıdır -l. Bunun için bir takma adınız var mı ls?


3
lsbayraklar çılgınca. -l, -Hvarsayılanı kapalı yapar -F. Bkz. Coreutils - Hangi dosyalar listelenir ?
Mikel

@Mikel bu konuda tamamen haklı görünüyorsun. Ve evet, bu delilik. (ayrıca, ls için takma
ismim

Aslında POSIX tarafından bile belirtilmiş. ls='ls -F'Aslında takma adı olan bendim .
Stéphane Chazelas
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.