2014-06-23 7 views
2

Как я могу переписать echo для печати какого-либо персонажа перед тем, что я передаю ему?Wrap/overwrite function in Bash

Я думал о чем-то вроде этого, не работает:

alias oldecho=echo 
echo(){oldecho ==> $1} 

ответ

4

Close.

echo() { builtin echo "==>" "[email protected]"; } 

builtin заставляет остальная часть команды, которая будет выполнена в виде встроенной команды, которая упрощает Переопределение встроенных команд.

Ваша проблема, однако, не заключалась в цитировании >.

+0

как я мог положить войти перед стрелкой? – juanpastas

+1

+1 для использования 'builtin' и определения проблемы с unquoted' ==> '. @juanpastas: используйте '$ '\ n ==>'' или перед командой 'builtin' с' printf '\ n'' или даже другим 'встроенным эхом'. – mklement0

+1

echo -ne "\ n ==>" будет префикс новой строки – Jeff

0

Я не совсем уверен, что вы имеете в виду, но, возможно, это поможет ...

alias echo='/bin/echo ==\> $*'

... где я предполагаю, что ==> являются символы, которые вы всегда хотели в начале.

(обратите внимание на обратную косую черту \, что вам нужно, чтобы предотвратить > от интерпретируется как редирект.)

+1

Но 'echo' почти всегда вызывается как встроенная команда оболочки, редко вызывая'/bin/echo'. Особенно в bash, о чем спрашивает OP. –

+0

Так измените его на 'builtin echo'. – tripleee