Используйте двоеточие в качестве разделителя имени файла в завершении вкладки zsh

На самом деле это не ответ, но комментарий здесь не работает, и это инструмент устранения неполадок, который может помочь получить ответ.

Этот скрипт DTrace даст хорошее представление о том, на что ядро ​​вашей системы тратит свое время:

#!/usr/sbin/dtrace -s

#pragma D option quiet

profile:::profile-1001hz
/ arg0 /
{
    @hot[ arg0 ] = count();
}

dtrace:::END
{
    printa( "%@u %a\n", @hot );
}

Он фиксирует множество примеров текущей функции всех потоков ядра, поэтому, если ваша система тратит много времени на выполнение небольшого набора задач, этот небольшой сценарий очень быстро обнаружит это.

Чтобы увидеть реальный стек ядра, вы можете использовать

#!/usr/sbin/dtrace -s

#pragma D option quiet

profile:::profile-1001hz
/ arg0 /
{
    @hot[ stack() ] = count();
}

dtrace:::END
{
    printa( "%@u %a\n", @hot );
}

Сохраните его в файл, такой как hot.d, сделайте файл исполняемым с чем-то вроде chmod 755 hot.d, затем запустите его как root:./hot.d. Он не будет излучать никакого вывода. Дайте ему поработать некоторое время, например, 30 секунд или около того. Затем нажмите CTRL-C, чтобы остановить его. Затем он выдаст все выбранные текущие функции ядра или трассировки стека, с которыми он столкнулся во время работы, в порядке возрастания того, сколько раз наблюдалась эта конкретная трассировка стека.

Последние несколько функций или трассировки стека в выходных данных, скорее всего, покажут, на что ваша система тратит большую часть своего времени.

Например, если ваше ядро ​​тратит большую часть своего времени на что-то вроде объединения фрагментированных страниц памяти в большие страницы, необходимые для базы данных Oracle, вы сразу увидите это.

Запустите его в гипервизоре Solaris 11, а затем в каждой из глобальных зон.

3
14.01.2019, 03:51
1 ответ

Это старая публикация, но в качестве резюме, в.zshrc

function aftercolon() {
  compset -P '*:'                   # strip stuff up to last :
  compset -S ':*'                   # strip stuff after next colon
  _default -r '\-\n\t /:' "$@"      # do default completion on this
}
compdef aftercolon -first-

Теперь я мог дополнять имя файла после двоеточия и в zsh,

$ scp:/path/to/somef<TAB>  # now filename completion works after colon
1
05.09.2020, 02:37

Теги

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