Вы можете использовать следующую команду:
find /your/path -exec bash -c "if file {} | grep "python"; then cat {} ; fi" \;
Эта команда выполнит file
для всех найденных файлов, и в случае, если вывод этой команды содержит «python», выполняется cat
.
Очевидно, что вы должны адаптировать эту команду к вашим потребностям.
Как указал @glenn -jackman, ваш поиск происходит в подоболочке, где выполняется ваш скрипт, и в конце вашего скрипта вы возвращаетесь в родительскую оболочку, где не происходит никакого поиска, а также.bashrc не выполняется. заново -такое разделение родительской оболочки и подоболочки проистекает из общих соображений безопасности.
То, что вы ищете, это exec bash
, но не внутри вашего скрипта, а сгруппировано с ним, т.е.
bash your-script.sh && exec bash
Это ведет себя так, как если бы вы использовали источник, а затем оставались в той оболочке, из которой вы исходили. Действительно, он заменяет текущую оболочку новой оболочкой, и эта новая оболочка запускается, как и любая (интерактивная )оболочка, с запуска вашего.bashrc, теперь уже с вашими изменениями, и так же запускается каждая новая оболочка. оболочка/терминал, который вы запускаете.
Обратите внимание, что если бы вы использовали команду «exec bash» в своем скрипте, она заменила бы подоболочку, в которой выполняется ваш скрипт, но все равно оставалась бы подоболочкой.
Если вашей целью является динамическая и временная манипуляция с.bashrc, вам следует рассмотреть предложения @glenn -jackman о внесении изменений в отдельные файлы, которые можно легко удалить в любой момент по вашему выбору. Для этого вы также можете просто иметь постоянную линию
[ -f ~/.bashrc-temporary-addons ] && source ~/.bashrc-temporary-addons
в конце вашего.bashrc, а затем выполните (! только один ">" в первой строке для получения нового файла)
echo "" > ~/.bashrc-temporary-addons
echo "export MyDir='MyAnalysis'" >> ~/.bashrc-temporary-addons
echo "alias llA='ll MyAnalysis'" >> ~/.bashrc-temporary-addons
и, по вашему выбору, просто
rm ~/.bashrc-temporary-addons
(Из-за теста «-f» ошибки не будет, если «~/.bashrc -временные -надстройки» не существует ).
Если ваши манипуляции с.bashrc должны существовать в течение всего сеанса, то есть до выхода из системы (, но не появляться снова при следующем входе в систему ), вы можете создать файл .bash_logout
для стирания временных файлов в "bash. d/" или все содержимое "bash.d/", или "~/.bashrc -временные -дополнения".