#!/bin/ksh # set the video device via argument (if you put something stupid her, so be it...) [ ! -z $1 ] && doas ln -sf /dev/video$1 /dev/video # we need it a few times, and caching is faster DUMP=$(dmesg) # save the current active video device _cur=$(ls -l /dev/video | sed 's/.*\(.$\)/\1/') # starting from dev 4, you need to cd /dev && sh MAKEDEV videoX for i in 0 1 2 3 4 5 6 do # find video attach and detach lines _input="$(echo "$DUMP" | grep -E "^video$i\ at.*|^video$i detached" | tail -n 1)" # if the last match is a detached line, stop here echo "$_input" | grep -q "detached" && continue # take the number from videoX, then grep for what's attached to find # the last description for this device (usb devices may change order # during runtime) _type=$(echo "$_input" | cut -d" " -f3) _number=$(echo "$_input" | cut -d" " -f1 | sed 's/[a-z]//g') _desc=$(echo "$DUMP" | grep -E "^$_type at.*" | tail -1 | cut -d'"' -f2) # Once we walked to the first non-existing device, we stop. [ -z $_number ] && exit 0 # Show the device list and mark the current one if [ $_cur -eq $_number ] then echo "> $_number: $_desc" else echo " $_number: $_desc" fi done