То, о чем вы просите, является псевдонимом.
Невозможно сделать все, что вы просите, не используя одну или несколько функций.
Но есть способ сделать псевдоним определить некоторые функции, а также их называют:
alias medit='
SayError(){ local a=$1; shift; printf "%s\n" "$0: [email protected]" >&2; exit "$a"; }
medit(){
[[ $# -lt 1 ]] &&
SayError 1 "We need at least the name of the file as an argument"
[[ ! -s $1 ]] && echo "#!/bin/bash" > "$1" ||
SayError 2 "File $1 already exists"
chmod u+x "$1" ||
SayError 3 "File $1 could not be made executable"
${VISUAL:-${EDITOR:-emacs}} "$1" ||
SayError 4 "File $1 could not be open in the editor"
}
\medit'
Вы должны выполнить приведенное выше определение псевдонима medit
или поместить его в ~/.bashrc
, или просто источником его в управлении чтобы он существовал.
Затем, когда вызывается псевдоним, он определяет две функции: SayError
и medit
.
Да, функция с тем же именем, что и псевдоним: medit
.
После определения функции, псевдоним будет вызывать функцию, используя хитрость:
\medit
As (строго говоря) а \medit
не совсем псевдоним medit
, Баш продолжает искать и находит функцию medit
, который к тому времени был определен и выполнен.
Конечно, вы можете просто определить функции и использовать их, не прибегая к псевдониму для определения функций, это ваш выбор.
Приятно иметь выбор. :)
Это, как вы могли бы определить все в соерсед файле:
alias medit='\medit'
SayError(){ local a=$1; shift; printf "%s\n" "$0: [email protected]" >&2; exit "$a"; }
medit(){
[[ $# -lt 1 ]] &&
SayError 1 "We need at least the name of the file as an argument"
[[ ! -s $1 ]] && echo "#!/bin/bash" > "$1" ||
SayError 2 "File $1 already exists"
chmod u+x "$1" ||
SayError 3 "File $1 could not be made executable"
${VISUAL:-${EDITOR:-emacs}} "$1" ||
SayError 4 "File $1 could not be open in the editor"
}
Я бы 'тест -f' файла перед созданием нового. –