SORU
11 AĞUSTOS 2008, PAZARTESİ


Nasıl bir kabuk içinde sembolik bağları çözmek için

Mutlak veya göreceli bir yol (Unıx-benzeri bir sistem) dikkate alındığında, hedefin tam yolunu belirlemek için herhangi bir ara sonra sembolik bağları çözmek istiyorum. Bonus da ~kullanıcı adı gösterimi aynı zamanda çözmek için puan.

Eğer hedef bir dizin olabilir mümkün chdir() içine dizin ve arama getcwd(), ama gerçekten yapmak istiyorum bu bir kabuk yerine yazılı bir C Yardımcısı. Ne yazık ki, kabukları kullanıcı (bu OS X bash) sembolik varlığını gizlemek için denemek için bir eğilim var:

$ ls -ld foo bar
drwxr-xr-x   2 greg  greg  68 Aug 11 22:36 bar
lrwxr-xr-x   1 greg  greg   3 Aug 11 22:36 foo -> bar
$ cd foo
$ pwd
/Users/greg/tmp/foo
$

Benim istediğim bir işlevi gidermek() gibi o zaman idam dan tmp dizini yukarıdaki örnekte, gidermek("foo") == "/Kullanıcı/greg/tmp/bar".

CEVAP
4 EYLÜL 2008, PERŞEMBE


readlink -f $path

Not GNU coreutils 8.15 beri (2012-01-06), bir yokturrealpathprogram kullanılabilir, daha az kalın kafalı ve yukarıda daha esnektir. Ayrıca aynı adı taşıyan FreeBSD açıklama ile uyumludur. Ayrıca iki dosya arasındaki göreceli yolu oluşturmak için işlevsellik içerir.

realpath $path

[Ayrıca aşağıdahalloleodanorton] yorum tarafından Admin

Mac OS X için (en az 10.8.x), 7 ** -f seçeneği olmadan:

readlink $path

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BMG Rentals Property Management

    BMG Rentals

    23 Mayıs 2011
  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • Numberphile

    Numberphile

    15 EYLÜL 2011