MacOSX 10.6.7 отключает stdin в 1 024 символах

Я записал немного сценария жемчуга, который я вызываю следующим образом:

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 легко, и способом что я могу быть уверен, что содержание не изменено всегда?

7
задан 28.09.2014, 13:27

2 ответа

% pbpaste | жемчуг-e '...'

Вы поражаете максимальную длину строки для tty. При переключении tty исключительного режима он будет работать.

Но pbpaste действительно, что Вы хотите.

4
ответ дан 07.12.2019, 15:04

Каждый Unix, который я когда-либо использовал, имеет предел на длину входа режима с обработкой, хотя это, вероятно, отличается от ОС до ОС. Вот почему можно только ввести так много в одной строке, когда Вы делаете кошку> a. Буферный вход ОС от TTY так, чтобы можно было сделать редактирование (например, клавиша Backspace по тексту и изменить его) прежде, чем отправить его в приложение (кошка, в этом случае). ОС выделяет буфер фиксированного размера для этого, и Вы сталкиваетесь с его пределом. Ваш наилучший вариант состоит в том, чтобы использовать интерактивную программу для записи файла. Например, Вы могли выполнить vi и войти

:set paste

команда для выключения автоматического отступа. Нажмите "i", чтобы ввести режим вставки, вставить Ваш код в, поразить Escape и работать:

:w a
:q

Сохранить файл и выйти.

2
ответ дан 07.12.2019, 15:04

Теги

Похожие вопросы