zsh:检查 $PWD 是否在 tmpfs 挂载的文件系统上

zsh:检查 $PWD 是否在 tmpfs 挂载的文件系统上

如果当前位于已安装的文件系统上,我想更改zsh提示颜色。$PWDtmpfs

举例来说,/dev/shm是一个tmpfs文件系统。我可以确认:

$ grep /dev/shm /proc/mounts 
tmpfs /dev/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=26307700k 0 0

所以,当我在时/dev/shm,我可以这样做:

grep -q "^tmpfs $PWD tmpfs " /proc/mounts

/dev/shm/foo但如果我站在、 或/dev/shm/foo/bar等位置,那就行不通了。

如何检查是否$PWDtmpfs文件系统上?

答案1

在 Linux 上,您应该能够执行以下操作:

findmnt -no FSTYPE .

返回文件系统的类型.

GNU 实现stat(不是stat内置 zsh)也可以通过以下方式实现:

command stat -fc %T .

$psvar因此,您可以将该信息缓存在挂钩的元素中chpwd

check_cwd_is_tmpfs() {
  if [[ $(command stat -fc %T .) = tmpfs ]]; then
    psvar[1]=red
  else
    psvar[1]=green
  fi
}
chpwd_functions+=(check_cwd_is_tmpfs)
check_cwd_is_tmpfs

PS1='%F{%1v}%~%F$ '

相关内容