Как Bash/Zsh идентифицирует соответствующую команду во время завершения?

Это можно сделать с помощью ntp или ntpdate.

apt install ntpdate
ntpdate pool.ntp.org

ntpdate в основном полезен для однократной -синхронизации времени. В то время как демон ntp будет работать в фоновом режиме и поддерживать ваши часы в актуальном состоянии :

.
apt install ntp
cat <<EOF >/etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
server pool.ntp.org
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
systemctl start ntp
systemctl enable ntp

Хотя, возможно, вы просто используете неправильный часовой пояс. Некоторые GMT ​​-3 например:

ln -sf /usr/share/zoneinfo/America/Argentina/Buenos_Aires /etc/localtime
1
08.11.2020, 01:50
1 ответ

What function is bash/zsh running to "identify" the relevant command or determine whether or not there is a command to complete on at all?

Когда вы нажимаете tab, readline выполняет функцию complete.

Вы можете переопределить это в~/.inputrc:

"\t": complete

completeопределяется в lib/readline/funmap.cкак:

static const FUNMAP default_funmap[] = {
[..]
{ "complete", rl_complete },

rl_completeможно найти вlib/readline/complete.c(просмотрите источник):

/* Complete the word at or before point.  You have supplied the function
   that does the initial simple matching selection algorithm (see
   rl_completion_matches ()).  The default is to do filename completion. */
int
rl_complete (int ignore, int invoking_key)
{
..

Это отправная точка. Он разбивает слова, проверяет, какие завершения зарегистрированы, а затем ищет соответствующие завершения.

Zsh, вероятно, будет иметь аналогичную реализацию.

Существует также хорошее объяснение процесса здесь .

2
18.03.2021, 22:51

Теги

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