我使用mount来显示挂载驱动器,我不想看到那些不太有趣的驱动器(即非物理驱动器)。所以我以前有一个脚本mnt:
mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts) '在Ubuntu8.04下,只向我展示了ext3和reiserfs挂载点。该行实际上被注释掉,现在我使用(用于Ubuntu12.04):
mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts|debugfs|rpc_pipefs|nfsd|securityfs|fusectl|devtmpfs) '只显示我的ext4和zfs分区(我使用了reiserfs)。
现在我正在为Ubuntu14.04做准备,必须再次扩展脚本(cgroup,pstore)。有没有更好的方法来做到这一点,而不必扩展脚本?我只对挂载和挂载网络驱动器(nfs,cifs)的物理光盘感兴趣。
发布于 2015-01-02 12:35:03
不要使用mount。
来自man mount:
findmnt(8),特别是在您的脚本中。如文档所示,使用findmnt。下面是findmnt --help描述的一些有趣的选项:
-i或--invert -R或--submounts -t或--typeslist 这只是您可以在命令行上应用的许多过滤器中的几个。
man findmntfindmnt --fstab -t nfs/etc/fstab中定义的所有NFS文件系统。findmnt --fstab /mnt/foo/etc/fstab的所有/mnt/foo文件系统。它还打印--bind挂载,其中/mnt/foo是源。你可以使用:
findmnt -it sysfs,cgroup,proc,devtmpfs,devpts,pstore,debugfs,hugetlbfs,mqueue,configfs我相信这会过滤掉所有的伪文件系统。
不过,您也可以对mount做同样的操作:
mount -t nosysfs,nodevtmpfs...可能更好的方法可能是使用以下命令之一,findmnt --help对此进行了说明:
findmnt -D或findmnt --df df(1)的输出。此选项等效于-o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET,但不包括所有伪文件系统。使用--all打印所有文件系统。可以将列表字段添加到findmnt -Do+field,+field的默认值中.您可以仅使用-D将显示的文件系统来指定您自己的字段列表,方法是省略+ (如findmnt -Dofield,field )。
发布于 2015-01-02 09:21:59
不如:
mount | grep '^/[^/]'与物理磁盘相关的挂载点总是以/开始,因为第一个字段是设备的路径。cifs挂载将以//开始,因此使用第二个/排除行以忽略它们。
我误解了这个问题,我以为你想把cifs和nfs排除在外。试一试:
mount | grep -E '^[^ ]*[/:]'发布于 2021-02-19 02:01:15
结合这里的几个答案(并稍微扩展一下),以下是对我最有效的方法:
df -h | grep -P '^(F|/|[\w@.-]+:/)'我是怎么到这里来的
findmnt -D是近在咫尺的,但它仍然包含许多我不想看到的tmpfs系统。df -h的时候,为什么不直接运行呢?布局更好一些,唯一丢失的是FSTYPE列,我个人并不错过。(如有此情况,见下文。)grep -E替换为grep -P,这允许我用更紧凑的\w替换更冗长的[:alnum:]。.字符在一个字符类中时,没有必要转义它。@ (实际上我在计算机上有一个示例)。F添加到替换中,我保留了标题行;这是一个精确的,但仍然方便。--color=never (因为我不使用aliased grep),但是如果您需要它,您可以将它添加到系统中。如果您确实需要查看FSTYPE列,您可以很容易地将此方法调整为findmnt,如下所示:
findmnt -D | grep -P '^(S|/|[\w@.-]+:/)'请注意,在grep方面唯一真正的区别是,您必须将F替换为S,因为df's标题行以Filesystem开头,findmnt's以SOURCE开头。
https://unix.stackexchange.com/questions/177014
复制相似问题