Если это может кому-то помочь, то после практического использования всего описанного выше в моем ubuntu 16.04, наконец, это было так просто, как подключиться через " Приложение Bose Connect »(в моем случае для Android).Я использовал для этого blueman и, наконец, смог соединить гарнитуры.
В моем случае у меня bluez 5.37v, blueman 2.0.4, и, наконец, мне не нужно было вносить какие-либо изменения в /etc/bluetooth/main.conf по умолчанию, с установленным по умолчанию "ControllerMode" на дуал сработало.
Для меня сработали следующие шаги:
1.- Откройте приложение и выберите вариант подключения нового устройства или аналогичного. (Я не помню точно название) 2.- В blueman найдите новое устройство. 3.- Как только гарнитуры были найдены, я смог без проблем соединить их и выберите рабочий режим.
Без первого шага я не смог бы их соединить.
Я много раз искал, как это делать, но как только ты знаешь, как это делать, делать это довольно легко.
С помощью zsh
вы можете использовать его возможность приблизительного сопоставления:
approx-cat() {
emulate -L zsh
setopt extendedglob nullglob
local err files
for ((err = 0; err <= $1; err++)); do
files=((#a$err)$2)
case $#files in
(1) cat -- $files; return;;
(0) ;;
(*) echo >&2 "$#files found at error count $err:"
printf >&2 ' "%s"\n' $files
return 1;;
esac
done
return 1
}
И позвоните как:
approx-cat 3 'directory/file with spaces'
Чтобы разрешить до 3 ошибки в имени файла.
Пример:
$ approx-cat 3 /ebc/passwds
2 found at error count 2:
"/etc/passwd"
"/etc/passwd-"
$ approx-cat 3 /ebc/Issue
Debian GNU/Linux stretch/sid \n \l
Преобразуйте имена объединенных файлов в шаблоны, соответствующие оригинальным файлам.
#!/bin/bash
shopt -s nullglob extglob
IFS=$'\n'
while read -r filename; do
pattern=${filename//\\/\\\\}
pattern=${pattern//\[/\\\[}
pattern=${pattern//\(/\\\(}
pattern=${pattern//\*/\\\*}
pattern=${pattern//\?/\\\?}
pattern=${pattern//_/'[ _]'}
matches=($pattern@())
case ${#matches[@]} in
0) echo "No match for $filename";;
1) echo "$filename found as ${matches[0]}";;
*) echo "$filename matches ${#matches[@]} files";;
esac
done <inputfile
Подход, который я бы использовал, состоит в том, чтобы взять выходные данные ls, настроить массив, отображающий преобразованное имя обратно в исходное имя, а затем обработать каждую строку входного файла. Если входные данные находятся в массиве, выведите значение массива, в противном случае добавьте строку ввода в отсутствующий файл
. Например, поместите это в файл, перейдите в каталог
и запустите его с входным файлом
в качестве параметра
#!/usr/bin/awk
# set up an array t of translations
BEGIN {
while (("ls" | getline )>0) {
k=$0
gsub(/ /,"_")
if ($0 in t) {
print "$0 matches more than one file" > /dev/stderr
exit(2)
}
t[$0]=k
}
close("ls")
}
{ if ($0 in t) {
print t[$0]
} else {
print $0 > "../missing"
}
}