Невозможно отвязать функцию оболочки

Этот вопрос основан на потоке.

У меня есть функция оболочки

function man()
{       
    man "$1" > /tmp/manual; less /tmp/manual 
}

Проблема в том, что существует командный человек.

Как вы можете заменить команду моей командой?


person Léo Léopold Hertz 준영    schedule 27.06.2009    source источник


Ответы (1)


Замените man «$1» на имя пути: /usr/bin/man. Или измените его, чтобы использовать «какой мужчина» в обратных кавычках. Затем запустите свой скрипт в текущей оболочке. В bash/ksh вам нужно сохранить свой скрипт в каком-нибудь файле, скажем, man.sh, а затем запустить его как «. ./ман.ш'.

cat > man.sh
function man()
{       
    /usr/bin/man "$1" > /tmp/manual; less /tmp/manual 
}
^D

. ./man.sh

Вы поняли идею. Вы можете отменить определение функции в любое время: unset -f man

person Ryan Oberoi    schedule 27.06.2009
comment
О, еще одна вещь. Вероятно, вы захотите использовать $* вместо $1 в своей функции. - person Ryan Oberoi; 28.06.2009
comment
$*, кажется, предпочитает все параметры от 1,2,3,... Это может быть полезно. Однако я не могу понять, как вы читаете руководства по % man emacs vim % - person Léo Léopold Hertz 준영; 28.06.2009
comment
Хорошо. $* будет полезен при использовании man -3C printf. И тогда ваша функция будет поддерживать всю семантику традиционного человека. Если вы запустите man emacs vim, вы можете перейти к следующему человеку, набрав q в моей системе. - person Ryan Oberoi; 28.06.2009
comment
@Ryan: я использую OS/X. У него нет опции -3C: Какова его цель? --- $* не работает, как вы описываете, в OS/X. Я также запускаю $1 $2 безуспешно. --- Не могли бы вы объяснить, какие функции я упускаю, если не использую $*, пожалуйста. - person Léo Léopold Hertz 준영; 28.06.2009
comment
OS/X имеет man -S для указания раздела. Также ознакомьтесь с кратким введением на rose-hulman.edu/~defoe/HowTo/ index.html. Удачи. - person Ryan Oberoi; 28.06.2009
comment
Я нашел ошибку в команде. Если я использую хотя бы одну опцию в man, то команда не работает. - person Léo Léopold Hertz 준영; 03.07.2009
comment
@Masi: это то, что говорил Райан! если вы хотите использовать опции, используйте $* или $@ вместо $1... - person Stobor; 03.07.2009