2 или больше программы в том же USB последовательный преобразователь

Вот функция, которая перечисляет содержание каталогов $PATH. Если передаваемые аргументы, функция только перечисляет команды, имя которых содержит один из аргументов. Аргументы интерпретируются как шаблоны шарика.

shopt -s extglob
lspath () {
  local IFS pattern
  IFS='|'
  pattern="*@($*)*"
  IFS=':'
  for d in $PATH; do
    for x in "$d/"$pattern; do
      [ "$x" = "$d/$pattern" ] || echo "${x##*/}"
    done
  done | sort -u
}

Как много вещей, это легче в zsh.

lspath () {
  (($#)) || set ''
  print -lr -- $^path/*$^@*(N:t) | sort -u
}

^ символ в расширении параметра заставляет текст, связанный с массивом быть добавленным к каждому элементу массива, например. path=(/bin /usr/bin); echo $^path/foo печать /bin/foo /usr/bin/foo.
/*$^@* похож на оскорбление комиксов, но на самом деле обычный символ /, подстановочный знак *, специальный параметр $@ (массив позиционного параметра) с ^ модификатор, и снова *.
(N:t) спецификатор шарика N получить пустое расширение, если там не идет ни в какое сравнение сопровождаемый модификатором истории t сохранять только базовое имя (“хвост”) каждого соответствия.

Более загадочный, избегает внешнего вызова, но это только представляет косметический интерес:

lspath () {
  (($#)) || set ''
  local names; names=($^path/*$^@*(N:t))
  print -lr -- ${(ou)names}
}

Можно на самом деле искать apropos команда, которая ищет страницы справочника команд, краткое описание которых содержит ключевое слово. Ограничение - то, что это только находит команды, которые имеют страницу справочника.

2
24.10.2013, 16:35
1 ответ

Короче говоря: ни одна из этих двух программ не будет работать правильно. Вывод из этих двух программ будет объединен и отослал последовательный порт. Вход, входящий через последовательный порт, будет замечен только одной из программ (некоторый вход закончится в одной из программ, некоторый вход закончится в другом, случайным образом).

Из-за этого программы обычно с помощью последовательных портов (uucp традиционно, pppd и эмуляторы терминала в последнее время) реализовали некоторую блокировку. Это - консультативная блокировка (это не осуществляется), с помощью файлов блокировки в некотором предварительно сконфигурированном глобальном каталоге (/var/lock, например).

3
27.01.2020, 22:06

Теги

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