2016-04-06 11 views
0

Çıktı G/ayıklamak -> sonra gelen bütün yolu kesmek gerekir buSembolik bir bağlantının adını nasıl edinebilirim? Bir komutun

# ls -l abc.zip 
lrwxrwxrwx 1 sri dba 122 Mar 27 23:37 /a/b/c/abc.zip -> /x/y/z/abc.zip 

şöyle görünür. cut -f -d'u kullandım ama biraz çalışmaz, sanırım sütun numarası değişiyor. Bu yüzden buna sed eşdeğerde ihtiyacım var.

cevap

0

.

Dize sınırlayıcıları için kolay ve anlaşılır bir seçenek yanlıştır. Sizin durumunuza:

ls -ls abc.zip | awk -F '->' '{print $2}' 
1

sen (GNU sed) Bu işe yarayabilecek: 'kesim' Yalnızca tek bir karakter sınırlayıcıları belirtebilirsiniz kullanma

sed -n 's/^l.*->\s*//p' file 
1

Okuduğunuz şey bir sembolik link hakkında bilgi. Parsing ls is definitely a bad idea.

Bunun yerine readlink'u kullanmaya ne dersiniz?

readlink abc.zip 

Veya tam yolu için -f ile:

$ touch a   
$ ln -s a b   # we create a symbolic link "b" to the file "a" 
$ ls -l b 
lrwxrwxrwx 1 me me 1 Apr 6 09:54 b -> a 
$ readlink -f "b" # we check the full "destination" of the symlink "b" 
/home/me/a 
$ readlink "b"  # we check the "destination" of the symlink "b" 
a 
:

readlink -f abc.zip 

bir örneğe bakın bir sembolik bağlantı ait okuma değerini yapar

İlgili konular