Почему ln -s принимает один аргумент

Во-первых, используйте функции для чего-нибудь нетривиального; тривиальным псевдонимом будет установка флага по умолчанию:

# no license spam
alias gdb='gdb -q'

почти для всего более сложного я использую функцию.

Два, команда относится к команде, такой как / bin / ls или тому подобное; псевдонимы не являются командами и не являются командами функций. Скорее всего, у вас нет команды win , поэтому команда win не сможет вызвать функцию, поскольку это не команда.

«Бесконечные» циклы действительно легко создать, кстати

alias fooalias=foofunc
function foofunc() { fooalias; }

, поэтому, если вы пишете функцию с тем же именем, что и команда , тогда команда становится действительно удобно, так что оболочка не пытается вызывать функцию вечно:

# loops until stack death or segfault or something
function xterm() { xterm ... }

# good
function xterm() { command xterm ... }

Если вы просто пытаетесь заставить какую-то другую функцию вызывать что-то еще, что может быть командой или функцией, просто вызовите ее как есть. Тот, кому нужно вызвать команду, должен использовать команду .

function winwinwin () { winwin ... }
function winwin () { win ... }
function win () { xterm ... }
function xterm () { command xterm ... }

winwinwin вызовет функцию winwin вызовет функцию win вызовет функцию xterm , а затем вместо этого вызовет именованный ] команда .

На передней панели функция это необязательно, но я использую его, поскольку он упрощает поиск функций ( fgrep function ... ), чем необходимость искать то, что следует возможно, пробелы и ээээээээээээээээээээээээээ, нужно ли экранировать паренсы в движке регулярных выражений, который я использую? Что касается приоритета, легко сделать тесты или распечатать уведомления, которые показывают, что происходит:

ls () { ls -k; echo funcall; }
alias ls='echo blat'
ls

В общем, вероятно, лучше сначала определить функции, а псевдонимы после того, как они будут установлены, для наименьшего удивления:

bash-4.1$ alias ls='echo blat'
bash-4.1$ ls () { command ls -k; echo funcall; }
bash: syntax error near unexpected token `('
bash-4.1$ function ls () { command ls -k; echo funcall; }
bash-4.1$ 
27
05.08.2015, 12:06
0 ответов

Теги

Похожие вопросы