Вывод ls
опасен в командных строках. Я предлагаю использовать для этой цели find
в сценарии оболочки.
find -printf
описаны в man find
. grep
, а статус выхода сохраняется в norootfile
. numfile
(количестве найденных файлов ). -v
'verbose', чтобы получить более подробную информацию в выводе сценария оболочки. Если вы хотите найти также скрытые файлы, используйте find.
вместоfind *
Если вы не хотите искать в подкаталогах, используйте -maxdepth 1
в командной строке поиска.
#!/bin/bash
if [ "$1" == "-h" ]
then
echo "Usage: $0 -h # this help text"
echo " $0 -v # verbose output"
exit
fi
tmpfil=$(mktemp)
find * -xtype f -printf "%u:%g %p\n" | tee "$tmpfil" | grep -v '^root:root' > /dev/null
norootsfile=$?
numfile=$(wc -l "$tmpfil")
#cat "$tmpfil"
if [ ${numfile%% *} -eq 0 ]
then
echo "No file found; check the current directory"
elif [ $norootsfile -eq 0 ]
then
echo "Fail"
if [ "$1" == "-v" ]
then
echo "----- Found some file(s) not owned or grouped by root"
echo "user:group file-name --------------------------------"
grep -v '^root:root' "$tmpfil"
fi
else
echo "Pass"
if [ "$1" == "-v" ]
then
echo "----- Found only files owned or grouped by root"
fi
fi
rm "$tmpfil"
Я обнаружил, что модуль скрытый имеет параметр игнорировать _специальные _драйверы , который делает именно это, игнорирует все специализированные драйверы и использует скрытый -универсальный для работы с устройством.
Поскольку модуль hid -Sony не поддерживает должным образом мой аркадный джойстик-клон PS3, добавление параметра в модуль hid решает проблему.
$ sudo vi /etc/modprobe.d/hid.conf
options hid ignore_special_drivers=1
$ sudo update-initramfs -u
$ reboot
$ tail /var/log/kern.log
ubuntu kernel: [ 119.966133] usb 1-8: new full-speed USB device number 5 using xhci_hcd
ubuntu kernel: [ 120.299429] usb 1-8: New USB device found, idVendor=054c, idProduct=0268, bcdDevice= 1.00
ubuntu kernel: [ 120.299433] usb 1-8: New USB device strings: Mfr=0, Product=2, SerialNumber=0
ubuntu kernel: [ 120.299435] usb 1-8: Product: USB Controller
ubuntu kernel: [ 120.333900] input: USB Controller as /devices/pci0000:00/0000:00:01.2/0000:15:00.0/usb1/1-8/1-8:1.0/0003:054C:0268.0004/input/input18
ubuntu kernel: [ 120.334403] hid-generic 0003:054C:0268.0004: input,hidraw3: USB HID v1.11 Joystick [USB Controller] on usb-0000:15:00.0-8/input0
ubuntu kernel: [ 120.459845] usb 1-8: USB disconnect, device number 5
ubuntu kernel: [ 121.434688] usb 1-8: new full-speed USB device number 6 using xhci_hcd
ubuntu kernel: [ 121.765665] usb 1-8: New USB device found, idVendor=1345, idProduct=3008, bcdDevice= 1.00
ubuntu kernel: [ 121.765669] usb 1-8: New USB device strings: Mfr=0, Product=2, SerialNumber=0
ubuntu kernel: [ 121.765671] usb 1-8: Product: USB Controller
ubuntu kernel: [ 121.791046] input: USB Controller as /devices/pci0000:00/0000:00:01.2/0000:15:00.0/usb1/1-8/1-8:1.0/0003:1345:3008.0005/input/input19
ubuntu kernel: [ 121.851274] hid-generic 0003:1345:3008.0005: input,hidraw3: USB HID v1.10 Gamepad [USB Controller] on usb-0000:15:00.0-8/input0
Тем не менее, я бы предпочел решение, позволяющее игнорировать специальный драйвер только для конкретной комбинации VendorID/ProductID, если у меня есть оригинальный игровой контроллер Sony и я хочу использовать оба.