2015-10-02 4 views
0

У меня есть псевдоним слияния двух сценариев. После псевдонима работает отлично в моей установке ОССкопировать вывод сценария оболочки в файл

alias build_command 'directory_1/foo.sh build' 
alias copy_command 'directory_2/bar.sh' 
alias build_copy 'build_command && copy_command' 
alias bc build_copy 

Проблема, когда я хочу, чтобы сбросить терминал вывод в файл. Может ли кто-нибудь рассказать мне, как я могу это сделать? FYI, я попытался bc > temp.txt в терминале, но не работает, и я не позволяют изменять сборки и копировать сценарий :(

Заранее спасибо :)

+0

Во-первых, вы не должны использовать псевдонимы, но функции. Теперь, если вы действительно хотите использовать свой псевдоним 'bc' и перенаправить вывод, используйте:' {bc; }> temp.txt', в противном случае перенаправляется только вывод команды copy_command. –

ответ

0

От man bash:

Для почти каждая цель, алиасы заменяются функциями оболочки.


Проблема при входе bc > temp.txt что Баш расширяет псевдонимы:

directory_1/foo.sh build && directory_2/bar.sh > temp.txt 

так, что только выход directory_2/bar.sh перенаправляется.

Чтобы исправить это, используйте:

{ bc; } > temp.txt 

так, что благодаря группировке, выход полной команды перенаправляется.


Другим вариантом является использование функции:

bc() { build_copy; } 

и теперь bc > temp.txt делать то, что вы ожидаете.


На стороне записки: bc является довольно скудный выбор имени, как уже есть утилита под названием bc ...

Смежные вопросы