我确定它相对简单,我只是不知道该怎么做。
#!/usr/bin/ksh
set `iostat`
myvar=6
Run Code Online (Sandbox Code Playgroud)
我想要类似的东西echo ${$myvar},我想解释为${$myvar}-> ${6}->value
在那个问题中,有人想要所有 USB 设备的黑名单,然后只允许特定设备。
在这个问题中,我们希望接受所有 USB 设备,但阻止驱动程序(例如cdc_acm)采用一种特定的设备类型——例如,不应采用闪存模式下的LEGO® NXT 积木(因为fwflash需要对设备进行原始访问) ,但驱动程序仍应访问 Arduino 板以/dev/ttyACM0在访问 NXT 和 Arduino 硬件的教育环境中进行生产。
对于给定的顶级目录,如何发现其中安装了哪些 \xe2\x80\x9creal\xe2\x80\x9d 文件系统,以及来自哪些设备(可能包括 UUID 或 LABEL,但必须使用 /dev/something LVM)?
\n背景是从 debootstrap 之后运行的脚本自动生成 fstab(5);主机操作系统是 GNU/Linux(我认为并非我在子例程中使用的所有内容都是 GNU/kFreeBSD\xe2\x80\x91 或 GNU/Hurd 安全的)。
\n到目前为止我发现的最接近的东西是,findmnt -l --real但这仍然显示绑定安装,对于我的用例来说,这是\xe2\x80\x99t \xe2\x80\x9creal不够\xe2\x80\x9d,我需要块设备支持的挂载点。(这可能包括环形安装座。)
我正在写一些处理文件匹配的东西,我需要一个反转操作。我有一个文件列表(例如 from find . -type f -print0 | sort -z >lst)和一个匹配列表(例如 from grep -z foo lst >matches– 请注意,这只是一个示例;matches可以是任何任意子集(包括空的或完整的)或lst),现在我想反转这个列表.
背景:我正在实现类似于find(1) 之类的东西,除了文件列表(尽管文件在调用时确实存在于文件系统中,但该列表可能已被预先过滤)。如果文件列表可能没有那么大,我可以使用find "${files[@]}" -maxdepth 0 -somecondition -print0,但即使适度使用我正在编写的内容也会超出 Linux 或 BSDargv大小限制。
如果这些行不是 NUL 分隔的,我可以使用comm -23 lst matches >inverted. 如果匹配不是 NUL 分隔的,我可以使用grep -Fvxzf matches lst. 但是,从我在第一段中提到的生成器来看,两者都是。
假设GNU工具安装,所以这种需求无法移植超越例如Debian的,因为我使用find -print0,sort -z和朋友已经(虽然有些BSD系统有它,所以如果能在“更轻便”来完成,我不会抱怨) .
我正在尝试在这里进行代码重用;另外,comm -23除了它不支持更改输入行分隔符(尚)之外,它基本上已经是一个完美的工具,而且comm无论如何都是一个被低估且不够知名的工具。如果 Unix/Linux 工具箱没有提供任何合理的东西,我可能会comm -23在 shell 中重新实现一种形式(简化为这个用例),因为脚本已经(出于其他原因)需要一个恰好支持的 shell …