Я хочу вставити якийсь текст у термінал і зберегти його у файл, не використовуючи редактор, а просто "cat".
Але занадто довгі рядки або вкладки в тексті унеможливлюють це за допомогою такої простої команди, як "cat> test.txt" або "cat << 'EOF'> test.txt" ("тут документ").
У режимі "тут документ" тут, якщо вставлені текстові дані містять вкладки, вони призводять до автоматичного заповнення.
Якщо я почну bash з "--edititing", у деяких системах довжина вставленої лінії обмежена 256 символами, решта вставленого тексту відкидається.
Якщо замість цього я вставити безпосередньо на введення кота (без << 'EOF'), максимальна лінія також становить 256.
Якщо я:
stty raw; cat >test.txt; stty sane
, довжина рядка більше не обмежена, але немає можливості надіслати EOF на коти.
Якщо я вмикаю eof char:
stty raw icanon eof '^d'; cat >test.txt; stty sane
довгі лінії втрачаються.
Крім того, якщо я не відключаю ехо за допомогою:
stty -echo
, комбінація Solaris 10 і Putty приводить до втрати великих блоків тексту ~ 1500харчів, іноді в результаті виникає порожній файл.
Найближче до мене те, що я хочу, - це вбити кота з таймаутом:
( sleep 15; pkill cat ) & stty raw -echo; cat >test.txt; stty sane; echo done
або використовувати bash --noediting з сирим:
bash --noediting
stty raw -echo icrnl
cat <<'EOF' >test.txt; stty sane
xclip -o > test.txt
, ця хитрість робить для вас.