gpt4 book ai didi

linux - 给出一个路径的挂载点

转载 作者:IT王子 更新时间:2023-10-29 00:26:00 26 4
gpt4 key购买 nike

以下非常不可靠的 shell 代码将给出 $path 的挂载点:

 (for i in $(df|cut -c 63-99); do case $path in $i*) echo $i;; esac; done) | tail -n 1

在 shell 中有更好的方法吗?

后记

这个脚本真的很糟糕,但具有在我的系统上运行的可取之处。请注意,多个挂载点可能是 $path 的前缀。

例子在 Linux 系统上:

cas@txtproof:~$ path=/sys/block/hda1cas@txtproof:~$ for i in $(df -a|cut -c 57-99); do case $path in $i*) echo $i;; esac; done| tail -1/sys

在 Mac OSX 系统上

cas local$ path=/dev/fd/0cas local$ for i in $(df -a|cut -c 63-99); do case $path in $i*) echo $i;; esac; done| tail -1/dev

注意需要改变 cut 的参数,因为 df 的输出方式不同;使用 awk 解决了这个问题,但即使是 awk 也是不可移植的,因为 df 返回的各种实现格式化结果的范围。

回答看起来 munging 表格输出是 shell 中的唯一方法,但是

df -P "$path"  | tail -1 | awk '{ print $NF}'

根据 ghostdog74 的回答,这是对我的一个很大的改进。注意两个新问题:首先,df $path 坚持 $path 命名一个现有文件,我上面的脚本不关心;其次,不用担心取消引用符号链接(symbolic link)。如果您的挂载点中有空格,这将不起作用,如果可移动媒体的卷名中有空格,则会发生这种情况。

编写 Python 代码来正确完成这项工作并不困难。

最佳答案

df 将路径作为参数,所以像这样的东西应该相当健壮;

df "$path" | tail -1 | awk '{ print $6 }'

关于linux - 给出一个路径的挂载点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com