есть скрипт условно вида
echo "blablabla"> file1 | proga1 < file1 > file2возник вопрос:
как скормить программе proga1 file1 не производя его запись на диск,поскольку диск ноутбучный ssd и запись пары миллиардов file убьют его нафиг :(
proga1 умеет брать данные только из файла
мысли решения кроме ram-диска не приходят,но явно же должен быть другой вариант
> echo "blablabla"> file1 | proga1 < file1 > file2
> как скормить программе proga1 file1 не производя его запись на диск,поскольку
> proga1 умеет брать данные только из файла
> мысли решения кроме ram-диска не приходят,но явно же должен быть другой вариантЧто если проге1 вместо настоящего файла подсунуть трубу (pipe, FIFO), а данные заливать в другой конец этой трубы? Как-то так (не проверял):
$ mkfifo pipe
$ proga1 pipe &
$ echo "blablabla" > pipeС прогами, читающими файлы строго последовательно, такое обычно хорошо прокатывает.
>> echo "blablabla"> file1 | proga1 < file1 > file2
>> как скормить программе proga1 file1 не производя его запись на диск,поскольку
>> proga1 умеет брать данные только из файла
>> мысли решения кроме ram-диска не приходят,но явно же должен быть другой вариант
> Что если проге1 вместо настоящего файла подсунуть трубу (pipe, FIFO), а данные
> заливать в другой конец этой трубы? Как-то так (не проверял):Он тащем-та это и написал. Только пару лишних под-строк '> file1' и '< file1' нагенерил:
echo "blablabla" | proga1 > file2
Некоторые эстеты написали бы даже:
proga1 <<<"blablabla" > file2
Далее... Перечитываею отквоченное и ещё раз перечитываю...>> proga1 умеет брать данные только из файла
proga1 <( echo "blablabla" ) >file2
- даст проге именно имя _созданного _шелом пайпа в arg[1].
> Он тащем-та это и написал. Только пару лишних под-строк '> file1' и
> '< file1' нагенерил:Да нет, у него труба получилась бы безымянная, а proga1, судя по всему, хочет файл с именем из командной строки своей.
> echo "blablabla" | proga1 > file2
> Некоторые эстеты написали бы даже:
> proga1 <<<"blablabla" > file2Эстетов оставим в покое :-)
> Далее... Перечитываею отквоченное и ещё раз перечитываю...
>>> proga1 умеет брать данные только из файла
> proga1 <( echo "blablabla" ) >file2
> - даст проге именно имя _созданного _шелом пайпа в arg[1].Верно, но это же башизм, если мне не изменяет склероз.
> Верно, но это же башизм, если мне не изменяет склероз.Глазасный! Углядел требование поссикс-совместимости в указании раздела = "(Разное)"?
___сработало - bash,zsh,ksh(ужос!"AT&T"?!), не сработало tcsh,dash
>> Верно, но это же башизм, если мне не изменяет склероз.
> Глазасный! Углядел требование поссикс-совместимости в указании раздела = "(Разное)"?
> ___сработало - bash,zsh,ksh(ужос!"AT&T"?!), не сработало tcsh,dashЭх... Ну да, каюсь, есть у меня бзик на совместимости. Даже если точно знаю, что мой скрипт нигде, окромя подконтрольных мне систем выполняться не будет. Однако же когда-то это мне сэкономило кучу времени при переезде с фряхи на линух. А главный минус заключается в том, что порою совершенно банальные скрипты в погоне за совместимостью разрастаются до галактических размеров.
>[оверквотинг удален]
>> заливать в другой конец этой трубы? Как-то так (не проверял):
> Он тащем-та это и написал. Только пару лишних под-строк '> file1' и
> '< file1' нагенерил:
> echo "blablabla" | proga1 > file2
> Некоторые эстеты написали бы даже:
> proga1 <<<"blablabla" > file2
> Далее... Перечитываею отквоченное и ещё раз перечитываю...
>>> proga1 умеет брать данные только из файла
> proga1 <( echo "blablabla" ) >file2
> - даст проге именно имя _созданного _шелом пайпа в arg[1].по разному крутил по всем вариантам самое безобидное получил Syntax error: "(" unexpected
proga1 имя файла хочет реальное
прикрутил пока через tmpfs -работает шустрее, но не по-человечески же это
> по разному крутил по всем вариантам самое безобидное получил Syntax error: "("
> unexpected
> proga1 имя файла хочет реальное
> прикрутил пока через tmpfs -работает шустрее, но не по-человечески же это1. Что за система, что за шелл? (ну там про телепатов и всё такое... :-)
2. Как крутили? Если хотите помощи, постарайтесь изложить, что уже успели предпринять, приведите команды, чтобы не повторяться.
3. Вот, проверил, работает:
$ mkfifo pipe
$ cat pipe > log &
$ echo "blablabla" > pipe
$ cat log
blablabla
[1] + Done cat pipe 1>log
$
> 1. Что за система, что за шелл? (ну там про телепатов и
> всё такое... :-):) да понятно конечно
ubuntu 11.10 пробовал bash и даже csh
> 2. Как крутили? Если хотите помощи, постарайтесь изложить, что уже успели предпринять,
> приведите команды, чтобы не повторяться.все три приведенных способа и пробовал
с echo и cat и у меня работает :) ,а вот с конкретной proga1 -не работает
выкрутился пока прогоном файлов через виртуалку (sudo mount -o remount,size=512m /dev/shm)
> все три приведенных способа и пробовал
> с echo и cat и у меня работает :) ,а вот с
> конкретной proga1 -не работаетЗначит эта прога или читает файл не строго последовательно или пытается определить его размер, или отображает файл в память или ещё как-то отклоняется от обычного простого поведения. Про FIFO можно забыть. Промежуточный файл всё равно придётся делать тем или иным образом.
> есть скрипт условно вида
> echo "blablabla"> file1 | proga1 < file1 > file2
> возник вопрос:
> как скормить программе proga1 file1 не производя его запись на диск,поскольку
> диск ноутбучный ssd и запись пары миллиардов file убьют его нафиг
> :(
> proga1 умеет брать данные только из файла
> мысли решения кроме ram-диска не приходят,но явно же должен быть другой вариантecho "blablabla" | proga1 /dev/stdin file2