Чтобы ответить на ваш вопрос относительно «больше истории». Нет функции CD -
в Bash только поддерживает один каталог, который вы можете «перевернуть» обратно. Как @ramesh государства в его ответе. Если вы хотите более длинную историю каталогов, вы можете использовать Pushd
и POPD
, чтобы сохранить каталог или вернуться к предыдущему.
Вы также можете увидеть список того, что в данный момент в стеке с командой Dirs
.
Из этого ответа можно найти подробное объяснение: Как использовать команды pushd и popd? .
-121--10531-
Это невозможно, потому что диапазон действительности различных кодировков.
Вы можете не понравиться ответ, но это факты, на мой взгляд.
Если игнорировать случай (
, то можно просто проверить, является ли -hosts
одним из более ранних слов:
(...)
for ((i=1;i<COMP_CWORD;i++)); do
if [ "-hosts" == "${COMP_WORDS[i]}" ]; then
_known_hosts_real -a "$cur"
return 0
fi
done
case "${prev}" in
Я не уверен, что можно создать такое автозаполнение правила для разделенных пространственным хостам. Но если вы не возражаете, используете запятые списки, то:
_myhost () {
local cur prev opts
_get_comp_words_by_ref cur prev
opts='-hosts'
servers='name1 name2 name3'
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
else
case "${prev}" in
-hosts)
if [[ "$cur" == *,* ]]; then
local realcur prefix
realcur=${cur##*,}
prefix=${cur%,*}
COMPREPLY=( $(compgen -W "${servers}" -P "${prefix}," -- ${realcur}) )
else
COMPREPLY=( $(compgen -W "${servers}" -- ${cur}) )
fi
;;
*)
# do nothing
;;
esac
fi
}
complete -F _myhost myhost