Чи можливо отримати повний набір параметрів unix для інструментів командного рядка в OS X?


14

Я дотримуюся підказки інструментів Unix в Twitter, і цікаво, що багато підказок, які розміщені, недоступні в OS X.

Наприклад:

cp - u буде копіювати лише файли, які не існують або новіші, ніж їх наявні аналоги, у каталог призначення.

Якщо це зробити на моїй машині, ви отримаєте:

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  

Чому ці параметри недоступні і чи можна отримати доступ до них в OS X?


Ви також можете встановити функцію find, sed та awk brew install coreutils findutils gnu-sed gawk. Дивіться apple.stackexchange.com/questions/69223/… .
Лрі

Попередження: якщо встановити та використовувати версії інструментів cli для GNU, ви отримаєте розширення GNU, але ви також втратите розширення у версії інструментів OS X. Наприклад, команда cp в coreutils homebrew (названа gcpдля уникнення плутанини) не знає, як скопіювати складні метадані, які можуть мати файли OS X (розширені attrs тощо); тож якщо ви використовуєте gcpфайл псевдоніма, у копії буде відсутня важлива інформація та не працюватиме.
Гордон Девіссон

@GordonDavisson дякую за голову вгору. Це те, що додається .файл, переходить у всі мої каталоги? Я думаю, що це може бути плюсом :)
DQdlM

@KennyPeanuts: Ви маєте на увазі файл .DS_Store? Це схоже, але не те, про що я говорю (і gcp -Rкопіюватиме його разом із усім іншим). Якщо ви маєте на увазі ._somefilename, це файл AppleDouble, який використовується для зберігання метаданих (інформації, про яку я говорю) на деяких видах іноземних томів, що є ... складним ...
Gordon Davisson,

@GordonDavisson дякую за пояснення. Це ті ._somefilename файли, про які я говорю.
DQdlM

Відповіді:


12

Отримайте домашню мову та запропонуйте їй встановити основні утиліти. Потім можна побачити, чи підтримує версія GNU cp потрібні прапори. Ось хороша відповідь на веб-сайті-партнері, і я викладу точні кроки, якщо вам потрібно, щоб CP замінив версію GNU:

Ось домашня мова - http://mxcl.github.com/homebrew/
Ось довга історія - /superuser/476575/replace-os-xs-shell-commands-with-the-linux-versions/ 476594 # 476594


Прикладом такого середовища є [Homebrew] ( http://mxcl.github.com/homebrew/ ), який, наприклад, має GNU sedсеред іншого. Після встановлення Homebrew ви можете вводити текст

brew install coreutils

і встановити GNU Coreutils . Це забезпечить вам sed, date, printf, wcі багато інших інструментів , які поставляються з GNU / Linux, але не OS X. Тим НЕ менше, щоб не «скасовують» ОС по замовчуванням X виконавчі файли, вони будуть з префіксом gза замовчуванням. Отже, після встановлення Coreutils, якщо ви хочете використовувати GNU sed, введіть

gsed

Якщо це занадто багато клопоту щоразу набирати, ви можете додати каталог "gnubin" у свій PATH та просто зателефонувати з GNU sed sed. Вам потрібно буде додати наступне ~/.bash_profile:

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


Чи добре це встановити за допомогою port?
Аділ Соомро

1
@AdilSoomro macports.org є давнім інструментом з хорошою репутацією. Я не бачу причин не спробувати це - я просто не маю досвіду, але користуюся і сприяю домашньому приготуванню.
bmike

3

Причина полягає в тому, що OSX використовує інструменти командного рядка BSD, а підказки інструментів Unix, ймовірно, використовують Linux, який використовує інструменти командного рядка GNU.

Ви можете встановити інструменти GNU на OSX (і BSD в Linux).

Найпростіший спосіб - це використовувати менеджер пакунків, як Macports, Homebrew або Fink

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.