ChromeOS - Скрипт автозапуска, расположенный на USB-накопителе

Конечно, вы можете использовать цикл, но зачем вам использовать цикл, если он вам не нужен?

В оболочке есть все инструменты для перечисления файлов в каталоге и их подсчета. Основная идея (упакованная в функцию) - это

count_files () {
  set *
  echo $#
}

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

  • Если имя первого файла начинается с - , это интерпретируется как опция для установки . Легко решается с помощью набора - * .
  • Если подходящих файлов нет, * остается без изменений. Если вы хотите быть переносимым на оболочки POSIX, вам нужно обработать этот особый случай. Если вы можете позволить себе требовать ksh, bash или zsh, у них есть способы получше.
  • Это исключает файлы точек (файлы, начинающиеся с . ). Их нужно включать отдельно. В glob . * перечислены файлы точек, включая . и .. , кроме pdksh и всех других потомков оболочки Forsyth и zsh (и bash , если GLOBIGNORE не пусто). Предполагая, что их не следует считать, просто вычтите 2.

Решение POSIX:

count_files () {
  set -- * .*
  if [ "$1" = "*" ] && ! [ -e "$1" ] && ! [ -L "$1" ]; then
    shift # Remove the * which didn't match any file
  fi
  echo $#
}

Решение Ksh93:

function count_files {
  typeset FIGNORE='@(.|..)'
  set -- ~(N)
  echo $#
}

Решение Bash:

count_files () (
  shopt -s dotglob nullglob
  set -- *
  echo $#
)

Решение Zsh:

count_files () {
  emulate -LR zsh
  set -- *(DN)
  echo $#
}
-1
11.04.2019, 01:26
1 ответ

Решение грубой силы :Эмуляция USB-клавиатуры для отправки необходимых команд. (Вы должны потребовать от пользователя включить режим разработчика и перейти к определенному начальному состоянию, чтобы вы знали, какие нажатия клавиш требуются.)

Вы не будете первым, кто будет использовать фальшивую клавиатуру для развертывания Chromebook. См., например, Многоножка . Вы можете объединить клавиатуру и хранилище на одном USB-накопителе, который также действует как USB-концентратор, чтобы иметь несколько идентификаторов устройств.

0
28.01.2020, 05:12

Теги

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