xtrace
вывод переходит к stderr, таким образом, Вы могли перенаправить stderr
кому: /dev/null
:
i_know_what_this_does() {
echo do stuff
} 2> /dev/null
Если Вы все еще хотите видеть ошибки от команд, выполненных в функциях, Вы могли сделать
i_know_what_this_does() (
{ set +x; } 2> /dev/null # silently disable xtrace
echo do stuff
)
Отметьте использование (...)
вместо {...}
обеспечить локальный объем для той функции через подоболочку. bash
, так как версия 4.4 теперь поддерживает local -
как в Almquist окружают для создания опций локальными для функции (подобный set -o localoptions
в zsh
), таким образом, Вы могли избежать подоболочки путем выполнения:
i_know_what_this_does() {
{ local -; set +x; } 2> /dev/null # silently disable xtrace
echo do stuff
}
Альтернатива для bash
4.0 к 4,3 должен был бы использовать $BASH_XTRACEFD
переменная и имеет специализированный дескриптор файла, открытый на /dev/null
для этого:
exec 9> /dev/null
set -x
i_know_what_this_does() {
{ local BASH_XTRACEFD=9; } 2> /dev/null # silently disable xtrace
echo do stuff
}
С тех пор bash
испытывает недостаток в способности отметить fd с флагом замыкаться-должностного-лица, который имеет побочный эффект утечки этого fd к другим командам все же.
См. также этот locvar.sh, который содержит несколько функций для реализации локального объема для переменных и функций в сценариях POSIX и также обеспечивает trace_fn
и untrace_fn
функции для создания их xtraced или нет.
Первая вещь попробовать, удостоверяются, что устройство обнаруживается при включении.
У меня есть гарнитура Logitech.
$ lsusb
Bus 002 Device 006: ID 046d:0a01 Logitech, Inc. USB Headset
Bus 002 Device 005: ID 046d:c521 Logitech, Inc. Cordless Mouse Receiver
Bus 002 Device 004: ID 17ef:1003 Lenovo Integrated Smart Card Reader
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Можно узнать больше об этом путем включения -v
переключатель к lsusb
.
$ lsusb -v | less
Bus 002 Device 006: ID 046d:0a01 Logitech, Inc. USB Headset
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x046d Logitech, Inc.
idProduct 0x0a01 USB Headset
bcdDevice 10.13
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 318
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
...
Затем проверьте, что аппаратные средства обнаруживаются как обнаруживаемый правильно через dmesg
вывод.
$ dmesg
...
[237717.191322] usb 2-1.1: USB disconnect, address 3
[237717.387495] usb 2-1.1: new low speed USB device using ehci_hcd and address 5
[237717.482484] usb 2-1.1: New USB device found, idVendor=046d, idProduct=c521
[237717.482487] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[237717.482489] usb 2-1.1: Product: USB Receiver
[237717.482491] usb 2-1.1: Manufacturer: Logitech
[237717.488818] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/input/input10
[237717.488955] generic-usb 0003:046D:C521.0003: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-0000:00:1d.0-1.1/input0
[237717.495771] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.1/input/input11
[237717.495984] generic-usb 0003:046D:C521.0004: input,hiddev96,hidraw1: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:1d.0-1.1/input1
[240126.944155] usb 2-1.2: new full speed USB device using ehci_hcd and address 6
[240127.034731] usb 2-1.2: New USB device found, idVendor=046d, idProduct=0a01
[240127.034735] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[240127.034738] usb 2-1.2: Product: Logitech USB Headset
[240127.034740] usb 2-1.2: Manufacturer: Logitech
[240127.232622] usbcore: registered new interface driver snd-usb-audio
Под апплетом динамика в GNOME можно получить доступ к звуковым предпочтениям системы. Удостоверьтесь, что динамики выбраны как активное устройство вывода.
pacmd "list-sinks"
. После того, как определенный можно использовать команду как это для установки вывода:pacmd "set-default-sink alsa_output.usb-Logitech_Logitech_USB_Headset-00-Headset.analog-stereo"
. оценка – slm♦ 29.11.2013, 23:39