Первоначально, эти tar
команда была предназначена для использования с устройствами магнитной ленты. Так как только имело смысл выполняться tar
на одном устройстве за один раз, синтаксис был разработан для принятия одного и только одного устройства. Первый файл или каталог передал, как, предполагалось, был устройством, которое содержало рассматриваемый архив и любые другие файлы или каталоги где содержание архива, который будет включен в операцию. Таким образом для tar
извлечение (x
опция), первый файл передал, будет архив, и все другие файлы были бы файлами, которые будут извлечены. Таким образом, если бы существует два *.tar
файлы (скажите a.tar
и b.tar
), Ваша команда расширилась бы до:
$ tar xf a.tar b.tar
, Если a.tar
не содержит файл, названный b.tar
, эти tar
, команда нечего делать и выходит бесшумно. Раздражающе, версия Соляриса [1 116] не сообщает ни о каких проблемах или в коде возврата или с подробной опцией (v
). Между тем, GNU tar
возвраты 2
и сообщения со спамом STDERR
даже с подробной опцией прочь:
tar: b.tar: Not found in archive
tar: Exiting with failure status due to previous errors
Это - слишком последняя перезапись tar
для принятия нескольких архивных файлов как вход, но не слишком трудно работать вокруг ограничения.
Для большинства людей, работая tar
многократно за несколькими архивами самая целесообразная опция. Передача всего одного имени файла к [1 123] извлечет все заархивированные файлы, как можно было бы ожидать. Один подход должен использовать оболочку for
цикл:
$ for f in *.tar; do tar xf "$f"; done
Другой метод должен использовать xargs
:
$ ls *.tar | xargs -i tar xf {}
, С другой стороны, можно использовать один из многих альтернатива tar
средства чтения файлов . Наконец, действительно преданный программист мог легко записать tar
замена, которая работает точно, как желаемый. формат прост, и много языков программирования имеют библиотеки в наличии для чтения tar
файлы. Если Вы - программист Perl, например, смотрите на Archive::Tar
модуль.
, Вслепую несмолить набор файлов может вызвать неожиданные проблемы. Самое очевидное - то, что конкретное имя файла может быть включено больше чем в один tar
файл. С тех пор tar
файлы перезаписей по умолчанию, точная версия файла, с которым Вы заканчиваете, будет зависеть от порядка, архивы обрабатываются. Больше беспокойства, можно закончить с поврежденной копией файла при попытке этой "умной" оптимизации:
for f in *.tar; do
tar xf "$f" &
done
wait
, Если и a.tar
и b.tar
содержат тот же файл и попытку извлечь его одновременно, результаты непредсказуемы.
А связанной проблемой, особенно при взятии архивов из недоверяемого источника, является возможность tarbomb.
Одно частичное решение состояло бы в том, чтобы автоматически создать новый каталог для извлечения в:
for f in *.tar; do
d=`basename "$f" .tar`
mkdir "$d"
(cd "$d" && tar xf "../$f")
done
Это не поможет, если файл будет определен в архиве с полным путем (который обычно является знаком злонамеренного намерения). Добавление такой проверки оставляют как осуществление для читателя.
Стек Bluez в Linux - это реализация с открытым исходным кодом. Он также доступен в Windows, но в Linux API гораздо более полный.
Когда вы говорите «включить Bluetooth всегда», вы имеете в виду, что всегда пытаетесь обнаруживать другие устройства?
Большинство чипов Bluetooth имеют глубокую спящий режим, при котором микросхема в основном не работает и просто появляется, чтобы проверить активность на любых установленных ссылках.
BlueCove - это реализация Bluetooth с открытым исходным кодом для Java.
Он работает на множестве разных машин, и если все верно, то где-то скрывается версия, совместимая с Android.
Включение Bluetooth всегда может быть не лучшим решением, если ваша единственная забота - долгое время. задержка обнаружения ("время автономной работы").
Что касается сторонних API-интерфейсов Bluetooth, единственное, о чем я слышал, это iAnywhere Blue SDK (от Sybase, не бесплатно, только для оценки доступная версия), который охватывает некоторые функции, которые будут поддерживаться в будущем пакетами system / bluetooth и bluez .
Согласно Android Bluetooth дорожная карта , большинство из долгожданных вещей, таких как Java API, Bluetooth 2.