Как насчет exec zsh
?
Но эта функция действительно может быть реализована в bash (начиная с версии 4.0; Пользователи OSX, см. предыдущий абзац ). Вроде. Когда bash встречает команду, которой нет в PATH
, он запускает функцию с именем command_not_found_handle
. Вы можете написать функцию, которая пытается открыть файл, если это файл в текущем каталоге.
typeset -A extension_aliases
command_not_found_handle () {
if [[ $# -eq 1 && -e $1 && $1 = *.* ]]; then
local handler="${extension_aliases[${1##*.}]}"
if [[ -n $local_handler ]]; then
eval "$local_handler \"\$@\""
return
fi
fi
return 127
}
Вместо alias -s txt=nano
используйте extension_aliases[txt]=nano
.
У этого подхода есть ограничения. Файл должен находиться в текущем каталоге, поскольку command_not_found_handle
вызывается только с именем команды, не содержащим косую черту. Также вы не получите завершение для имени файла.
Гораздо проще использовать существующие механизмы:
xdg-open word.txt
или в Debian и его производных
see word.txt
Вы получаете множество преимуществ :уже имеется системная база данных, которая сопоставляет расширения с программами, завершение будет работать и не требует какой-либо специальной обработки со стороны оболочки. Это требует немного больше ввода, но вы можете определить для него псевдоним из одного -символа (, вам понадобится пробел после него )или привязка клавиш, которая вставляет xdg-open
в начало строка:
bind -x '"\eo": READLINE_LINE="xdg-open $READLINE_LINE"; READLINE_POINT+=9'
Трассировка пакетов показывает, что вы запрашиваете не тот хост.
ping 192.168.100.10
Это правильно, поскольку он ссылается на хост 192.168.100.10:
10:47:58.008033 IP 192.168.100.102 > 192.168.100.10: ICMP echo request, id 30744, seq 1, length 64
10:47:58.008323 IP 192.168.100.10 > 192.168.100.102: ICMP echo reply, id 30744, seq 1, length 64
dig type=soa @192.168.100.10
Здесь трассировка пакета показывает, что вы на самом деле запрашиваете 192.168.1.10, что означает, что команда dig
, которую вы нам дали (и предположительно которую вы собираетесь ввести ), не соответствует действительности. вашей командной строки:
10:49:07.650494 IP 192.168.100.102.40815 > 192.168.1.10.53: 35773+ [1au] NS?. (40)
10:49:07.650826 IP 192.168.100.1 > 192.168.100.102: ICMP host 192.168.1.10 unreachable, length 36