Добавить функцию фильтра в/usr/share/zsh/functions/Completion/Unix/_hosts
:
provide_missing_ip() {
while read x ; do
set -- $x
if [ ! "$1" ] || [ "${1%%[^#]*}" ] || [ "$2" ] ; then
echo "$x"
else
ip=`dig +short $2`
[ "$ip" ] || ip="240.0.0.0"
printf "%s\t%s\n" $1 $2
fi
done
}
Как это работает:
dig
. Используйте новую функцию для анализа вывода getent
или < /etc/hosts
в проблемном коде завершения:
if (( ${+commands[getent]} )); then
_cache_hosts=(${(s: :)${(ps:\t:)${(f)~~"$(_call_program hosts getent hosts 2>/dev/null | provide_missing_ip )"}##${~ipstrip}}})
else
_cache_hosts=(${(s: :)${(ps:\t:)${${(f)~~"$(provide_missing_ip
Редактор с поддержкой сценариев делает это довольно просто -вперед!
printf '%s\n' '55m22' 'wq' | ed -s input
Это отправляет две командыed
(для редактирования файла с именем input
):
55m22
--переместить строку 55 после строки 22 wq
--сохранить файл обратно на диск и выйти. В vi
оно несколько длиннее, чем в ed
:
vi input
55Gdd23GPZZ
55G
... перейти к строке 55 dd
... удалить одну строку 23G
... перейти к строке 23 P
... вставьте удаленную строку перед строкой 23 ZZ
... записать файл и выйти