Установите команду Ubuntu truncate для Mac OS X 10.7

10

Есть ли способ установить команду truncate в Ubuntu в Mac OS X 10.7, чтобы использовать команду в терминальной оболочке?

Raptor
источник
Что ты пытаешься сделать?
кванты
У меня есть сценарий оболочки, который обеспечивает функцию усечения, которую я хочу попробовать на локальном Mac.
Raptor

Ответы:

13

Это не должно быть в Server Fault, вероятно, Super User или Ask Different, но вы можете установить много двоичных файлов, используя homebrew, найденный здесь:

http://mxcl.github.com/homebrew/

Во-первых, вам нужно установить инструменты командной строки для XCode, что, вероятно, потребует от вас купить его, если вы еще этого не сделали.

Как только вы это сделали, запустите:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Чтобы установить homebrew, затем, когда он установлен, запустите:

brew install truncate
Алекс Берри
источник
Я обнаружил, что усечение в homebrew отличается от версии Ubuntu. У него нет опции флага.
Raptor
Есть также Fink: finkproject.org и Macports: macports.org, которые вы можете попробовать перед тем, как запустить brew uninstall truncate.
Алекс Берри
2
Также был бы признателен, поскольку, независимо от того, сработало ли это для вас, я действительно предоставил правильный ответ на ваш вопрос :)
Алекс Берри
Теперь с помощью Yosemite для меня решено следующее (также с помощью домашнего приготовления): magiclantern.fm/forum/index.php?topic=6407.0
msmafra
17

Обновить:

По состоянию на март 2015 года truncateбольше не доступен в Homebrew как отдельная формула.

Как truncateчасть GNU Coreutils, вы должны установить его на OS X с помощью следующей команды:

> brew install coreutils

После установки truncateбудет доступен под именем gtruncate. Обратите внимание, что все программы из Coreutils будут доступны с префиксом g.

Алекс Юрша
источник
2
Это должен быть принятый ответ.
fguillen
1
Похоже, truncateснова доступен в Homebrew как его собственная формула.
Навин
4

Когда truncateнет, вы можете использовать ddвместо этого. Например.

Создайте файл, полный нулей:

dd if=/dev/zero of=/tmp/youroutputfile bs=1m count=50

Усечь существующий файл:

dd if=yourinputfile of=/tmp/youroutputfile bs=1k count=1

Примечание. В OS X ddиспользуются строчные буквы, а в GNU - ddверхний регистр.

Ян Маккиннон
источник
ddможет почти достичь цели. Может ddусечь с конца файла? Когда я читаю из файла man файла dd, я знаю, что его можно прочитать только с начала файла. Как насчет того, чтобы удалить последние 100 байт из файла?
Raptor
1
Не так далеко, как я знаю. Вам нужно будет самостоятельно выполнить расчет целевого размера, сначала прочитав размер файла и вычтя 100 байтов.
Ян Маккиннон
0

Стоит рассмотреть, если усеченный файл - это тот же файл или новый файл с тем же именем. Это важно для файлов журналов, которые все еще записываются или tailредактируются.

:> file

Работает как на * nix, так и на macOS для усечения файла на месте.

karmakaze
источник