我编写了一个简单的 udev 规则来命名我的 USB 设备:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", SYMLINK+="ttyUSB-ZStick-5G"
udev 提供了在某些事件上运行自定义脚本的方法(参考:
KERNEL=="sdb", RUN+="/usr/bin/my_program"
但是,我希望上述解决方案只是打印一些将显示在dmesg
.这并不复杂,不需要单独的脚本。
以下是我理想中希望能完成的工作:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", SYMLINK+="ttyUSB-ZStick-5G", RUN+="echo 'Made symlink: ttyUSB-ZStick-5G' > /dev/kmsg"
关于如何做到这一点的想法?
答案1
作为手动的解释:
程序名称和后面的参数用空格分隔。单引号可用于指定带有空格的参数。
传递给的字符串RUN
不会被送入 shell。它只是通过粗略的引用机制在空白处进行分割。如果要执行重定向,则需要调用 shell。
… RUN+="sh -c 'echo Made symlink: ttyUSB-ZStick-5G > /dev/kmsg'"
调用脚本会更清晰。