Принятие eth1 и eth5, по крайней мере, установлено на ONBOOT=yes
(хотя это не имеет никакой другой конфигурации), можно использовать POST_UP_SCRIPT
переменная в ifcfg-eth5
назвать a sleep 5
.
Или, наоборот, в ifcfg-bond0
набор PRE_UP_SCRIPT
дать eth5 некоторое время для урегулирования.
Сравните с документацией SuSe.
Завершение команда (наряду с другими вещами) обрабатывается через bash завершение строки чтения . Это работает на несколько более низком уровне, чем обычное «программируемое завершение» (которое вызывается только тогда, когда команда идентифицирована, и в двух особых случаях, которые вы определили выше).
Обновление: новый выпуск bash-5.0 (январь 2019 г.) добавляет complete -I
именно для этой проблемы.
Соответствующие команды readline:
complete (TAB) Попытка выполнить завершение для текста перед точкой. Bash пытается завершить, рассматривая текст как переменную (если текст начинается с $), имя пользователя (если текст начинается с ~), имя хоста (если текст начинается с @) или команду (включая псевдонимы и функции) по очереди.Если ни один из них не дает совпадения, выполняется попытка завершения имени файла . complete-command (M -!) Попытка завершения текста перед точкой, обрабатывая это как имя команды . Завершение команды пытается сопоставить текст с псевдонимами, зарезервированными словами, функциями оболочки, встроенными функциями оболочки и, наконец, именами исполняемых файлов в указанном порядке.
Подобным образом. в более распространенный полный -F
, часть этого может быть передана функции с помощью bind -x
.
function _complete0 () {
local -a _cmds
local -A _seen
local _path=$PATH _ii _xx _cc _cmd _short
local _aa=( ${READLINE_LINE} )
if [[ -f ~/.complete.d/"${_aa[0]}" && -x ~/.complete.d/"${_aa[0]}" ]]; then
## user-provided hook
_cmds=( $( ~/.complete.d/"${_aa[0]}" ) )
elif [[ -x ~/.complete.d/DEFAULT ]]; then
_cmds=( $( ~/.complete.d/DEFAULT ) )
else
## compgen -c for default "command" complete
_cmds=( $(PATH=$_path compgen -o bashdefault -o default -c ${_aa[0]}) )
fi
## remove duplicates, cache shortest name
_short="${_cmds[0]}"
_cc=${#_cmds[*]} # NB removing indexes inside loop
for (( _ii=0 ; _ii<$_cc ; _ii++ )); do
_cmd=${_cmds[$_ii]}
[[ -n "${_seen[$_cmd]}" ]] && unset _cmds[$_ii]
_seen[$_cmd]+=1
(( ${#_short} > ${#_cmd} )) && _short="$_cmd"
done
_cmds=( "${_cmds[@]}" ) ## recompute contiguous index
## find common prefix
declare -a _prefix=()
for (( _xx=0; _xx<${#_short}; _xx++ )); do
_prev=${_cmds[0]}
for (( _ii=0 ; _ii<${#_cmds[*]} ; _ii++ )); do
_cmd=${_cmds[$_ii]}
[[ "${_cmd:$_xx:1}" != "${_prev:$_xx:1}" ]] && break
_prev=$_cmd
done
[[ $_ii -eq ${#_cmds[*]} ]] && _prefix[$_xx]="${_cmd:$_xx:1}"
done
printf -v _short "%s" "${_prefix[@]}" # flatten
## emulate completion list of matches
if [[ ${#_cmds[*]} -gt 1 ]]; then
for (( _ii=0 ; _ii<${#_cmds[*]} ; _ii++ )); do
_cmd=${_cmds[$_ii]}
[[ -n "${_seen[$_cmds]}" ]] && printf "%-12s " "$_cmd"
done | sort | fmt -w $((COLUMNS-8)) | column -tx
# fill in shortest match (prefix)
printf -v READLINE_LINE "%s" "$_short"
READLINE_POINT=${#READLINE_LINE}
fi
## exactly one match
if [[ ${#_cmds[*]} -eq 1 ]]; then
_aa[0]="${_cmds[0]}"
printf -v READLINE_LINE "%s " "${_aa[@]}"
READLINE_POINT=${#READLINE_LINE}
else
: # nop
fi
}
bind -x '"\C-i":_complete0'
Это включает ваши собственные перехватчики для каждой команды или строки префикса в ~ / .complete.d /
. Например. если вы создадите исполняемый файл ~ / .complete.d / loc
с:
#!/bin/bash
echo localc
Это будет делать (примерно) то, что вы ожидаете.
Вышеупомянутая функция доходит до некоторой длины, чтобы имитировать нормальное поведение завершения команды bash, хотя это несовершенно (особенно сомнительный sort | fmt | столбец
для отображения списка совпадений).
Однако , нетривиальная проблема с этим, он может использовать только функцию для замены привязки к основной функции complete
(по умолчанию вызывается с помощью TAB).
Этот подход будет хорошо работать с другим связыванием клавиш, используемым только для пользовательского завершения команды, но он просто не реализует полную логику завершения после этого (например, более поздние слова в командной строке). Это потребует синтаксического анализа командной строки, работы с позицией курсора и других сложных вещей, которые, вероятно, не должны рассматриваться в сценарии оболочки ...
Не знаю, понял ли я, что вам это нужно ...
Это будет означать, что ваш bash знает только одну команду, начинающуюся с f
.
Основная идея завершения: если это неоднозначно, выведите возможные варианты.
Таким образом, вы можете установить свой PATH
в каталог, содержащий только эту одну команду, и отключить все встроенные функции bash, чтобы получить эту работу.
В любом случае, я могу предложить вам обходной путь:
alias _='true &&'
complete -W foo _
Итак, если вы наберете _
, он завершится до _ foo
, который выполнит foo
.
Тем не менее, псевдоним f = 'foo'
был бы намного проще.
Проблема заключалась в том, что я не запускал /bin/bash --login
до того, как установил Jekyll
Большинство просто используют экспорт LC_ALL=C,make скрипта с ls, сортировкой и т.д. а затем вернуться к любимому LC, в моем случае UTF8.
-121--71772-Выполните приведенную ниже команду, чтобы найти, где установлен двоичный файл mplayer:
which mplayer
ИЛИ используйте путь к двоичному файлу mplayer, если вы уже знаете об этом, в приведенной ниже команде:
ln -s /path/to/mplayer /bin/mplayer
В идеале все, что вы вводите, выполняется поиск во всех каталогах, указанных в переменной $ PATH
.
Простым ответом для вас будет
$ cd into /etc/bash_completion.d
$ ls
только основные выходы
autoconf gpg2 ntpdate shadow
automake gzip open-iscsi smartctl
bash-builtins iconv openssl sqlite3
bind-utils iftop perl ssh
brctl ifupdown pkg-config strace
bzip2 info pm-utils subscription-manager
chkconfig ipmitool postfix tar
configure iproute2 procps tcpdump
coreutils iptables python util-linux
cpio lsof quota-tools wireless-tools
crontab lvm redefine_filedir xmllint
cryptsetup lzma rfkill xmlwf
dd make rpm xz
dhclient man rsync yum.bash
e2fsprogs mdadm scl.bash yum-utils.bash
findutils module-init-tools service
getent net-tools sh
просто добавьте нужную программу для автоматического завершения bash
.