Я записал немного сценария жемчуга, который я вызываю следующим образом:
perl -pe'...' <a
Я хотел скопировать содержание входного файла от веб-браузера (целая запись в блоге Wordpress, быть точным). Часть копии работает отлично, полное содержание обнаруживается в ClipMenu. Но когда я пытаюсь вставить его в файл с помощью кошки и перенаправления:
cat >a
Это испускает точно 1 024 символа, затем прекращает принимать вход - только CTRL-C может помочь. Я попытался вставить только 1 023 байта/символы, и это работает после нажатия Enter, я мог ввести его в файл без любых проблем. Но если я ввел 1 024 символа в одну строку, не было никакого способа сделать что-либо еще кроме CTRL-C.
Я попробовал iTerm и Terminal.app, оба шоу то же самое поведение. Я попробовал удар от macports и / мусорного ведра с теми же самыми результатами. Я даже попробовал dd:
dd bs=1M of=a
К тому же самому результату. Ничто, кажется, не помогает.
Я невежествен - почему это происходит? И как мог я вставка копии в файл на Mac OS X легко, и способом что я могу быть уверен, что содержание не изменено всегда?
Каждый Unix, который я когда-либо использовал, имеет предел на длину входа режима с обработкой, хотя это, вероятно, отличается от ОС до ОС. Вот почему можно только ввести так много в одной строке, когда Вы делаете кошку> a. Буферный вход ОС от TTY так, чтобы можно было сделать редактирование (например, клавиша Backspace по тексту и изменить его) прежде, чем отправить его в приложение (кошка, в этом случае). ОС выделяет буфер фиксированного размера для этого, и Вы сталкиваетесь с его пределом. Ваш наилучший вариант состоит в том, чтобы использовать интерактивную программу для записи файла. Например, Вы могли выполнить vi и войти
:set paste
команда для выключения автоматического отступа. Нажмите "i", чтобы ввести режим вставки, вставить Ваш код в, поразить Escape и работать:
:w a
:q
Сохранить файл и выйти.