Звук исчезает через несколько секунд и замолкает

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

Здесь я настроил функцию-оболочку, которая принимает один или два аргумента; первый аргумент - это программа для выполнения (, например.myprogram); второй необязательный аргумент — это каталог, содержащий файлы, которые вы хотите передать программе. Если вы не укажете второй аргумент, по умолчанию используется текущий каталог.

zeio() {
  # Zsh-based Execute with files In Order
  [ -d "${2:-.}" ] || return
  zsh -c "$1 \"${2:-.}\"/*(.om)"
}

Назовите это как хотите, конечно. После быстрой проверки -второго аргумента (еще раз, по умолчанию ., текущий каталог ),мы вызываем zsh с одной строкой в ​​двойных -кавычках, которая содержит программу и некоторые начальные аргументы (аргумент #1 )и каталог (аргумент #2 )— по умолчанию .— с расширением подстановочного знака/шаблона, которое имеет два «квалификатора подстановки» в конце круглых скобок:

  1. .--должны быть обычные файлы (не каталоги или символические ссылки и т. д.)
  2. om--order (сортировать )результирующий список по времени модификации, сначала самые последние

Именно этот квалификатор omglob делает здесь всю реальную работу.

Вот несколько примеров прогонов; myprog— это простой сценарий оболочки для демонстрации аргументов, которые он получает, чтобы:

#!/bin/sh
for arg do
  printf 'Arg: ->%s<-\n' "$arg"
done

и go.sh— это файл, в котором я сохранил функцию. Остальная часть структуры каталогов:

$ tree.
.
├── dir1
│   ├── 203142
│   ├── 203143
│   └── 203144
├── dir3
│   ├── first\012filename
│   ├── this is 3rd
│   └── this is second
├── dir two
│   ├── 203225
│   ├── 203226
│   └── 203227
├── go.sh
└── myprog

... где я создал наборы из трех файлов в каждом подкаталоге в указанной последовательности; Я ожидаю увидеть их в том же порядке при выполнении функции. Имя первого файла в каталоге dir3 содержит новую строку, представленную treeс \012. Результаты:

Демонстрация поведения по умолчанию -- -текущего -каталога:

$ zeio./myprog
Arg: ->./myprog<-
Arg: ->./go.sh<-

Демонстрация нормального имени файла

$ zeio./myprog dir1
Arg: ->dir1/203142<-
Arg: ->dir1/203143<-
Arg: ->dir1/203144<-

В каталоге есть пробел

$ zeio./myprog "dir two"
Arg: ->dir two/203225<-
Arg: ->dir two/203226<-
Arg: ->dir two/203227<-

в именах файлов есть пробелы

$ zeio./myprog dir3
Arg: ->dir3/first
filename<-
Arg: ->dir3/this is second<-
Arg: ->dir3/this is 3rd<-

0
04.10.2020, 15:04
1 ответ

Не решение, но я нашел объяснение проблемы и обходной путь здесь:Проблема возникает только после загрузки в Linux после повторного -запуска в Windows 10. Похоже, что Windows перевести динамики в спящий режим, из которого Linux не может их правильно разбудить. Обходной путь — полностью закрыть Windows и загрузиться в Linux.

0
07.09.2021, 21:13

Теги

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