Как я могу переписать echo
для печати какого-либо персонажа перед тем, что я передаю ему?Wrap/overwrite function in Bash
Я думал о чем-то вроде этого, не работает:
alias oldecho=echo
echo(){oldecho ==> $1}
Как я могу переписать echo
для печати какого-либо персонажа перед тем, что я передаю ему?Wrap/overwrite function in Bash
Я думал о чем-то вроде этого, не работает:
alias oldecho=echo
echo(){oldecho ==> $1}
Close.
echo() { builtin echo "==>" "[email protected]"; }
builtin
заставляет остальная часть команды, которая будет выполнена в виде встроенной команды, которая упрощает Переопределение встроенных команд.
Ваша проблема, однако, не заключалась в цитировании >
.
Я не совсем уверен, что вы имеете в виду, но, возможно, это поможет ...
alias echo='/bin/echo ==\> $*'
... где я предполагаю, что ==>
являются символы, которые вы всегда хотели в начале.
(обратите внимание на обратную косую черту \
, что вам нужно, чтобы предотвратить >
от интерпретируется как редирект.)
Но 'echo' почти всегда вызывается как встроенная команда оболочки, редко вызывая'/bin/echo'. Особенно в bash, о чем спрашивает OP. –
Так измените его на 'builtin echo'. – tripleee
как я мог положить войти перед стрелкой? – juanpastas
+1 для использования 'builtin' и определения проблемы с unquoted' ==> '. @juanpastas: используйте '$ '\ n ==>'' или перед командой 'builtin' с' printf '\ n'' или даже другим 'встроенным эхом'. – mklement0
echo -ne "\ n ==>" будет префикс новой строки – Jeff