Автозавершение для Make-файла управляет в tcsh

while ! ping -W 1 -c 4 www.google.com >& /dev/null ||
      ! ping -W 1 -c 4 www.yahoo.com >& /dev/null; do
  sleep 600
done

Хотя я просто протестировал бы возможность соединения к IP-адресу; 8.8.8.8 общедоступный сервер DNS Google (он имеет очень высокую доступность). Тестирование, работает ли DNS, ненадежно так или иначе, потому что запись может быть в кэше.

while ! ping -W 1 -c 1 8.8.8.8 >&/dev/null; do sleep 600; done

Ping является не всегда лучшим способом проверить интернет-соединение. Много мест (особенно корпоративные сети) блок все кроме веб-доступа. Можно протестировать, работает ли сеть путем загрузки файла с высоконадежного сервера. Это тестирует DNS также, по крайней мере, с точки зрения Прокси HTTP (который снова является часто что вопросы).

while ! wget -q -O /dev/null --no-cache http://www.google.com/; do sleep 6000; done
4
19.02.2012, 01:39
2 ответа

Необходимо добавить вызовы к complete к Вашей оболочке запускают файл (~/.tcshrc). По-видимому, Ваше поле SuSE предопределило правила для make; ищите их в /etc/csh.cshrc или некоторый другой файл, обеспеченный вместе с tcsh (rpm -ql tcsh).

tcsh распределение идет с некоторыми завершениями в качестве примера (Debian вставляет их /usr/share/doc/tcsh/examples/complete.tcsh.gz); вот тот для make:

complete make \
    'n/-f/f/' \
    'c/*=/f/' \
    'n@*@`cat -s GNUmakefile Makefile makefile |& sed -n -e "/No such file/d" -e "/^[^     #].*:/s/:.*//p"`@'
2
27.01.2020, 20:58
  • 1
    Еще раз спасибо @Gilles, "получая" тот файл в Debian дает мне сразу автозавершение для make –  nozimica 22.02.2012, 00:54
  • 2
    я попробовал это в соответствии с Mac OS, но получите следующий результат: make `cat -s GNUmakefile Makefile makefile |& sed -n -e "/No such file/d" -e "/^[^ #].*:/s/:.*//p"`: No match. –  Stefan Müller 07.10.2012, 13:49

Используя этот ответ на StackOverflow , чтобы использовать саму make для вычисления всех доступных целей и объединения этого в пример сценария Debian как показано в , другой ответ здесь и затем добавление еще, это дает:

alias complete_make_target_filter 'awk -F: '"'"'/^[a-zA-Z0-9][^\$#\/\t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}'"'"

complete make \
    'n/--assume-old/f/' \
    'n/--assume-new/f/' \
    'n/--directory/d/' \
    'n/--file/f/' \
    'n/--include-dir/d/' \
    'n/--makefile/f/' \
    'n/--new-file/f/' \
    'n/--old-file/f/' \
    'n/--what-if/f/' \
    'n/-d/d/' \
    'n/-f/f/' \
    'c/*=/f/' \
    'n@*@`make -qp  |& grep -v Stop |complete_make_target_filter|xargs echo --always-make --directory -d --debug -e --environment-overrides --file --makefile -i --ignore-errors -I --include-dir -j --jobs -k --keep-going -l --load-average --max-load -L --check-symlink-times -n --just-print --dry-run --recon -o --old-file --assume-old -p --print-database -q --question -r --no-builtin-rules -R --no-builtin-variables -s --silent --quiet -S --no-keep-going --stop -t --touch -v --version -w --print-directory --no-print-directory -W --what-if --new-file --assume-new --warn-undefined-variables`@'

Поместите это вместе с другими изящными сценариями завершения в каталог ~ / .complete / , а затем исходный код их все в вашем ~ / .cshrc , и все готово.

1
27.01.2020, 20:58

Теги

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