OS X'teki komut satırı araçları için tam unix seçeneklerinden birini almak mümkün müdür?


14

Unix Tool Tip'i Twitter'da takip ediyorum ve gönderilen ipuçlarının çoğunun OS X'te mevcut olmaması ilginç.

Örneğin:

cp - u yalnızca var olmayan veya varolan benzerlerinden daha yeni olan dosyaları hedef dizine kopyalar.

Bunu makinemde denemekle sonuçlanır:

cp: illegal option -- u
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory  

Bu seçenekler neden kullanılamıyor ve OS X'te bunlara erişmek mümkün mü?


Ayrıca find, sed ve awk komutlarını da yükleyebilirsiniz brew install coreutils findutils gnu-sed gawk. Bkz. Apple.stackexchange.com/questions/69223/… .
Lri

Uyarı: cli araçlarının GNU sürümlerini yükleyip kullanırsanız, GNU uzantılarını kazanırsınız, ancak uzantıları OS X'in araçların sürümünde de kaybedersiniz. Örneğin, homebrew'ın coreutils içindeki cp komutu ( gcpkarışıklığı önlemek için adlandırılır ) OS X dosyalarının sahip olabileceği karmaşık meta verilerin nasıl kopyalanacağını bilmez (genişletilmiş attrs, vb.); Kullanmak eğer öyleyse gcpbir takma dosya üzerinde, kopyalama kritik bilgi eksik ve olmayacak iş olacaktır.
Gordon Davisson

@ GordonDavisson dikkatleri için teşekkürler. Eklenen .file tüm dizinlerime gidiyor mu? Bence bu bir artı olabilir :)
DQdlM

@KennyPeanuts: .DS_Store dosyasını mı kastediyorsunuz? Bu benzer ama bahsettiğim şey değil (ve gcp -Rdiğer her şeyle birlikte kopyalayacak). Demek istiyorsan ._somefilename, bu meta verileri (bahsettiğim bilgileri) bazı yabancı hacimlerde depolamak için kullanılan bir AppleDouble dosyası, bu ... karmaşık ...
Gordon Davisson

@ GordonDavisson açıklama için teşekkürler. Bahsettiğim o ._somefilename dosyaları.
DQdlM

Yanıtlar:


12

Homebrew alın ve çekirdek yardımcı programları yüklemesini sağlayın. Daha sonra cp'nin GNU sürümünün istediğiniz bayrakları destekleyip desteklemediğini görebilirsiniz. İşte bir ortak sitede iyi bir cevap ve isterseniz cp'nin GNU sürümü ile değiştirilmesi için ihtiyacınız olacak kesin adımları anlatacağım:

İşte homebrew - http://mxcl.github.com/homebrew/
İşte uzun hikaye - /superuser/476575/replace-os-xs-shell-commands-with-the-linux-versions/ 476594 # 476594


Böyle bir ortama örnek olarak, diğer şeylerin yanı sıra GNU olan [Homebrew] ( http://mxcl.github.com/homebrew/ ) verilebilir sed. Homebrew'u yükledikten sonra şunu yazabilirsiniz:

brew install coreutils

ve GNU Coreutils'i yükleyin . Bunlar sağlayacaktır sed, date, printf, wcve birçok diğer araçlar şekilde değil "geçersiz kılma" varsayılan OS X binarylerine Ancak GNU / Linux, ancak OS X ile gemi, yani onlar öneki getirilecek gvarsayılan olarak. Bu nedenle, Coreutils'i yükledikten sonra GNU sed kullanmak istiyorsanız,

gsed

Bu, her seferinde yazı yazmak için çok fazla zorlanıyorsa, PATH'inize bir "gnubin" dizini ekleyebilir ve GNU sed ile çağrı yapabilirsiniz sed. Aşağıdakileri aşağıdakilere eklemeniz gerekir ~/.bash_profile:

PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"


Kullanarak yüklemek tamam mı port?
Adil Soomro

1
@AdilSoomro macports.org , iyi bir üne sahip uzun süredir devam eden bir araçtır. Denememek için hiçbir neden göremiyorum - sadece tecrübem yok ve homebrew'a katkıda bulunuyorum.
bmike

3

Bunun nedeni OSX'in BSD komut satırı araçlarını kullanması ve Unix araç ipucu kullanıcılarının muhtemelen GNU komut satırı araçlarını kullanan Linux kullanmalarıdır.

GNU araçlarını OSX'e (ve Linux'ta BSD) yükleyebilirsiniz.

En kolay yol Macports, Homebrew veya Fink gibi bir paket yöneticisi kullanmaktır

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.