Bulucuda sert bir bağlantı oluşturmanın bir yolu var mı?


8

Bulucuda sert bir bağlantı oluşturmanın bir yolu var mı?

Terminalde bir sabit link oluşturulacaktı:

ln /path/to/file /path/to/newpath

oysa, bir link / alias komut ve seçenek tutularak yapılabilir veya

ln -s /path/to/file /path/to/newpath

(görünüşe göre 'takma' ve 'ln' davranışları farklı olsa da )

Yanıtlar:


7

Bunun gibi bir Automator servisi oluşturabilirsiniz:

görüntü tanımını buraya girin

Bu seçilen dosyaları alır ve bulundukları dizinde onlara sert bağlantılar oluşturur. Ardından, bağlantıları istediğiniz konuma sürükleyip bırakabilirsiniz.

Bu, adlarında boşluk bulunan dosyalar için çalışır, ancak adlarında tırnak işaretleri içeren dosyalar için işe yaramaz.

Buna Finder » Servisler menüsünden, içerik menüsünden erişebilir ve Ltakma kısayollara benzer bir klavye kısayolu atayabilirsiniz (belki de L).


1
Sabit klasörün doğrudan yeni dizinde oluşturulabilmesi için hedef klasörü sağlayan seçenek tuşu gibi bir şeyi basılı tutarken bir klasörden diğerine sürükle / bırak yaparken etkili olan bir işlem yapmanın bir yolu var mı?
Michael,

@Michael, muhtemelen kendi başına bir soru olarak en iyisini yapar ve bu cevaba bir yorum yapmaz.
Daniel

1
Adında tırnak işareti olan dosyalar üzerinde çalışması gereken bir bashaçıdan . Automator ile ilgili bir neden yok mu? (Gerçekten tırnak işaretleri ile çalışmadığını test ettiniz mi?)
Wildcard

İlgili, Unix ve Linux Stack Exchange'den: 1 $ 2 gibi argümanlar… bir for döngüsü içinde nasıl kullanılır? (Kullanabileceğiniz birden fazla basit sözdizimi vardır.)
Wildcard

@Daniel: Çözümünüzü, dosya türü ilişkilendirmesini engelleyen "My File.txt Hardlink" yerine "My File Hardlink.txt" almak için rafine bir kodla genişlettim. Lütfen tekrar gözden geçirin.
porg

2

Finder.app içinde bunu yapmanın yolu yok. Ancak, hedefiniz komutları Terminal.app'a yazmaktan kaçınmaksa, o zaman sizin için komutları yapmak üzere bir iş akışı oluşturmak için Automator.app kullanabilirsiniz.


2

Ben aslında yeniden adlandırılmış bağlantı terimiyle uzantı korunmuş istedim aksi takdirde bulucu filetype tanımadım.

bu yüzden Daniel'in Yanıtını kullandım (bunun için teşekkürler) ve biraz değiştirdim

for f in "$@"
 do  
  dir=$(dirname "$f")
  filename=$(basename "$f")
  extension=$([[ "$filename" = *.* ]] && echo ".${filename##*.}" || echo '')
  filename="${filename%.*}"
  ln "$f" "${dir}/$filename Hardlink$extension"
done

EDIT: uzantı işleme kodunun daha iyi olduğunu düşündüğüm şeyi ekledi - uzantı yoksa boş bırakılmalıdır. Maalesef, kodları kodlama konusunda iyi değilim, bu yüzden lütfen bunun gerektiğini düşündüğünüz düzeltmeleri paylaşın.


Oldukça iyi. Sadece bir uyarı: Herhangi bir uzantısı olmayan bir dosyanız varsa, gerçekten şaşırtıcı sonuçlar elde edersiniz! (Ve içerdiği dizinlerden birinin isminde bir dönemi varsa, sürpriz farklı bir biçimde tezahür edecektir.)
Wildcard

1

Evet, dolaylı olarak.

Automator, herhangi bir kabuk betiğini çalıştıran hizmetler sunmanıza izin verir ve ayrıca sabit link için hedefe giden bir yol isteyebilir (çünkü muhtemelen orijinaliyle aynı konumda olmayacaktır). Sanırım bağlantı konumunu da masaüstünde olduğu gibi varsayılan bir yerde bulabilirsiniz.

Hedefe girmek için bir iletişim kutusu açmak için bir adım ekleyin ya da hedefi seçin ve lnkomutunuza iletin.


1

Daniel tarafından sağlanan güzel bir çözüm, ancak senaryo kodunu, dosya türünü koruyan kodla değiştirmenizi öneririm.

for f in "$@"
do  
  ln "$f" "Plink-$(basename "$f")"
done

"Dosya türü için yıkıcı değil" ne demek?
Mark

Finder'ın "make alias" komutunun kullandığı yamaları takip ettim. Elbette uygun gördüğü halde adlandırma kurallarını değiştirebilirsiniz.
Daniel
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.