【发布时间】:2011-01-11 04:09:14
【问题描述】:
以下非常不可靠的 shell 代码将给出$path 的挂载点:
有没有更好的方法在 shell 中做到这一点?
后记
这个脚本真的很糟糕,但它具有可在我的系统上运行的可取之处。请注意,几个挂载点可能是$path 的前缀。
示例 在 Linux 系统上:
cas@txtproof:~$ path=/sys/block/hda1 cas@txtproof:~$ for i in $(df -a|cut -c 57-99); do case $path in $i*) echo $i;;经社理事会;完成|尾-1 /系统在 Mac OSX 系统上
cas local$ path=/dev/fd/0 cas local$ for i in $(df -a|cut -c 63-99); do case $path in $i*) echo $i;;经社理事会;完成|尾-1 /dev注意需要改变 cut 的参数,因为 df 的输出方式不同;使用 awk 可以解决这个问题,但考虑到 df return 的各种实现的结果格式化范围,即使 awk 也是不可移植的。
回答 看起来修改表格输出是 shell 中的唯一方法,但是
df -P "$path" |尾-1 | awk '{ 打印 $NF}'根据 ghostdog74 的回答,对我所拥有的东西有很大的改进。注意两个新问题:首先,df $path 坚持 $path 命名一个现有文件,我上面的脚本并不关心;其次,不用担心取消引用符号链接。如果您的挂载点中有空格,这将不起作用,如果一个可移动媒体的卷名中有空格,则会发生这种情况。
编写 Python 代码来正确完成这项工作并不难。
【问题讨论】:
-
查看我对
df "$path"命令版本的回答,该版本在设备或安装点中有空格时有效。 -
参见。 unix.stackexchange.com/questions/149660/…,特定于 Linux。
标签: linux bash shell path mount