#linux #bash #shell
#linux #bash #оболочка
Вопрос:
Как я могу переписать echo
, чтобы напечатать какой-либо символ, прежде чем что-либо передать ему?
Я думал о чем-то подобном, что не работает:
alias oldecho=echo
echo(){oldecho ==> $1}
Ответ №1:
Закрыть.
echo() { builtin echo "==>" "$@"; }
builtin
принудительно выполняет остальную часть команды как встроенную, что упрощает повторную реализацию встроенных функций.
Однако ваша проблема заключалась не в цитировании >
.
Комментарии:
1. как я мог поставить ввод перед стрелкой?
2. 1 за использование
builtin
и обнаружение проблемы с помощью unquoted==>
. @juanpastas: Используйте$'n==>
‘ или предшествуйтеbuiltin
команде сprintf 'n'
, или даже другойbuiltin echo
.3. echo -ne «n==>» добавит новую строку
4. @juanpastas: В дополнение к другим предложениям, простой способ — просто нажать клавишу ввода сразу после ввода первого
"
(то есть перед"
и первым=
).
Ответ №2:
Я не совсем уверен, что вы имеете в виду, но, возможно, это поможет…
alias echo='/bin/echo ==> $*'
… где я предполагаю ==>
, что это символы, которые вы всегда хотите добавить.
(обратите внимание на обратную косую
черту, которая вам нужна >
, чтобы предотвратить интерпретацию как перенаправление.)
Комментарии:
1. Но
echo
почти всегда вызывается как встроенная команда оболочки, редко вызываемая/bin/echo
. Особенно в bash, о чем спрашивает OP.2. Так что измените его на
builtin echo
.