Я пишу команды, которые делают что-то вроде ./script > output.txt
, чтобы я мог использовать файлы в более поздних сценариях, например ./script2 output.txt otherFile.txt
> выход2.txt. Я удаляю их все в конце скрипта, но когда я тестирую некоторые вещи или отлаживаю, сложно найти все мои подкаталоги и файлы, созданные в скрипте. Является лучшим вариантом для создания скрытого файла?Есть ли способ сохранить вывод команд bash в «файл/переменную» в bash без создания файла в вашем каталоге
1
A
ответ
2
Как всегда, существует множество способов сделать это. Если вы хотите, чтобы избежать файлов в целом, вы можете сохранить вывод (STDOUT
) из команды в переменной и передать его на следующую команду в файл с помощью <()
оператора:
output=$(cat /usr/include/stdio.h)
cat <(echo "$output")
В качестве альтернативы, вы можете сделать это в одной командной строке:
cat <(cat /usr/include/stdio.h)
Это предполагает, что следующей команде строго требуется файл для ввода.
Я стараюсь избегать временных файлов, когда это возможно, для устранения необходимости в шаге очистки, который выполняется во всех случаях, если не требуется обработка больших объемов данных.
У вас есть [mktemp] (https://www.mktemp.org)? – dawg
@dawg Я не уверен, я не слышал об этом до – Jacob
Если у вас есть основные утилиты GNU или Linux, это часть пакета. В противном случае просто создайте каталог (скрытый, если хотите) на '/ tmp' и используйте его. – dawg