2017-01-25 19 views
1

Я пишу команды, которые делают что-то вроде ./script > output.txt, чтобы я мог использовать файлы в более поздних сценариях, например ./script2 output.txt otherFile.txt> выход2.txt. Я удаляю их все в конце скрипта, но когда я тестирую некоторые вещи или отлаживаю, сложно найти все мои подкаталоги и файлы, созданные в скрипте. Является лучшим вариантом для создания скрытого файла?Есть ли способ сохранить вывод команд bash в «файл/переменную» в bash без создания файла в вашем каталоге

+0

У вас есть [mktemp] (https://www.mktemp.org)? – dawg

+0

@dawg Я не уверен, я не слышал об этом до – Jacob

+0

Если у вас есть основные утилиты GNU или Linux, это часть пакета. В противном случае просто создайте каталог (скрытый, если хотите) на '/ tmp' и используйте его. – dawg

ответ

2

Как всегда, существует множество способов сделать это. Если вы хотите, чтобы избежать файлов в целом, вы можете сохранить вывод (STDOUT) из команды в переменной и передать его на следующую команду в файл с помощью <() оператора:

output=$(cat /usr/include/stdio.h) 
cat <(echo "$output") 

В качестве альтернативы, вы можете сделать это в одной командной строке:

cat <(cat /usr/include/stdio.h) 

Это предполагает, что следующей команде строго требуется файл для ввода.

Я стараюсь избегать временных файлов, когда это возможно, для устранения необходимости в шаге очистки, который выполняется во всех случаях, если не требуется обработка больших объемов данных.