以下非常不可靠的 shell 代码将给出 的挂载点$path
:
(for i in $(df|cut -c 63-99); do case $path in $i*) echo $i;; 经社理事会;完成)| 尾-n 1
有没有更好的方法在 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 解决了这个问题,但即使 awk 也是不可移植的,考虑到结果格式化各种 df 返回实现的范围。
答案 看起来修改表格输出是 shell 中的唯一方法,但是
df -P "$path" | 尾-1 | awk '{ 打印 $NF}'
基于ghostdog74的回答,是对我所拥有的一个很大的改进。注意两个新问题:首先,df $path
坚持$path
命名现有文件,我上面的脚本并不关心;其次,不用担心取消引用符号链接。如果您的挂载点中有空格,这将不起作用,如果一个可移动媒体的卷名中有空格,则会发生这种情况。
编写 Python 代码来正确完成这项工作并不难。