Получите список 3 команд буквы на Mac OS X

Я не уверен точно, как узлы устройства создаются (т.е. точная последовательность событий, которые приводят к их созданию), но я вполне уверен, ядро создает базовые устройства для 63 /dev/ttyN устройства (плюс /dev/tty) внутренне, и udev делает работу предоставления доступа к ним внутри /dev (за исключением /dev/tty и /dev/tty1 которые создаются /etc/init.d/udev-mount с mknod).

Я не думаю, что можно ограничить количество устройств ядра с помощью конфигурации.

Вот обходное решение, если Вы хотите ограничить количество устройств, которые появляются в Вашем /dev все же. Создайте a /etc/udev/rules.d/99-my-tty-rules.rules файл и помещенный что-то как следующее в нем:

KERNEL=="tty[2-9][0-9]", RUN="/bin/rm /dev/%k", OPTIONS+="ignore_device"

Это избавится от tty файлы устройств пронумеровали 20 и выше.

Примечания:

  • Используя rm там выглядит действительно странным, но я не могу найти способ не создать узел во-первых
  • При проигрывании с этими записями немного слишком с энтузиазмом может привести к интересным проблемам - использование с осторожностью.
6
14.07.2012, 02:45
2 ответа

Попробуйте это

compgen -A function -abck | awk 'length($0) == 3'

(редактирование: это - встроенный удар, таким образом, необходимо выполнить его в ударе, и это сразу даст Вам список 3 символьных команд),

9
27.01.2020, 20:23

Быстрый и грязный метод, выполняющий итерации PATH и проверка каждого каталога. Удостоверьтесь Ваш $PATH что-то разумное перед выполнением.

save_IFS=$IFS
IFS=:
for dir in $PATH; do
        for file in "$dir"/???; do # ??? for 3 letter name
                if [ -x "$file" ]; then
                        printf %s\\n "$file"
                fi
        done
done
IFS=$save_IFS
3
27.01.2020, 20:23
  • 1
    printf действительно ли немного является чрезмерным для той задачи, не так ли? Почему нет echo? –  Warren Young 13.07.2012, 21:15
  • 2
    Почему бы не отозваться эхом? Просто персональная привычка к никогда передаче переменных строк к echo, с тех пор echo является чрезвычайно не портативным, когда передаваемые аргументы, которые похожи на опции или содержат обратные косые черты. В этом случае echo был бы, вероятно, прекрасен потому что в любой разумной системе первый символ $dir был бы /, хотя путь мог все еще содержать `, so printf' еще лучше. Как это чрезмерно? Я едва думаю различие в вопросах эффективности для этой задачи. Несколько дополнительных символов ввода сохраняют меня мозговые циклы определения когда передающие переменные непосредственно к echo безопасно. –  jw013 13.07.2012, 21:31
  • 3
    Это, казалось, не работало на меня. Я пытался echo $IFS и получил пустую строку. $ –  Kyle Tolle 13.07.2012, 21:34
  • 4
    @WarrenYoung: printf более гибко, и намного более последователен, чем echo. Я согласовываю это echo почти наверняка хорошо работал бы в этом случае. Оба echo и printf встроенные команды, по крайней мере, в ударе. –  Keith Thompson 13.07.2012, 23:43
  • 5
    я передал бы вывод по каналу через что-то как sed 's,.*/,,' | sort -u удалить имена каталогов и дубликаты полосы, и затем возможно, через fmt таким образом, вывод соответствует на моем экране. –  Keith Thompson 13.07.2012, 23:45

Теги

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